MCP tools reference

Teachers Pay Teachers MCP tools

14 tools for Teachers Pay Teachers on the Cotlet MCP server. Your agent picks them from tools/list.

MCP server
https://cotlet.dev/mcp/v1
Connects with
Your own TPT Seller account
Integration page
Teachers Pay Teachers
Teachers Pay Teachers Endpoints
Endpoint Access Description
teachers-pay-teachers_list_products read Your product listings with title, type, price, status and custom category.
teachers-pay-teachers_get_product read Full listing: title, description, price, additional license price, grades, subjects, tags, formats and files.
teachers-pay-teachers_get_store_stats read Seller Dashboard totals: earnings, units sold, carts, unique buyers, views and conversions.
teachers-pay-teachers_get_product_stats read Per product: earnings, units sold, views, conversion, Wish Listed and Saved for Later.
teachers-pay-teachers_list_sales read Sales Details from your Sales Reports, one line per item sold, with earnings and sales tax.
teachers-pay-teachers_get_search_keywords read Search Analytics: TPT search keywords that led buyers to your products, with visits, conversions and earnings.
teachers-pay-teachers_list_buyer_questions read Questions from the Q&A section of your store, newest first, with product and any answer.
teachers-pay-teachers_create_product write New Digital Download listing from a file. Inactive by default; an active listing is live for buyers right away.
teachers-pay-teachers_update_product write Change title, description, price, additional license price, grades, subjects or tags of a listing.
teachers-pay-teachers_set_product_status write Make a listing active or inactive. Past buyers keep their downloads.
teachers-pay-teachers_upload_revised_file write Replace the product file and optionally notify past buyers with a note on what changed.
teachers-pay-teachers_answer_buyer_question write Post a public answer to a question on your product page.
teachers-pay-teachers_schedule_sale write Throw a sale on chosen products or your whole store for set dates.
teachers-pay-teachers_send_note_to_followers write Weekly Note to Followers about new products or promotions, sent now or on a set date.

MCP tool teachers-pay-teachers_list_products

Lists your listings with title, type, price, status and custom category. Filter by status, type or custom category to find a group of products. Pages hold up to 100 products; pass next_cursor back as cursor for the next page.

Parameters

Parameters: list_products
NameTypeDescription
status enum active, inactive or all. Default: all.
type enum digital_download, bundle, video, google_resource or all. Default: all.
custom_category string Only products in this store custom category.
limit integer 1 to 100. Default: 50.
cursor string Next page cursor from the previous call.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_list_products",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "products": [
      {
        "product_id": "11204567",
        "title": "Fraction Task Cards, Grades 3-4",
        "type": "digital_download",
        "price_cents": 600,
        "status": "active",
        "custom_category": "Fractions"
      },
      {
        "product_id": "9873310",
        "title": "Fractions Bundle",
        "type": "bundle",
        "price_cents": 900,
        "status": "active",
        "custom_category": "Fractions"
      }
    ],
    "next_cursor": null
  },
  "isError": false
}

MCP tool teachers-pay-teachers_get_product

Returns one listing in full: description, price, additional license price, grades, subjects, tags, formats and files. Use it before answering a buyer question or rewriting a title, so your agent works from the real listing.

Parameters

Parameters: get_product
NameTypeDescription
product_id required string Product ID from list_products.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_get_product",
    "arguments": {
      "product_id": "product_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "product_id": "11204567",
    "title": "Fraction Task Cards, Grades 3-4",
    "description": "20 printable task cards on comparing and adding fractions, with answer keys.",
    "price_cents": 600,
    "additional_license_price_cents": 300,
    "grades": [
      "3rd",
      "4th"
    ],
    "subjects": [
      "Fractions"
    ],
    "tags": [
      "Task Cards"
    ],
    "formats": [
      "PDF"
    ],
    "status": "active"
  },
  "isError": false
}

MCP tool teachers-pay-teachers_get_store_stats

Returns the Seller Dashboard totals for a period: earnings, units sold, carts, unique buyers, views and conversions. Set buyer_type to compare first-time and repeat buyers, or product_ids to look at part of the store. Earnings are in US cents.

Parameters

Parameters: get_store_stats
NameTypeDescription
from required date First day of the period.
to required date Last day of the period.
buyer_type enum all, first_time or repeat. Default: all.
product_ids string[] Only these products. Default: whole store.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_get_store_stats",
    "arguments": {
      "from": "2026-10-01",
      "to": "2026-10-01"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "from": "2026-10-05",
    "to": "2026-10-11",
    "buyer_type": "all",
    "earnings_cents": 41235,
    "units_sold": 74,
    "carts": 91,
    "unique_buyers": 58,
    "views": 3120,
    "conversion": 0.024
  },
  "isError": false
}

MCP tool teachers-pay-teachers_get_product_stats

Returns the numbers of one product for a period: earnings, units sold, views, conversion, Wish Listed and Saved for Later. Call it for each product from list_products to rank them.

Parameters

Parameters: get_product_stats
NameTypeDescription
product_id required string Product ID from list_products.
from required date First day of the period.
to required date Last day of the period.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_get_product_stats",
    "arguments": {
      "product_id": "product_8c41d2",
      "from": "2026-10-01",
      "to": "2026-10-01"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "product_id": "11204567",
    "from": "2026-10-05",
    "to": "2026-10-11",
    "earnings_cents": 7200,
    "units_sold": 12,
    "views": 410,
    "conversion": 0.029,
    "wish_listed": 5,
    "saved_for_later": 9
  },
  "isError": false
}

List sales

read

MCP tool teachers-pay-teachers_list_sales

Returns Sales Details from your Sales Reports, one line per item sold, with earnings and sales tax. Filter by product to see the sales of one listing. Pass next_cursor back as cursor for the next page.

Parameters

Parameters: list_sales
NameTypeDescription
from required date First day of the period.
to required date Last day of the period.
product_id string Only sales of this product.
cursor string Next page cursor from the previous call.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_list_sales",
    "arguments": {
      "from": "2026-10-01",
      "to": "2026-10-01"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "sales": [
      {
        "date": "2026-10-09",
        "product_id": "11204567",
        "title": "Fraction Task Cards, Grades 3-4",
        "earnings_cents": 510,
        "sales_tax_cents": 0
      },
      {
        "date": "2026-10-09",
        "product_id": "9873310",
        "title": "Fractions Bundle",
        "earnings_cents": 765,
        "sales_tax_cents": 0
      }
    ],
    "next_cursor": null
  },
  "isError": false
}

MCP tool teachers-pay-teachers_get_search_keywords

Returns the TPT search keywords that led buyers to your products, with visits, conversions and earnings. Search Analytics starts on 1 Jan 2025. Pass product_id to see the keywords of one listing.

Parameters

Parameters: get_search_keywords
NameTypeDescription
from required date First day of the period, 1 Jan 2025 or later.
to required date Last day of the period.
product_id string One product only. Default: whole store.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_get_search_keywords",
    "arguments": {
      "from": "2026-07-01",
      "to": "2026-09-30",
      "product_id": "11204567"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "keywords": [
      {
        "keyword": "fraction task cards",
        "visits": 214,
        "conversions": 9,
        "earnings_cents": 5400
      },
      {
        "keyword": "fractions 4th grade",
        "visits": 167,
        "conversions": 6,
        "earnings_cents": 3600
      }
    ]
  },
  "isError": false
}

MCP tool teachers-pay-teachers_list_buyer_questions

Lists questions from the Q&A section of your store, newest first, each with its product and any answer you already gave. Set unanswered_only to see what needs a reply. Pass question_id to answer_buyer_question.

Parameters

Parameters: list_buyer_questions
NameTypeDescription
unanswered_only boolean Skip questions you already answered. Default: false.
limit integer 1 to 100. Default: 50.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_list_buyer_questions",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "questions": [
      {
        "question_id": "q_5821",
        "product_id": "11204567",
        "question": "Does this include answer keys?",
        "asked_at": "2026-10-10T14:20:00Z",
        "answer": null
      }
    ]
  },
  "isError": false
}

Create product

write Confirm

MCP tool teachers-pay-teachers_create_product

Creates a Digital Download listing from the URL of a PDF or ZIP. The listing is inactive unless active is true, and an active listing is live for buyers right away. Price is in US cents. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: create_product
NameTypeDescription
title required string Product title.
description required string Product description.
file_url required string URL of the PDF or ZIP buyers download.
price_cents required integer Price in US cents, e.g. 600 for $6. 0 for a free resource.
grades required string[] TPT grade levels, e.g. "1st", "2nd".
subjects required string[] TPT subjects, e.g. "Fractions".
tags string[] Resource type tags, e.g. "Centers".
preview_url string URL of a PDF preview.
active boolean Make Listing Active now. Default: false.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_create_product",
    "arguments": {
      "title": "title",
      "description": "description",
      "file_url": "https://example.com",
      "price_cents": 1,
      "grades": [
        "1st"
      ],
      "subjects": [
        "Fractions"
      ]
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "product_id": "11310482",
    "title": "Fall Math Centers, Grades 1-2",
    "status": "inactive",
    "price_cents": 600,
    "grades": [
      "1st",
      "2nd"
    ],
    "subjects": [
      "Math"
    ]
  },
  "isError": false
}

Update product

write Confirm

MCP tool teachers-pay-teachers_update_product

Changes the fields you pass and leaves the rest. Price changes show to buyers right away on an active listing. Price is in US cents. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: update_product
NameTypeDescription
product_id required string Product ID from list_products.
fields required object Any of title, description, price_cents, additional_license_price_cents, grades, subjects, tags.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_update_product",
    "arguments": {
      "product_id": "9873310",
      "fields": {
        "price_cents": 1000,
        "additional_license_price_cents": 900
      }
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "product_id": "11204567",
    "status": "updated",
    "changed": {
      "price_cents": {
        "from": 600,
        "to": 700
      }
    }
  },
  "isError": false
}

Set product status

write Confirm

MCP tool teachers-pay-teachers_set_product_status

Makes a listing active (for sale) or inactive (hidden). Past buyers keep their downloads. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: set_product_status
NameTypeDescription
product_id required string Product ID from list_products.
active required boolean true to sell it, false to hide it.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_set_product_status",
    "arguments": {
      "product_id": "product_8c41d2",
      "active": true
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "product_id": "11310482",
    "active": true,
    "status": "active"
  },
  "isError": false
}

Upload revised file

write Confirm

MCP tool teachers-pay-teachers_upload_revised_file

Replaces the file buyers download. With notify_buyers set, past buyers are notified on their My Purchases page, and change_note tells them what changed. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: upload_revised_file
NameTypeDescription
product_id required string Product ID from list_products.
file_url required string URL of the new PDF or ZIP.
notify_buyers boolean Notify Buyers on their My Purchases page. Default: false.
change_note string What changed, shown to buyers when notified.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_upload_revised_file",
    "arguments": {
      "product_id": "product_8c41d2",
      "file_url": "https://example.com"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "product_id": "11204567",
    "status": "file_replaced",
    "buyers_notified": true
  },
  "isError": false
}

Answer buyer question

write Confirm

MCP tool teachers-pay-teachers_answer_buyer_question

Posts an answer to one buyer question. The answer is public and appears under your store name. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: answer_buyer_question
NameTypeDescription
question_id required string Question ID from list_buyer_questions.
answer required string Answer text, shown publicly under your store name.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_answer_buyer_question",
    "arguments": {
      "question_id": "q_5821",
      "answer": "Yes, the file has answer keys for all 20 task cards at the end of the PDF."
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "question_id": "q_5821",
    "status": "published"
  },
  "isError": false
}

Schedule sale

write Confirm

MCP tool teachers-pay-teachers_schedule_sale

Schedules a sale of 5, 10, 15 or 20 percent off between a start and an end date. Leave product_ids empty to put the whole store on sale. Buyers see the lower prices during the sale. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: schedule_sale
NameTypeDescription
discount required enum 5, 10, 15 or 20 (percent off).
start_date required date First day of the sale.
end_date required date Last day of the sale.
product_ids string[] Products on sale. Empty: whole store.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_schedule_sale",
    "arguments": {
      "discount": "20",
      "start_date": "2026-10-16",
      "end_date": "2026-10-18",
      "product_ids": [
        "11204567",
        "11204582",
        "9873310"
      ]
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "sale_id": "sale_48213",
    "status": "scheduled",
    "discount": 20,
    "start_date": "2026-10-16",
    "end_date": "2026-10-18",
    "products": 3
  },
  "isError": false
}

Send Note to Followers

write Confirm

MCP tool teachers-pay-teachers_send_note_to_followers

Sends a Note to Followers about new products or promotions, now or on the date you set. Images go in the body by URL. The note reaches everyone who follows your store. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_note_to_followers
NameTypeDescription
body required string Note text. Images by URL.
send_on date Send date. Default: now.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "teachers-pay-teachers_send_note_to_followers",
    "arguments": {
      "body": "body"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "note_id": "note_3307",
    "status": "sent",
    "sent_on": "2026-10-12"
  },
  "isError": false
}