Work with a Tolt affiliate and partner program: look up partners, customers, commissions, payouts and flows, run performance, payout and fraud reports, and approve or change records.
Work with a Tolt affiliate and partner program: look up partners, customers, commissions, payouts and flows, run performance, payout and fraud reports, and approve or change records.
Money amounts in tool results are strings in the minor units of the currency next to them (cents for USD, so 1999 is 19.99), unless a field says otherwise.
Protocol
Pass100/10020 / 20 pts
Connection, authentication, and protocol compatibility.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Returns the signed-in email and the Tolt organization this MCP session works in (the organization selected in the Tolt dashboard). Result fields: email, organization_id.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"organization_id"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Email of the signed-in Tolt user, or null when the account has none."
},
"organization_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the Tolt organization this session reads and writes (org_...), or null when the account is not linked to one yet."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "whoami",
"title": "Signed-in account",
"description": "Returns the signed-in email and the Tolt organization this MCP session works in (the organization selected in the Tolt dashboard). Result fields: email, organization_id.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"organization_id"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Email of the signed-in Tolt user, or null when the account has none."
},
"organization_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the Tolt organization this session reads and writes (org_...), or null when the account is not linked to one yet."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Org-wide totals for a date range. Returns revenue and commissions as per-currency lists (strings, minor units), plus commission_count, customer_count (leads included) and partner_count. Use this (never a list tool) to answer 'how is my program doing'. Filters: program_id, start_date, end_date. Result fields: revenue (each with currency, amount), commissions (each with currency, amount), commission_count, customer_count, partner_count.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
start_date
Earliest day to include, by creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by creation date; the whole day counts. Leave it out for no upper bound.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"revenue",
"commissions",
"commission_count",
"customer_count",
"partner_count"
],
"properties": {
"revenue": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Revenue from non-refunded transactions created in the window (all time when start_date and end_date are omitted), one entry per currency."
},
"commissions": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Approved and paid commission amounts created in the window, one entry per currency."
},
"partner_count": {
"type": "number",
"description": "Number of partners created in the window."
},
"customer_count": {
"type": "number",
"description": "Number of customers created in the window, leads included."
},
"commission_count": {
"type": "number",
"description": "Number of approved and paid commissions created in the window."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "program_overview",
"title": "Program overview",
"description": "Org-wide totals for a date range. Returns revenue and commissions as per-currency lists (strings, minor units), plus commission_count, customer_count (leads included) and partner_count. Use this (never a list tool) to answer 'how is my program doing'. Filters: program_id, start_date, end_date. Result fields: revenue (each with currency, amount), commissions (each with currency, amount), commission_count, customer_count, partner_count.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by creation date; the whole day counts. Leave it out for no upper bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by creation date. Leave it out for no lower bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"revenue",
"commissions",
"commission_count",
"customer_count",
"partner_count"
],
"properties": {
"revenue": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Revenue from non-refunded transactions created in the window (all time when start_date and end_date are omitted), one entry per currency."
},
"commissions": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Approved and paid commission amounts created in the window, one entry per currency."
},
"partner_count": {
"type": "number",
"description": "Number of partners created in the window."
},
"customer_count": {
"type": "number",
"description": "Number of customers created in the window, leads included."
},
"commission_count": {
"type": "number",
"description": "Number of approved and paid commissions created in the window."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description100/100
All-time (lifetime) totals for the account or one program: partners, clicks, leads, customers, paying customers, transactions, revenue, refunds and commissions. commissions is approved + paid (also split into commissions_approved and commissions_paid); pending commissions are not included, use commission_status_breakdown for those. Use this whenever the user asks for all-time, lifetime, total-ever or since-launch numbers, instead of widening a date window on the other report tools. Built from Tolt's pre-aggregated partner metrics, refreshed every few minutes (clicks_updated_at shows the last click refresh). Money is integer minor units in `currency`; when the account has several program currencies, currency is null and amounts are summed across them, so pass program_id for exact money. Result fields: partners, clicks, leads, customers, paying_customers, transactions, revenue, refunded, commissions, commissions_paid, commissions_approved, clicks_updated_at, currency, currencies.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"partners",
"clicks",
"leads",
"customers",
"paying_customers",
"transactions",
"revenue",
"refunded",
"commissions",
"commissions_paid",
"commissions_approved",
"clicks_updated_at",
"currency",
"currencies"
],
"properties": {
"leads": {
"type": "string",
"description": "All-time leads, as a numeric string."
},
"clicks": {
"type": "string",
"description": "All-time clicks, as a numeric string."
},
"revenue": {
"type": "string",
"description": "All-time revenue, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99); summed across currencies when currency is null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lower-case currency code of the money totals when the account (or program_id) has a single program currency; null when amounts span several currencies."
},
"partners": {
"type": "number",
"description": "Number of partners."
},
"refunded": {
"type": "string",
"description": "All-time refunded revenue, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"customers": {
"type": "string",
"description": "All-time customers, as a numeric string."
},
"currencies": {
"type": "array",
"items": {
"type": "string"
},
"description": "Lower-case currency codes of the programs covered."
},
"commissions": {
"type": "string",
"description": "All-time approved plus paid commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99); pending commissions are not included."
},
"transactions": {
"type": "string",
"description": "All-time non-refunded transactions, as a numeric string."
},
"commissions_paid": {
"type": "string",
"description": "All-time paid commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"paying_customers": {
"type": "string",
"description": "All-time paying customers, as a numeric string."
},
"clicks_updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the click metrics were last refreshed, as Postgres timestamp text, or null."
},
"commissions_approved": {
"type": "string",
"description": "All-time approved, not yet paid commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "all_time_totals",
"title": "All-time totals",
"description": "All-time (lifetime) totals for the account or one program: partners, clicks, leads, customers, paying customers, transactions, revenue, refunds and commissions. commissions is approved + paid (also split into commissions_approved and commissions_paid); pending commissions are not included, use commission_status_breakdown for those. Use this whenever the user asks for all-time, lifetime, total-ever or since-launch numbers, instead of widening a date window on the other report tools. Built from Tolt's pre-aggregated partner metrics, refreshed every few minutes (clicks_updated_at shows the last click refresh). Money is integer minor units in `currency`; when the account has several program currencies, currency is null and amounts are summed across them, so pass program_id for exact money. Result fields: partners, clicks, leads, customers, paying_customers, transactions, revenue, refunded, commissions, commissions_paid, commissions_approved, clicks_updated_at, currency, currencies.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"partners",
"clicks",
"leads",
"customers",
"paying_customers",
"transactions",
"revenue",
"refunded",
"commissions",
"commissions_paid",
"commissions_approved",
"clicks_updated_at",
"currency",
"currencies"
],
"properties": {
"leads": {
"type": "string",
"description": "All-time leads, as a numeric string."
},
"clicks": {
"type": "string",
"description": "All-time clicks, as a numeric string."
},
"revenue": {
"type": "string",
"description": "All-time revenue, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99); summed across currencies when currency is null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lower-case currency code of the money totals when the account (or program_id) has a single program currency; null when amounts span several currencies."
},
"partners": {
"type": "number",
"description": "Number of partners."
},
"refunded": {
"type": "string",
"description": "All-time refunded revenue, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"customers": {
"type": "string",
"description": "All-time customers, as a numeric string."
},
"currencies": {
"type": "array",
"items": {
"type": "string"
},
"description": "Lower-case currency codes of the programs covered."
},
"commissions": {
"type": "string",
"description": "All-time approved plus paid commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99); pending commissions are not included."
},
"transactions": {
"type": "string",
"description": "All-time non-refunded transactions, as a numeric string."
},
"commissions_paid": {
"type": "string",
"description": "All-time paid commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"paying_customers": {
"type": "string",
"description": "All-time paying customers, as a numeric string."
},
"clicks_updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the click metrics were last refreshed, as Postgres timestamp text, or null."
},
"commissions_approved": {
"type": "string",
"description": "All-time approved, not yet paid commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Partners ranked by a lifetime total such as revenue or clicks, with name, email and program; commission totals count approved and paid commissions. Use for 'best partners ever', 'most clicks all time', lifetime leaderboards. Same pre-aggregated source as all_time_totals. Money is per program currency: integer minor units in each row's currency. When the account has programs in more than one currency, ranking by revenue or commissions requires program_id. Result fields: data (each with partner_id, first_name, last_name, email, program_id, currency, clicks, customers, revenue, commissions).
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
sort
Lifetime metric to rank partners by, highest first.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"program_id",
"currency",
"clicks",
"customers",
"revenue",
"commissions"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"clicks": {
"type": "string",
"description": "Lifetime clicks, as a numeric string."
},
"revenue": {
"type": "string",
"description": "Lifetime revenue, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lower-case currency code of the partner's program, which revenue and commissions are in, or null."
},
"customers": {
"type": "string",
"description": "Lifetime customers, as a numeric string."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner's program (prg_...), or null."
},
"commissions": {
"type": "string",
"description": "Lifetime approved plus paid commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
},
"description": "Partners ranked by the sort metric over their lifetime, highest first, at most limit rows. The text result is this list on its own; structured content wraps it in data."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "top_partners_all_time",
"title": "Top partners of all time",
"description": "Partners ranked by a lifetime total such as revenue or clicks, with name, email and program; commission totals count approved and paid commissions. Use for 'best partners ever', 'most clicks all time', lifetime leaderboards. Same pre-aggregated source as all_time_totals. Money is per program currency: integer minor units in each row's currency. When the account has programs in more than one currency, ranking by revenue or commissions requires program_id. Result fields: data (each with partner_id, first_name, last_name, email, program_id, currency, clicks, customers, revenue, commissions).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"clicks",
"revenue",
"customers",
"commissions"
],
"type": "string",
"default": "revenue",
"description": "Lifetime metric to rank partners by, highest first."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Number of top partners to return."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"program_id",
"currency",
"clicks",
"customers",
"revenue",
"commissions"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"clicks": {
"type": "string",
"description": "Lifetime clicks, as a numeric string."
},
"revenue": {
"type": "string",
"description": "Lifetime revenue, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lower-case currency code of the partner's program, which revenue and commissions are in, or null."
},
"customers": {
"type": "string",
"description": "Lifetime customers, as a numeric string."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner's program (prg_...), or null."
},
"commissions": {
"type": "string",
"description": "Lifetime approved plus paid commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
},
"description": "Partners ranked by the sort metric over their lifetime, highest first, at most limit rows. The text result is this list on its own; structured content wraps it in data."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Partners ranked by revenue, commissions, clicks, customers, or conversion_rate, as per-partner aggregates (not raw rows) incl. name and email. Use for 'who are my best/top partners'. Set min_clicks to drop low-sample partners when ranking by conversion_rate. Covers a date window (defaults to the last 90 days, max 92) so it stays fast on large programs; pass start_date/end_date within that span for a different period. Paged with offset and limit. Filters: program_id, start_date, end_date, sort, order, min_clicks, currency. For a program with more than one currency, pass currency when ranking by revenue or commissions so amounts are not summed across currencies. Result fields: data (each with partner_id, first_name, last_name, email, clicks, customers, revenue, commissions, conversion_rate), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
start_date
Earliest day to include, by creation date (customers by the day they became active). Leave it out for the 90 days ending on end_date.
Clear enough to supply this argument.
end_date
Latest day to include; the whole day counts. Leave it out to end the window today.
Clear enough to supply this argument.
currency
Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
offset
Number of rows to skip; add limit to it to fetch the next page.
Clear enough to supply this argument.
sort
Metric to rank by, computed over the date window; conversion_rate is customers per click.
Clear enough to supply this argument.
order
Ranking direction: desc puts the highest values first.
Clear enough to supply this argument.
min_clicks
Leave out rows with fewer clicks than this in the window, so small samples do not top a conversion_rate ranking.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"clicks",
"customers",
"revenue",
"commissions",
"conversion_rate"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"clicks": {
"type": "number",
"description": "Clicks in the window."
},
"revenue": {
"type": "string",
"description": "Revenue from non-refunded transactions in the window, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed."
},
"customers": {
"type": "number",
"description": "Customers that became active (non-lead) in the window."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"commissions": {
"type": "string",
"description": "Approved and paid commissions created in the window, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed."
},
"conversion_rate": {
"type": "number",
"description": "Customers per click as a percentage with 2 decimals (2.5 = 2.5%); 0 when there were no clicks."
}
},
"additionalProperties": {}
},
"description": "This page of partners, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "top_partners",
"title": "Top partners",
"description": "Partners ranked by revenue, commissions, clicks, customers, or conversion_rate, as per-partner aggregates (not raw rows) incl. name and email. Use for 'who are my best/top partners'. Set min_clicks to drop low-sample partners when ranking by conversion_rate. Covers a date window (defaults to the last 90 days, max 92) so it stays fast on large programs; pass start_date/end_date within that span for a different period. Paged with offset and limit. Filters: program_id, start_date, end_date, sort, order, min_clicks, currency. For a program with more than one currency, pass currency when ranking by revenue or commissions so amounts are not summed across currencies. Result fields: data (each with partner_id, first_name, last_name, email, clicks, customers, revenue, commissions, conversion_rate), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"revenue",
"commissions",
"clicks",
"customers",
"conversion_rate"
],
"type": "string",
"default": "revenue",
"description": "Metric to rank by, computed over the date window; conversion_rate is customers per click."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Ranking direction: desc puts the highest values first."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of rows to skip; add limit to it to fetch the next page."
},
"currency": {
"type": "string",
"description": "Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include; the whole day counts. Leave it out to end the window today."
},
"min_clicks": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Leave out rows with fewer clicks than this in the window, so small samples do not top a conversion_rate ranking."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by creation date (customers by the day they became active). Leave it out for the 90 days ending on end_date."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"clicks",
"customers",
"revenue",
"commissions",
"conversion_rate"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"clicks": {
"type": "number",
"description": "Clicks in the window."
},
"revenue": {
"type": "string",
"description": "Revenue from non-refunded transactions in the window, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed."
},
"customers": {
"type": "number",
"description": "Customers that became active (non-lead) in the window."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"commissions": {
"type": "string",
"description": "Approved and paid commissions created in the window, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed."
},
"conversion_rate": {
"type": "number",
"description": "Customers per click as a percentage with 2 decimals (2.5 = 2.5%); 0 when there were no clicks."
}
},
"additionalProperties": {}
},
"description": "This page of partners, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Referral links ranked by revenue, commissions, clicks, customers, or conversion_rate, aggregated per link. Same shape, paging, and 90-day default window (max 92) as top_partners, including min_clicks. Result fields: data (each with link_id, param, value, clicks, customers, revenue, commissions, conversion_rate), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
start_date
Earliest day to include, by creation date (customers by the day they became active). Leave it out for the 90 days ending on end_date.
Clear enough to supply this argument.
end_date
Latest day to include; the whole day counts. Leave it out to end the window today.
Clear enough to supply this argument.
currency
Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
offset
Number of rows to skip; add limit to it to fetch the next page.
Clear enough to supply this argument.
sort
Metric to rank by, computed over the date window; conversion_rate is customers per click.
Clear enough to supply this argument.
order
Ranking direction: desc puts the highest values first.
Clear enough to supply this argument.
min_clicks
Leave out rows with fewer clicks than this in the window, so small samples do not top a conversion_rate ranking.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"link_id",
"param",
"value",
"clicks",
"customers",
"revenue",
"commissions",
"conversion_rate"
],
"properties": {
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's URL parameter name, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, or null."
},
"clicks": {
"type": "number",
"description": "Clicks in the window."
},
"link_id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"revenue": {
"type": "string",
"description": "Revenue from non-refunded transactions in the window, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed."
},
"customers": {
"type": "number",
"description": "Customers that became active (non-lead) in the window."
},
"commissions": {
"type": "string",
"description": "Approved and paid commissions created in the window, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed."
},
"conversion_rate": {
"type": "number",
"description": "Customers per click as a percentage with 2 decimals (2.5 = 2.5%); 0 when there were no clicks."
}
},
"additionalProperties": {}
},
"description": "This page of referral links, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "top_links",
"title": "Top links",
"description": "Referral links ranked by revenue, commissions, clicks, customers, or conversion_rate, aggregated per link. Same shape, paging, and 90-day default window (max 92) as top_partners, including min_clicks. Result fields: data (each with link_id, param, value, clicks, customers, revenue, commissions, conversion_rate), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"revenue",
"commissions",
"clicks",
"customers",
"conversion_rate"
],
"type": "string",
"default": "revenue",
"description": "Metric to rank by, computed over the date window; conversion_rate is customers per click."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Ranking direction: desc puts the highest values first."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of rows to skip; add limit to it to fetch the next page."
},
"currency": {
"type": "string",
"description": "Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include; the whole day counts. Leave it out to end the window today."
},
"min_clicks": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Leave out rows with fewer clicks than this in the window, so small samples do not top a conversion_rate ranking."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by creation date (customers by the day they became active). Leave it out for the 90 days ending on end_date."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"link_id",
"param",
"value",
"clicks",
"customers",
"revenue",
"commissions",
"conversion_rate"
],
"properties": {
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's URL parameter name, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, or null."
},
"clicks": {
"type": "number",
"description": "Clicks in the window."
},
"link_id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"revenue": {
"type": "string",
"description": "Revenue from non-refunded transactions in the window, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed."
},
"customers": {
"type": "number",
"description": "Customers that became active (non-lead) in the window."
},
"commissions": {
"type": "string",
"description": "Approved and paid commissions created in the window, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed."
},
"conversion_rate": {
"type": "number",
"description": "Customers per click as a percentage with 2 decimals (2.5 = 2.5%); 0 when there were no clicks."
}
},
"additionalProperties": {}
},
"description": "This page of referral links, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Revenue, commissions, customers, and clicks bucketed by period (granularity) over a date window (defaults to the last 90 days, max 186). Returns data: one point per bucket that has any activity, oldest first, each with period (its first day), revenue and commissions (strings, minor units, 0 when there were none), customers that became active, and clicks. Use for trends and charts. Filters: granularity, program_id, start_date, end_date, currency. For a program or org with more than one currency, pass currency so the revenue and commission trend is not summed across currencies. Result fields: data (each with period, revenue, commissions, customers, clicks).
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
start_date
Earliest day to include, by creation date (customers by the day they became active). Leave it out for the 90 days ending on end_date.
Clear enough to supply this argument.
end_date
Latest day to include; the whole day counts. Leave it out to end the window today.
Clear enough to supply this argument.
granularity
Bucket size; weeks start on Monday, months on the 1st, and each bucket is labeled with its first day.
Clear enough to supply this argument.
currency
Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"period",
"revenue",
"commissions",
"customers",
"clicks"
],
"properties": {
"clicks": {
"type": "number",
"description": "Clicks in the bucket."
},
"period": {
"type": "string",
"description": "First day of the bucket, YYYY-MM-DD."
},
"revenue": {
"type": "string",
"description": "Revenue from non-refunded transactions in the bucket, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed; 0 when there was none."
},
"customers": {
"type": "number",
"description": "Customers that became active in the bucket."
},
"commissions": {
"type": "string",
"description": "Approved and paid commissions created in the bucket, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed; 0 when there were none."
}
},
"additionalProperties": {}
},
"description": "One point per bucket that has any activity, oldest first. The text result is this list on its own; structured content wraps it in data."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "performance_timeseries",
"title": "Performance over time",
"description": "Revenue, commissions, customers, and clicks bucketed by period (granularity) over a date window (defaults to the last 90 days, max 186). Returns data: one point per bucket that has any activity, oldest first, each with period (its first day), revenue and commissions (strings, minor units, 0 when there were none), customers that became active, and clicks. Use for trends and charts. Filters: granularity, program_id, start_date, end_date, currency. For a program or org with more than one currency, pass currency so the revenue and commission trend is not summed across currencies. Result fields: data (each with period, revenue, commissions, customers, clicks).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"currency": {
"type": "string",
"description": "Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include; the whole day counts. Leave it out to end the window today."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by creation date (customers by the day they became active). Leave it out for the 90 days ending on end_date."
},
"granularity": {
"enum": [
"day",
"week",
"month"
],
"type": "string",
"default": "month",
"description": "Bucket size; weeks start on Monday, months on the 1st, and each bucket is labeled with its first day."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"period",
"revenue",
"commissions",
"customers",
"clicks"
],
"properties": {
"clicks": {
"type": "number",
"description": "Clicks in the bucket."
},
"period": {
"type": "string",
"description": "First day of the bucket, YYYY-MM-DD."
},
"revenue": {
"type": "string",
"description": "Revenue from non-refunded transactions in the bucket, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed; 0 when there was none."
},
"customers": {
"type": "number",
"description": "Customers that became active in the bucket."
},
"commissions": {
"type": "string",
"description": "Approved and paid commissions created in the bucket, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), summed across currencies unless currency was passed; 0 when there were none."
}
},
"additionalProperties": {}
},
"description": "One point per bucket that has any activity, oldest first. The text result is this list on its own; structured content wraps it in data."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Customer counts by status (trialing, active, canceled, suspended). Returns one object with a count per status; leads are not counted. Filters: program_id, start_date, end_date. Result fields: trialing, active, canceled, suspended.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
start_date
Earliest day to include, by the day customers became active. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by the day customers became active; the whole day counts. Leave it out for no upper bound.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"trialing",
"active",
"canceled",
"suspended"
],
"properties": {
"active": {
"type": "number",
"description": "Customers in active status; with a window, only those that became active in it."
},
"canceled": {
"type": "number",
"description": "Customers in canceled status; with a window, only those that became active in it."
},
"trialing": {
"type": "number",
"description": "Customers in trialing status; with a window, only those that became active in it."
},
"suspended": {
"type": "number",
"description": "Customers in suspended status; with a window, only those that became active in it."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "customer_stats",
"title": "Customer stats",
"description": "Customer counts by status (trialing, active, canceled, suspended). Returns one object with a count per status; leads are not counted. Filters: program_id, start_date, end_date. Result fields: trialing, active, canceled, suspended.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by the day customers became active; the whole day counts. Leave it out for no upper bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by the day customers became active. Leave it out for no lower bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"trialing",
"active",
"canceled",
"suspended"
],
"properties": {
"active": {
"type": "number",
"description": "Customers in active status; with a window, only those that became active in it."
},
"canceled": {
"type": "number",
"description": "Customers in canceled status; with a window, only those that became active in it."
},
"trialing": {
"type": "number",
"description": "Customers in trialing status; with a window, only those that became active in it."
},
"suspended": {
"type": "number",
"description": "Customers in suspended status; with a window, only those that became active in it."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Commission amounts and counts grouped by status and currency, plus summed clawbacks. The one call for 'how much do I owe / what's pending vs approved vs paid'. Set unpaid_only to count only commissions not yet attached to a payout. Filters: program_id, start_date, end_date, status (array), unpaid_only. Result fields: by_status (each with currency, amount, count, status), deducted_total (each with currency, amount).
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
start_date
Earliest day to include, by commission creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by commission creation date; the whole day counts. Leave it out for no upper bound.
Clear enough to supply this argument.
status
Only commissions in these statuses, such as pending, approved or paid.
Clear enough to supply this argument.
unpaid_only
true counts only commissions not yet attached to a payout. Leave it out to count commissions whether or not they are in a payout.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"by_status",
"deducted_total"
],
"properties": {
"by_status": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount",
"count",
"status"
],
"properties": {
"count": {
"type": "number",
"description": "Number of commissions in this bucket."
},
"amount": {
"type": "string",
"description": "Summed commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission status, such as pending, approved, paid, rejected or refunded."
},
"currency": {
"type": "string",
"description": "Upper-case currency code: the commission's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Commission amount and count per status and currency."
},
"deducted_total": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Summed deducted (clawed back) commission amounts per currency."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "commission_status_breakdown",
"title": "Commissions by status",
"description": "Commission amounts and counts grouped by status and currency, plus summed clawbacks. The one call for 'how much do I owe / what's pending vs approved vs paid'. Set unpaid_only to count only commissions not yet attached to a payout. Filters: program_id, start_date, end_date, status (array), unpaid_only. Result fields: by_status (each with currency, amount, count, status), deducted_total (each with currency, amount).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"status": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only commissions in these statuses, such as pending, approved or paid."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by commission creation date; the whole day counts. Leave it out for no upper bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by commission creation date. Leave it out for no lower bound."
},
"unpaid_only": {
"type": "boolean",
"description": "true counts only commissions not yet attached to a payout. Leave it out to count commissions whether or not they are in a payout."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"by_status",
"deducted_total"
],
"properties": {
"by_status": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount",
"count",
"status"
],
"properties": {
"count": {
"type": "number",
"description": "Number of commissions in this bucket."
},
"amount": {
"type": "string",
"description": "Summed commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission status, such as pending, approved, paid, rejected or refunded."
},
"currency": {
"type": "string",
"description": "Upper-case currency code: the commission's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Commission amount and count per status and currency."
},
"deducted_total": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Summed deducted (clawed back) commission amounts per currency."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Partner payout balances (approved, not yet paid out), one row per partner and program, largest balance first, with a per-currency owed breakdown, payout_method, the effective minimum_payout, and a ready flag. Each program's balance uses that program's own currency and minimum. Set over_minimum_only to see only partner/program balances that have cleared their minimum (and get ready_count). Use for 'who do I pay next'. Filters: program_id, currency, over_minimum_only, limit, offset. Result fields: data (each with partner_id, program_id, display_name, first_name, last_name, email, country_code, payout_method, minimum_payout, ready, owed), has_more, ready_count.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
currency
Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency.
Clear enough to supply this argument.
over_minimum_only
true keeps only partner and program balances that have reached their minimum payout, and adds ready_count.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
offset
Number of rows to skip; add limit to it to fetch the next page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"program_id",
"display_name",
"first_name",
"last_name",
"email",
"country_code",
"payout_method",
"minimum_payout",
"ready",
"owed"
],
"properties": {
"owed": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount",
"commission_count"
],
"properties": {
"amount": {
"type": "string",
"description": "Approved, not yet paid out commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this balance."
},
"commission_count": {
"type": "number",
"description": "Number of commissions in this balance."
}
},
"additionalProperties": {}
},
"description": "Balance per currency, largest first."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"ready": {
"type": "boolean",
"description": "true when the balance in the program currency has reached minimum_payout."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program the balance is in (prg_...), or null."
},
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's country code, or null."
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name shown for the partner in the dashboard, or null."
},
"payout_method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's payout method as stored, or null."
},
"minimum_payout": {
"type": "number",
"description": "Effective minimum payout for this partner and program, in minor units of the program currency: the partner's, else the group's, else the program's, else 0."
}
},
"additionalProperties": {}
},
"description": "This page of partner and program balances, largest first, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
},
"ready_count": {
"type": "number",
"description": "Number of partner and program balances over their minimum; present only when over_minimum_only is true."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "top_partners_owed",
"title": "Partners owed the most",
"description": "Partner payout balances (approved, not yet paid out), one row per partner and program, largest balance first, with a per-currency owed breakdown, payout_method, the effective minimum_payout, and a ready flag. Each program's balance uses that program's own currency and minimum. Set over_minimum_only to see only partner/program balances that have cleared their minimum (and get ready_count). Use for 'who do I pay next'. Filters: program_id, currency, over_minimum_only, limit, offset. Result fields: data (each with partner_id, program_id, display_name, first_name, last_name, email, country_code, payout_method, minimum_payout, ready, owed), has_more, ready_count.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of rows to skip; add limit to it to fetch the next page."
},
"currency": {
"type": "string",
"description": "Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"over_minimum_only": {
"type": "boolean",
"description": "true keeps only partner and program balances that have reached their minimum payout, and adds ready_count."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"program_id",
"display_name",
"first_name",
"last_name",
"email",
"country_code",
"payout_method",
"minimum_payout",
"ready",
"owed"
],
"properties": {
"owed": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount",
"commission_count"
],
"properties": {
"amount": {
"type": "string",
"description": "Approved, not yet paid out commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this balance."
},
"commission_count": {
"type": "number",
"description": "Number of commissions in this balance."
}
},
"additionalProperties": {}
},
"description": "Balance per currency, largest first."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"ready": {
"type": "boolean",
"description": "true when the balance in the program currency has reached minimum_payout."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program the balance is in (prg_...), or null."
},
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's country code, or null."
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name shown for the partner in the dashboard, or null."
},
"payout_method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's payout method as stored, or null."
},
"minimum_payout": {
"type": "number",
"description": "Effective minimum payout for this partner and program, in minor units of the program currency: the partner's, else the group's, else the program's, else 0."
}
},
"additionalProperties": {}
},
"description": "This page of partner and program balances, largest first, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
},
"ready_count": {
"type": "number",
"description": "Number of partner and program balances over their minimum; present only when over_minimum_only is true."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Pending commissions with a scheduled_approval_date in a window, summed and bucketed by period (granularity) and currency: a cashflow forecast of what becomes payable soon. Returns buckets of {period_start, currency, amount (string, minor units), count}, has_more, and the window. Requires start_date and end_date. Filters: program_id, granularity. Result fields: buckets (each with period_start, currency, amount, count), has_more, window (start, end).
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
start_date
Earliest scheduled approval day to include.
Clear enough to supply this argument.
end_date
Latest scheduled approval day to include; the whole day counts.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
granularity
Bucket size; weeks start on Monday, months on the 1st, and each bucket is labeled with its first day.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Org-wide counts and summed amounts of commissions flagged self-referral and/or ad-click, per currency: the headline fraud-exposure number. Returns by_currency rows with self-referral, ad-click and total flagged counts and amounts (strings, minor units), plus total_commission_count for all commissions in the window. Filters: program_id, start_date, end_date. Result fields: by_currency (each with currency, self_referral_count, self_referral_amount, ad_click_count, ad_click_amount, flagged_count, flagged_amount), total_commission_count.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
start_date
Earliest day to include, by commission creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by commission creation date; the whole day counts. Leave it out for no upper bound.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"by_currency",
"total_commission_count"
],
"properties": {
"by_currency": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"self_referral_count",
"self_referral_amount",
"ad_click_count",
"ad_click_amount",
"flagged_count",
"flagged_amount"
],
"properties": {
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code: the commission's own currency, else its program's currency, else USD."
},
"flagged_count": {
"type": "number",
"description": "Commissions with either flag."
},
"ad_click_count": {
"type": "number",
"description": "Commissions flagged as coming from a paid ad click."
},
"flagged_amount": {
"type": "string",
"description": "Their summed amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"ad_click_amount": {
"type": "string",
"description": "Their summed amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"self_referral_count": {
"type": "number",
"description": "Commissions flagged as self-referrals."
},
"self_referral_amount": {
"type": "string",
"description": "Their summed amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
},
"description": "Flagged commission counts and amounts per currency, over all commission statuses created in the window."
},
"total_commission_count": {
"type": "number",
"description": "All commissions created in the window, flagged or not."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "fraud_commission_overview",
"title": "Flagged commissions overview",
"description": "Org-wide counts and summed amounts of commissions flagged self-referral and/or ad-click, per currency: the headline fraud-exposure number. Returns by_currency rows with self-referral, ad-click and total flagged counts and amounts (strings, minor units), plus total_commission_count for all commissions in the window. Filters: program_id, start_date, end_date. Result fields: by_currency (each with currency, self_referral_count, self_referral_amount, ad_click_count, ad_click_amount, flagged_count, flagged_amount), total_commission_count.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by commission creation date; the whole day counts. Leave it out for no upper bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by commission creation date. Leave it out for no lower bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"by_currency",
"total_commission_count"
],
"properties": {
"by_currency": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"self_referral_count",
"self_referral_amount",
"ad_click_count",
"ad_click_amount",
"flagged_count",
"flagged_amount"
],
"properties": {
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code: the commission's own currency, else its program's currency, else USD."
},
"flagged_count": {
"type": "number",
"description": "Commissions with either flag."
},
"ad_click_count": {
"type": "number",
"description": "Commissions flagged as coming from a paid ad click."
},
"flagged_amount": {
"type": "string",
"description": "Their summed amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"ad_click_amount": {
"type": "string",
"description": "Their summed amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"self_referral_count": {
"type": "number",
"description": "Commissions flagged as self-referrals."
},
"self_referral_amount": {
"type": "string",
"description": "Their summed amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
},
"description": "Flagged commission counts and amounts per currency, over all commission statuses created in the window."
},
"total_commission_count": {
"type": "number",
"description": "All commissions created in the window, flagged or not."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Partners ranked by flagged-commission count/value (self-referral + ad-click): the repeat offenders behind fraud_commission_overview. Returns rows with the partner's id, name and email, self-referral, ad-click and flagged counts, and flagged amounts per currency (strings, minor units), plus has_more. Filters: program_id, start_date, end_date, sort, order, limit, offset. Result fields: data (each with partner_id, first_name, last_name, email, self_referral_count, ad_click_count, flagged_count, flagged_amount_by_currency), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
start_date
Earliest day to include, by commission creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by commission creation date; the whole day counts. Leave it out for no upper bound.
Clear enough to supply this argument.
sort
Count to rank partners by: self-referral or ad-click flagged commissions, or flagged_total for commissions with either flag.
Clear enough to supply this argument.
order
Ranking direction: desc puts the highest values first.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
offset
Number of rows to skip; add limit to it to fetch the next page.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"self_referral_count",
"ad_click_count",
"flagged_count",
"flagged_amount_by_currency"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"flagged_count": {
"type": "number",
"description": "Commissions with either flag."
},
"ad_click_count": {
"type": "number",
"description": "Commissions flagged as coming from a paid ad click."
},
"self_referral_count": {
"type": "number",
"description": "Commissions flagged as self-referrals."
},
"flagged_amount_by_currency": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Summed amount of the flagged commissions per currency."
}
},
"additionalProperties": {}
},
"description": "This page of partners with flagged commissions, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "top_flagged_partners",
"title": "Partners with flagged commissions",
"description": "Partners ranked by flagged-commission count/value (self-referral + ad-click): the repeat offenders behind fraud_commission_overview. Returns rows with the partner's id, name and email, self-referral, ad-click and flagged counts, and flagged amounts per currency (strings, minor units), plus has_more. Filters: program_id, start_date, end_date, sort, order, limit, offset. Result fields: data (each with partner_id, first_name, last_name, email, self_referral_count, ad_click_count, flagged_count, flagged_amount_by_currency), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"self_referral",
"ad_click",
"flagged_total"
],
"type": "string",
"default": "flagged_total",
"description": "Count to rank partners by: self-referral or ad-click flagged commissions, or flagged_total for commissions with either flag."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Ranking direction: desc puts the highest values first."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of rows to skip; add limit to it to fetch the next page."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by commission creation date; the whole day counts. Leave it out for no upper bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by commission creation date. Leave it out for no lower bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"self_referral_count",
"ad_click_count",
"flagged_count",
"flagged_amount_by_currency"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"flagged_count": {
"type": "number",
"description": "Commissions with either flag."
},
"ad_click_count": {
"type": "number",
"description": "Commissions flagged as coming from a paid ad click."
},
"self_referral_count": {
"type": "number",
"description": "Commissions flagged as self-referrals."
},
"flagged_amount_by_currency": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Summed amount of the flagged commissions per currency."
}
},
"additionalProperties": {}
},
"description": "This page of partners with flagged commissions, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Partners ranked by refunded-transaction count or refund rate, with refunded amount. Returns rows with the partner's id, name and email, total and refunded transaction counts, refund_rate, and refunded amounts per currency (strings, minor units), plus has_more. min_transactions sets a floor so a 1-of-1 refund cannot top the rate. Filters: program_id, start_date, end_date, sort, order, limit, offset, min_transactions. Result fields: data (each with partner_id, first_name, last_name, email, total_transactions, refunded_count, refund_rate, refunded_amount_by_currency), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
start_date
Earliest day to include, by transaction creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by transaction creation date; the whole day counts. Leave it out for no upper bound.
Clear enough to supply this argument.
sort
refunded_count ranks by refunded transactions; refund_rate by refunded transactions as a share of all the partner's transactions in the window.
Clear enough to supply this argument.
order
Ranking direction: desc puts the highest values first.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
offset
Number of rows to skip; add limit to it to fetch the next page.
Clear enough to supply this argument.
min_transactions
Leave out partners with fewer transactions than this in the window, so a single refund cannot top the refund rate.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"total_transactions",
"refunded_count",
"refund_rate",
"refunded_amount_by_currency"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"refund_rate": {
"type": "number",
"description": "refunded_count / total_transactions as a fraction with 4 decimals (0.25 = 25%)."
},
"refunded_count": {
"type": "number",
"description": "Of those, transactions in refunded status."
},
"total_transactions": {
"type": "number",
"description": "The partner's transactions in the window."
},
"refunded_amount_by_currency": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Refunded amount per currency; currencies with nothing refunded are left out."
}
},
"additionalProperties": {}
},
"description": "This page of partners with refunds, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "top_refund_partners",
"title": "Partners with the most refunds",
"description": "Partners ranked by refunded-transaction count or refund rate, with refunded amount. Returns rows with the partner's id, name and email, total and refunded transaction counts, refund_rate, and refunded amounts per currency (strings, minor units), plus has_more. min_transactions sets a floor so a 1-of-1 refund cannot top the rate. Filters: program_id, start_date, end_date, sort, order, limit, offset, min_transactions. Result fields: data (each with partner_id, first_name, last_name, email, total_transactions, refunded_count, refund_rate, refunded_amount_by_currency), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"refunded_count",
"refund_rate"
],
"type": "string",
"default": "refunded_count",
"description": "refunded_count ranks by refunded transactions; refund_rate by refunded transactions as a share of all the partner's transactions in the window."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Ranking direction: desc puts the highest values first."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of rows to skip; add limit to it to fetch the next page."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by transaction creation date; the whole day counts. Leave it out for no upper bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by transaction creation date. Leave it out for no lower bound."
},
"min_transactions": {
"type": "integer",
"default": 5,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Leave out partners with fewer transactions than this in the window, so a single refund cannot top the refund rate."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"total_transactions",
"refunded_count",
"refund_rate",
"refunded_amount_by_currency"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"refund_rate": {
"type": "number",
"description": "refunded_count / total_transactions as a fraction with 4 decimals (0.25 = 25%)."
},
"refunded_count": {
"type": "number",
"description": "Of those, transactions in refunded status."
},
"total_transactions": {
"type": "number",
"description": "The partner's transactions in the window."
},
"refunded_amount_by_currency": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Refunded amount per currency; currencies with nothing refunded are left out."
}
},
"additionalProperties": {}
},
"description": "This page of partners with refunds, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Partners ranked by lead volume with their activation breakdown (lead/active/trialing/canceled counts and activation_rate): flags lead-stuffing that top_partners hides. Returns rows with the partner's id, name and email, lead, active, trialing and canceled customer counts, and activation_rate (a fraction from 0 to 1), plus has_more. Filters: program_id, start_date, end_date, sort, order, limit, offset. Result fields: data (each with partner_id, first_name, last_name, email, lead_count, active_count, trialing_count, canceled_count, activation_rate), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
start_date
Earliest day to include, by customer creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by customer creation date; the whole day counts. Leave it out for no upper bound.
Clear enough to supply this argument.
sort
lead_count ranks by referred customers still in lead status; activation_rate by the share of referred customers that became active.
Clear enough to supply this argument.
order
Ranking direction: desc puts the highest values first.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
offset
Number of rows to skip; add limit to it to fetch the next page.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"lead_count",
"active_count",
"trialing_count",
"canceled_count",
"activation_rate"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"lead_count": {
"type": "number",
"description": "Referred customers still in lead status."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"active_count": {
"type": "number",
"description": "Referred customers in active status."
},
"canceled_count": {
"type": "number",
"description": "Referred customers in canceled status."
},
"trialing_count": {
"type": "number",
"description": "Referred customers in trialing status."
},
"activation_rate": {
"type": "number",
"description": "Share of referred customers that ever became active, as a fraction with 4 decimals (0.25 = 25%)."
}
},
"additionalProperties": {}
},
"description": "This page of partners with referred customers, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "partner_lead_quality",
"title": "Partner lead quality",
"description": "Partners ranked by lead volume with their activation breakdown (lead/active/trialing/canceled counts and activation_rate): flags lead-stuffing that top_partners hides. Returns rows with the partner's id, name and email, lead, active, trialing and canceled customer counts, and activation_rate (a fraction from 0 to 1), plus has_more. Filters: program_id, start_date, end_date, sort, order, limit, offset. Result fields: data (each with partner_id, first_name, last_name, email, lead_count, active_count, trialing_count, canceled_count, activation_rate), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"lead_count",
"activation_rate"
],
"type": "string",
"default": "lead_count",
"description": "lead_count ranks by referred customers still in lead status; activation_rate by the share of referred customers that became active."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Ranking direction: desc puts the highest values first."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of rows to skip; add limit to it to fetch the next page."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by customer creation date; the whole day counts. Leave it out for no upper bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by customer creation date. Leave it out for no lower bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"lead_count",
"active_count",
"trialing_count",
"canceled_count",
"activation_rate"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"lead_count": {
"type": "number",
"description": "Referred customers still in lead status."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"active_count": {
"type": "number",
"description": "Referred customers in active status."
},
"canceled_count": {
"type": "number",
"description": "Referred customers in canceled status."
},
"trialing_count": {
"type": "number",
"description": "Referred customers in trialing status."
},
"activation_rate": {
"type": "number",
"description": "Share of referred customers that ever became active, as a fraction with 4 decimals (0.25 = 25%)."
}
},
"additionalProperties": {}
},
"description": "This page of partners with referred customers, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Partner counts grouped by one partner attribute (dimension), as a capped top-N. Returns the dimension and rows of {key, count}, plus has_more. The partner-side equivalent of customer_stats. Filters: program_id, group_id, status, created_after, created_before. Result fields: data (each with key, count), has_more, dimension.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
dimension
Partner attribute to count partners by, such as their group, country or payout method; each row is one value with its partner count.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
group_id
Limit to partners in one group, by the group id (grp_...) as returned when listing groups.
Clear enough to supply this argument.
status
Keep only partners at this review stage; an approved partner's stage is active.
Clear enough to supply this argument.
created_after
Start of a window on when partners signed up: partners created at this time or later are counted, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when partners signed up: only partners created before this time are counted. Leave it out for no upper bound.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"dimension"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "One value of the dimension, as text; null for partners with no value."
},
"count": {
"type": "number",
"description": "Number of partners with this value."
}
},
"additionalProperties": {}
},
"description": "The top values of the dimension by partner count, at most limit rows."
},
"has_more": {
"type": "boolean",
"description": "true when more groups exist than limit returned."
},
"dimension": {
"type": "string",
"description": "The partner field counted by, as passed."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "partner_breakdown",
"title": "Partner breakdown",
"description": "Partner counts grouped by one partner attribute (dimension), as a capped top-N. Returns the dimension and rows of {key, count}, plus has_more. The partner-side equivalent of customer_stats. Filters: program_id, group_id, status, created_after, created_before. Result fields: data (each with key, count), has_more, dimension.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"dimension"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"status": {
"enum": [
"active",
"pending",
"rejected",
"suspended"
],
"type": "string",
"description": "Keep only partners at this review stage; an approved partner's stage is active."
},
"group_id": {
"type": "string",
"description": "Limit to partners in one group, by the group id (grp_...) as returned when listing groups."
},
"dimension": {
"enum": [
"status",
"completed_onboarding",
"group_id",
"country_code",
"program_id",
"tax_form_status",
"suspension_reason",
"payout_method"
],
"type": "string",
"description": "Partner attribute to count partners by, such as their group, country or payout method; each row is one value with its partner count."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when partners signed up: partners created at this time or later are counted, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when partners signed up: only partners created before this time are counted. Leave it out for no upper bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"dimension"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "One value of the dimension, as text; null for partners with no value."
},
"count": {
"type": "number",
"description": "Number of partners with this value."
}
},
"additionalProperties": {}
},
"description": "The top values of the dimension by partner count, at most limit rows."
},
"has_more": {
"type": "boolean",
"description": "true when more groups exist than limit returned."
},
"dimension": {
"type": "string",
"description": "The partner field counted by, as passed."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
New-partner signups bucketed by period (granularity), with how many of each bucket completed onboarding. Returns data: one point per bucket with at least one signup, oldest first, each with period, signups and onboarded. Filters: granularity, program_id, group_id, status, start_date, end_date. Result fields: data (each with period, signups, onboarded).
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
granularity
Bucket size; weeks start on Monday, months on the 1st, and each bucket is labeled with its first day.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
group_id
Limit to partners in one group, by the group id (grp_...) as returned when listing groups.
Clear enough to supply this argument.
status
Keep only partners at this review stage; an approved partner's stage is active.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
start_date
Earliest signup day to include. When omitted, the window starts 90, 730 or 1825 days before end_date (or today) for day, week or month buckets.
Clear enough to supply this argument.
end_date
Latest signup day to include; the whole day counts. Leave it out for no upper bound; the default start is then counted back from today.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"period",
"signups",
"onboarded"
],
"properties": {
"period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "First day of the bucket, YYYY-MM-DD."
},
"signups": {
"type": "number",
"description": "Partners created in the bucket."
},
"onboarded": {
"type": "number",
"description": "Of those, partners that completed onboarding."
}
},
"additionalProperties": {}
},
"description": "One point per bucket with at least one signup, oldest first. The text result is this list on its own; structured content wraps it in data."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "partner_signup_timeseries",
"title": "Partner signups over time",
"description": "New-partner signups bucketed by period (granularity), with how many of each bucket completed onboarding. Returns data: one point per bucket with at least one signup, oldest first, each with period, signups and onboarded. Filters: granularity, program_id, group_id, status, start_date, end_date. Result fields: data (each with period, signups, onboarded).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"status": {
"enum": [
"active",
"pending",
"rejected",
"suspended"
],
"type": "string",
"description": "Keep only partners at this review stage; an approved partner's stage is active."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest signup day to include; the whole day counts. Leave it out for no upper bound; the default start is then counted back from today."
},
"group_id": {
"type": "string",
"description": "Limit to partners in one group, by the group id (grp_...) as returned when listing groups."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest signup day to include. When omitted, the window starts 90, 730 or 1825 days before end_date (or today) for day, week or month buckets."
},
"granularity": {
"enum": [
"day",
"week",
"month"
],
"type": "string",
"default": "month",
"description": "Bucket size; weeks start on Monday, months on the 1st, and each bucket is labeled with its first day."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"period",
"signups",
"onboarded"
],
"properties": {
"period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "First day of the bucket, YYYY-MM-DD."
},
"signups": {
"type": "number",
"description": "Partners created in the bucket."
},
"onboarded": {
"type": "number",
"description": "Of those, partners that completed onboarding."
}
},
"additionalProperties": {}
},
"description": "One point per bucket with at least one signup, oldest first. The text result is this list on its own; structured content wraps it in data."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Active, onboarded partners whose last attributed activity (customers/commissions, not clicks) predates a required cutoff: a short re-engagement list. Returns rows, longest inactive first, with the partner's id, name and email and their last customer, commission and overall activity dates, plus has_more. Requires since_date. Filters: program_id, group_id, limit, offset. Result fields: data (each with partner_id, first_name, last_name, email, last_customer_at, last_commission_at, last_activity_at), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
since_date
Cutoff day: partners whose latest referred customer or commission was created before this day are returned, as are partners with neither.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
group_id
Limit to partners in one group, by the group id (grp_...) as returned when listing groups.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
offset
Number of rows to skip; add limit to it to fetch the next page.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"last_customer_at",
"last_commission_at",
"last_activity_at"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"last_activity_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The later of the two as Postgres timestamp text; 1970-01-01 when they have neither."
},
"last_customer_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When their latest referred customer was created, as Postgres timestamp text, or null."
},
"last_commission_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When their latest commission was created, as Postgres timestamp text, or null."
}
},
"additionalProperties": {}
},
"description": "This page of dormant partners, longest inactive first, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "dormant_partners",
"title": "Dormant partners",
"description": "Active, onboarded partners whose last attributed activity (customers/commissions, not clicks) predates a required cutoff: a short re-engagement list. Returns rows, longest inactive first, with the partner's id, name and email and their last customer, commission and overall activity dates, plus has_more. Requires since_date. Filters: program_id, group_id, limit, offset. Result fields: data (each with partner_id, first_name, last_name, email, last_customer_at, last_commission_at, last_activity_at), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"since_date"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of rows to skip; add limit to it to fetch the next page."
},
"group_id": {
"type": "string",
"description": "Limit to partners in one group, by the group id (grp_...) as returned when listing groups."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"since_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Cutoff day: partners whose latest referred customer or commission was created before this day are returned, as are partners with neither."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"partner_id",
"first_name",
"last_name",
"email",
"last_customer_at",
"last_commission_at",
"last_activity_at"
],
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email, or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"partner_id": {
"type": "string",
"description": "Partner id (part_...)."
},
"last_activity_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The later of the two as Postgres timestamp text; 1970-01-01 when they have neither."
},
"last_customer_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When their latest referred customer was created, as Postgres timestamp text, or null."
},
"last_commission_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When their latest commission was created, as Postgres timestamp text, or null."
}
},
"additionalProperties": {}
},
"description": "This page of dormant partners, longest inactive first, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Top-N grouping of click events over a date window of at most 92 days by one click attribute, such as referrer host, country, partner or link, optionally narrowed with referrer_contains. Returns the window, dimension, matched_clicks, and rows of {key, clicks} (with name and email for partners, value and param for links), plus has_more. The tool for 'where does my traffic come from' and 'which affiliates get referrals from Google' (dimension=partner, referrer_contains=google). For dimension=partner each row already includes the partner's name and email, and for dimension=link the link's value and param, so you never need per-row get_partner/get_link calls. Narrow with program_id/partner_id/link_id to look at one slice. Filters: program_id, partner_id, link_id, referrer_contains. Result fields: window (from, to), dimension, matched_clicks, rows (each with key, clicks, name, email, value, param), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
dimension
Click attribute to group clicks by. Host and page come from the referrer and landing URLs; grouping by partner or link adds their names to each row.
Clear enough to supply this argument.
created_after
Start of the click window: only clicks made at or after this moment count.
Clear enough to supply this argument.
created_before
End of the click window: only clicks made before this moment count.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
link_id
Limit to one referral link, by its id (lnk_...) as returned when listing links.
Clear enough to supply this argument.
referrer_contains
Only clicks whose referrer URL contains this text, ignoring case, e.g. `google`.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"window",
"dimension",
"matched_clicks",
"rows",
"has_more"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"clicks"
],
"properties": {
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "One value of the dimension: a referrer host, country, device, browser, page URL, partner id or link id; null for clicks with no value."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's full name; only on partner rows, null when unknown."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email; only on partner rows, null when unknown."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's URL parameter name; only on link rows, null when unknown."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug; only on link rows, null when unknown."
},
"clicks": {
"type": "number",
"description": "Clicks with this value."
}
},
"additionalProperties": {}
},
"description": "Values of the dimension by click count, most clicks first, at most limit rows."
},
"window": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_before as passed: the end of the click window."
},
"from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_after as passed: the start of the click window."
}
},
"description": "The click window the counts cover.",
"additionalProperties": {}
},
"has_more": {
"type": "boolean",
"description": "true when more values exist than limit returned."
},
"dimension": {
"type": "string",
"description": "The click attribute grouped by, as passed."
},
"matched_clicks": {
"type": "number",
"description": "Clicks matching the window and filters, across all groups."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "clicks_breakdown",
"title": "Clicks breakdown",
"description": "Top-N grouping of click events over a date window of at most 92 days by one click attribute, such as referrer host, country, partner or link, optionally narrowed with referrer_contains. Returns the window, dimension, matched_clicks, and rows of {key, clicks} (with name and email for partners, value and param for links), plus has_more. The tool for 'where does my traffic come from' and 'which affiliates get referrals from Google' (dimension=partner, referrer_contains=google). For dimension=partner each row already includes the partner's name and email, and for dimension=link the link's value and param, so you never need per-row get_partner/get_link calls. Narrow with program_id/partner_id/link_id to look at one slice. Filters: program_id, partner_id, link_id, referrer_contains. Result fields: window (from, to), dimension, matched_clicks, rows (each with key, clicks, name, email, value, param), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"dimension",
"created_after",
"created_before"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"link_id": {
"type": "string",
"description": "Limit to one referral link, by its id (lnk_...) as returned when listing links."
},
"dimension": {
"enum": [
"referrer_host",
"country",
"device",
"browser",
"page",
"partner",
"link"
],
"type": "string",
"description": "Click attribute to group clicks by. Host and page come from the referrer and landing URLs; grouping by partner or link adds their names to each row."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of the click window: only clicks made at or after this moment count."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of the click window: only clicks made before this moment count."
},
"referrer_contains": {
"type": "string",
"description": "Only clicks whose referrer URL contains this text, ignoring case, e.g. `google`."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"window",
"dimension",
"matched_clicks",
"rows",
"has_more"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"clicks"
],
"properties": {
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "One value of the dimension: a referrer host, country, device, browser, page URL, partner id or link id; null for clicks with no value."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's full name; only on partner rows, null when unknown."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's email; only on partner rows, null when unknown."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's URL parameter name; only on link rows, null when unknown."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug; only on link rows, null when unknown."
},
"clicks": {
"type": "number",
"description": "Clicks with this value."
}
},
"additionalProperties": {}
},
"description": "Values of the dimension by click count, most clicks first, at most limit rows."
},
"window": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_before as passed: the end of the click window."
},
"from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_after as passed: the start of the click window."
}
},
"description": "The click window the counts cover.",
"additionalProperties": {}
},
"has_more": {
"type": "boolean",
"description": "true when more values exist than limit returned."
},
"dimension": {
"type": "string",
"description": "The click attribute grouped by, as passed."
},
"matched_clicks": {
"type": "number",
"description": "Clicks matching the window and filters, across all groups."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Clicks over a date window of at most 92 days, the customers who came from those clicks (leads), and how many of them became active, with the two conversion rates. Returns the window, clicks, leads, active, and click_to_lead_rate and lead_to_active_rate as fractions. Filters: program_id, partner_id. Result fields: window (from, to), clicks, leads, active, click_to_lead_rate, lead_to_active_rate.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Input documentation gives an agent enough context to populate the arguments.
created_after
Start of the click window: only clicks made at or after this moment count.
Clear enough to supply this argument.
created_before
End of the click window: only clicks made before this moment count.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"window",
"clicks",
"leads",
"active",
"click_to_lead_rate",
"lead_to_active_rate"
],
"properties": {
"leads": {
"type": "number",
"description": "Distinct customers that came from those clicks and became leads."
},
"active": {
"type": "number",
"description": "Of those leads, customers that became active."
},
"clicks": {
"type": "number",
"description": "Clicks in the window."
},
"window": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_before as passed: the end of the click window."
},
"from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_after as passed: the start of the click window."
}
},
"description": "The click window the counts cover.",
"additionalProperties": {}
},
"click_to_lead_rate": {
"type": "number",
"description": "leads / clicks as a fraction with 4 decimals; 0 when there were no clicks."
},
"lead_to_active_rate": {
"type": "number",
"description": "active / leads as a fraction with 4 decimals; 0 when there were no leads."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "acquisition_funnel",
"title": "Acquisition funnel",
"description": "Clicks over a date window of at most 92 days, the customers who came from those clicks (leads), and how many of them became active, with the two conversion rates. Returns the window, clicks, leads, active, and click_to_lead_rate and lead_to_active_rate as fractions. Filters: program_id, partner_id. Result fields: window (from, to), clicks, leads, active, click_to_lead_rate, lead_to_active_rate.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"created_after",
"created_before"
],
"properties": {
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of the click window: only clicks made at or after this moment count."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of the click window: only clicks made before this moment count."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"window",
"clicks",
"leads",
"active",
"click_to_lead_rate",
"lead_to_active_rate"
],
"properties": {
"leads": {
"type": "number",
"description": "Distinct customers that came from those clicks and became leads."
},
"active": {
"type": "number",
"description": "Of those leads, customers that became active."
},
"clicks": {
"type": "number",
"description": "Clicks in the window."
},
"window": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_before as passed: the end of the click window."
},
"from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_after as passed: the start of the click window."
}
},
"description": "The click window the counts cover.",
"additionalProperties": {}
},
"click_to_lead_rate": {
"type": "number",
"description": "leads / clicks as a fraction with 4 decimals; 0 when there were no clicks."
},
"lead_to_active_rate": {
"type": "number",
"description": "active / leads as a fraction with 4 decimals; 0 when there were no leads."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Clicks and resulting new customers grouped by traffic source over a date window of at most 92 days, with the conversion rate per source: answers 'which sources convert best'. A source is the referrer host unless you group by another click attribute such as country or device. Filters: program_id, partner_id. Result fields: window (from, to), dimension, rows (each with key, clicks, conversions, conversion_rate), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
dimension
Click attribute that defines a traffic source. Host and page come from the referrer and landing URLs.
Clear enough to supply this argument.
created_after
Start of the click window: only clicks made at or after this moment count.
Clear enough to supply this argument.
created_before
End of the click window: only clicks made before this moment count.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"window",
"dimension",
"rows",
"has_more"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"clicks",
"conversions",
"conversion_rate"
],
"properties": {
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "One source value, such as a referrer host; null for clicks with no value."
},
"clicks": {
"type": "number",
"description": "Clicks from this source."
},
"conversions": {
"type": "number",
"description": "Distinct customers from those clicks that became active."
},
"conversion_rate": {
"type": "number",
"description": "conversions / clicks as a fraction with 4 decimals."
}
},
"additionalProperties": {}
},
"description": "Sources ranked by conversion rate, then clicks, at most limit rows."
},
"window": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_before as passed: the end of the click window."
},
"from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_after as passed: the start of the click window."
}
},
"description": "The click window the counts cover.",
"additionalProperties": {}
},
"has_more": {
"type": "boolean",
"description": "true when more sources exist than limit returned."
},
"dimension": {
"type": "string",
"description": "The click attribute that defines a source, as passed."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "conversion_by_source",
"title": "Conversion by source",
"description": "Clicks and resulting new customers grouped by traffic source over a date window of at most 92 days, with the conversion rate per source: answers 'which sources convert best'. A source is the referrer host unless you group by another click attribute such as country or device. Filters: program_id, partner_id. Result fields: window (from, to), dimension, rows (each with key, clicks, conversions, conversion_rate), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"created_after",
"created_before"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"dimension": {
"enum": [
"referrer_host",
"country",
"device",
"browser",
"page"
],
"type": "string",
"default": "referrer_host",
"description": "Click attribute that defines a traffic source. Host and page come from the referrer and landing URLs."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of the click window: only clicks made at or after this moment count."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of the click window: only clicks made before this moment count."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"window",
"dimension",
"rows",
"has_more"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"clicks",
"conversions",
"conversion_rate"
],
"properties": {
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "One source value, such as a referrer host; null for clicks with no value."
},
"clicks": {
"type": "number",
"description": "Clicks from this source."
},
"conversions": {
"type": "number",
"description": "Distinct customers from those clicks that became active."
},
"conversion_rate": {
"type": "number",
"description": "conversions / clicks as a fraction with 4 decimals."
}
},
"additionalProperties": {}
},
"description": "Sources ranked by conversion rate, then clicks, at most limit rows."
},
"window": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_before as passed: the end of the click window."
},
"from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "created_after as passed: the start of the click window."
}
},
"description": "The click window the counts cover.",
"additionalProperties": {}
},
"has_more": {
"type": "boolean",
"description": "true when more sources exist than limit returned."
},
"dimension": {
"type": "string",
"description": "The click attribute that defines a source, as passed."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Promotion codes ranked by attributed transaction revenue or new-customer count over a window (list_promotion_codes only shows config). Returns rows with the code's id, code and type, revenue per currency (strings, minor units, refunds excluded), transaction_count and customer_count, plus has_more. Filters: program_id, partner_id, currency, start_date, end_date, sort, order, limit, offset. For a program with more than one currency, pass currency when sorting by revenue so codes are not ranked on amounts summed across currencies. Result fields: data (each with promotion_code_id, code, type, revenue, transaction_count, customer_count), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
currency
Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency.
Clear enough to supply this argument.
start_date
Earliest day to include, by transaction creation date (customers by the day they became active). Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by transaction creation date (customers by the day they became active); the whole day counts. Leave it out for no upper bound.
Clear enough to supply this argument.
sort
revenue ranks codes by revenue from non-refunded transactions that used them; customers by how many non-lead customers are attributed to them.
Clear enough to supply this argument.
order
Ranking direction: desc puts the highest values first.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
offset
Number of rows to skip; add limit to it to fetch the next page.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"promotion_code_id",
"code",
"type",
"revenue",
"transaction_count",
"customer_count"
],
"properties": {
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code, or null."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"revenue": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Revenue from non-refunded transactions that used the code, per currency."
},
"customer_count": {
"type": "number",
"description": "Non-lead customers attributed to the code that became active in the window."
},
"promotion_code_id": {
"type": "string",
"description": "Promotion code id."
},
"transaction_count": {
"type": "number",
"description": "Non-refunded transactions that used the code."
}
},
"additionalProperties": {}
},
"description": "This page of promotion codes, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "top_promotion_codes",
"title": "Top promotion codes",
"description": "Promotion codes ranked by attributed transaction revenue or new-customer count over a window (list_promotion_codes only shows config). Returns rows with the code's id, code and type, revenue per currency (strings, minor units, refunds excluded), transaction_count and customer_count, plus has_more. Filters: program_id, partner_id, currency, start_date, end_date, sort, order, limit, offset. For a program with more than one currency, pass currency when sorting by revenue so codes are not ranked on amounts summed across currencies. Result fields: data (each with promotion_code_id, code, type, revenue, transaction_count, customer_count), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"revenue",
"customers"
],
"type": "string",
"default": "revenue",
"description": "revenue ranks codes by revenue from non-refunded transactions that used them; customers by how many non-lead customers are attributed to them."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Ranking direction: desc puts the highest values first."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of rows to skip; add limit to it to fetch the next page."
},
"currency": {
"type": "string",
"description": "Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by transaction creation date (customers by the day they became active); the whole day counts. Leave it out for no upper bound."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by transaction creation date (customers by the day they became active). Leave it out for no lower bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"promotion_code_id",
"code",
"type",
"revenue",
"transaction_count",
"customer_count"
],
"properties": {
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code, or null."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"revenue": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Revenue from non-refunded transactions that used the code, per currency."
},
"customer_count": {
"type": "number",
"description": "Non-lead customers attributed to the code that became active in the window."
},
"promotion_code_id": {
"type": "string",
"description": "Promotion code id."
},
"transaction_count": {
"type": "number",
"description": "Non-refunded transactions that used the code."
}
},
"additionalProperties": {}
},
"description": "This page of promotion codes, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Campaigns ranked by approved/paid commission count over a window (count is currency-neutral), with per-currency commission amounts, name, and status. Filters: program_id, currency, start_date, end_date, order, limit, offset. Pass currency to scope the amounts to one currency. Result fields: data (each with campaign_id, name, status, commissions, commission_count), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
currency
Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency.
Clear enough to supply this argument.
start_date
Earliest day to include, by commission creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by commission creation date; the whole day counts. Leave it out for no upper bound.
Clear enough to supply this argument.
order
Ranking direction: desc puts the highest values first.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
offset
Number of rows to skip; add limit to it to fetch the next page.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"campaign_id",
"name",
"status",
"commissions",
"commission_count"
],
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Campaign name."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Campaign status as stored, or null."
},
"campaign_id": {
"type": "string",
"description": "Campaign id."
},
"commissions": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Approved and paid commission amounts per currency."
},
"commission_count": {
"type": "number",
"description": "Approved and paid commissions created in the window."
}
},
"additionalProperties": {}
},
"description": "This page of campaigns, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "campaign_performance",
"title": "Campaign performance",
"description": "Campaigns ranked by approved/paid commission count over a window (count is currency-neutral), with per-currency commission amounts, name, and status. Filters: program_id, currency, start_date, end_date, order, limit, offset. Pass currency to scope the amounts to one currency. Result fields: data (each with campaign_id, name, status, commissions, commission_count), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Ranking direction: desc puts the highest values first."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of rows to skip; add limit to it to fetch the next page."
},
"currency": {
"type": "string",
"description": "Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by commission creation date; the whole day counts. Leave it out for no upper bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by commission creation date. Leave it out for no lower bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"campaign_id",
"name",
"status",
"commissions",
"commission_count"
],
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Campaign name."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Campaign status as stored, or null."
},
"campaign_id": {
"type": "string",
"description": "Campaign id."
},
"commissions": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Approved and paid commission amounts per currency."
},
"commission_count": {
"type": "number",
"description": "Approved and paid commissions created in the window."
}
},
"additionalProperties": {}
},
"description": "This page of campaigns, ranked by the requested sort and order."
},
"has_more": {
"type": "boolean",
"description": "true when more rows exist past this page; raise offset by limit to fetch them."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
Align the title with the capability actually described by this tool.
Description98/100
Transaction revenue and count grouped by one payment attribute (dimension) over a window: use it to split recurring from one-time payments, monthly from yearly, or revenue by source or currency. Returns the dimension and rows of {key, amounts per currency (strings, minor units, refunds excluded), transaction_count}, plus has_more. Amounts are kept in per-currency buckets. Filters: dimension, program_id, partner_id, currency, start_date, end_date, limit. For a program with more than one currency, pass currency so the top rows are not ranked across currencies. Result fields: dimension, rows (each with key, amounts, transaction_count), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
dimension
Payment attribute to group revenue by: whether the payment recurs, its billing period, where it came from, or its currency.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
currency
Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency.
Clear enough to supply this argument.
start_date
Earliest day to include, by transaction creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by transaction creation date; the whole day counts. Leave it out for no upper bound.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"dimension",
"rows",
"has_more"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"amounts",
"transaction_count"
],
"properties": {
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "One value of the dimension: a billing type such as subscription or one_time, a billing interval, a source, or an upper-case currency code; null for transactions with no value."
},
"amounts": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Revenue from non-refunded transactions per currency."
},
"transaction_count": {
"type": "number",
"description": "Non-refunded transactions with this value."
}
},
"additionalProperties": {}
},
"description": "Values of the dimension, largest single-currency revenue first, at most limit rows."
},
"has_more": {
"type": "boolean",
"description": "true when more values exist than limit returned."
},
"dimension": {
"type": "string",
"description": "The transaction field grouped by, as passed."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "revenue_by_billing_type",
"title": "Revenue by payment attribute",
"description": "Transaction revenue and count grouped by one payment attribute (dimension) over a window: use it to split recurring from one-time payments, monthly from yearly, or revenue by source or currency. Returns the dimension and rows of {key, amounts per currency (strings, minor units, refunds excluded), transaction_count}, plus has_more. Amounts are kept in per-currency buckets. Filters: dimension, program_id, partner_id, currency, start_date, end_date, limit. For a program with more than one currency, pass currency so the top rows are not ranked across currencies. Result fields: dimension, rows (each with key, amounts, transaction_count), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"currency": {
"type": "string",
"description": "Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by transaction creation date; the whole day counts. Leave it out for no upper bound."
},
"dimension": {
"enum": [
"billing_type",
"interval",
"source",
"currency"
],
"type": "string",
"default": "billing_type",
"description": "Payment attribute to group revenue by: whether the payment recurs, its billing period, where it came from, or its currency."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by transaction creation date. Leave it out for no lower bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"dimension",
"rows",
"has_more"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"amounts",
"transaction_count"
],
"properties": {
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "One value of the dimension: a billing type such as subscription or one_time, a billing interval, a source, or an upper-case currency code; null for transactions with no value."
},
"amounts": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Revenue from non-refunded transactions per currency."
},
"transaction_count": {
"type": "number",
"description": "Non-refunded transactions with this value."
}
},
"additionalProperties": {}
},
"description": "Values of the dimension, largest single-currency revenue first, at most limit rows."
},
"has_more": {
"type": "boolean",
"description": "true when more values exist than limit returned."
},
"dimension": {
"type": "string",
"description": "The transaction field grouped by, as passed."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Transaction revenue and count grouped by product (from transactions.product_names), as a capped top-N with per-currency amount buckets. Use for 'which products drive the most affiliate revenue'. A transaction with multiple products counts toward each. Filters: program_id, partner_id, currency, start_date, end_date, limit. For a program with more than one currency, pass currency so the top rows are not ranked across currencies. Result fields: data (each with product, revenue, transaction_count), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
currency
Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency.
Clear enough to supply this argument.
start_date
Earliest day to include, by transaction creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by transaction creation date; the whole day counts. Leave it out for no upper bound.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"product",
"revenue",
"transaction_count"
],
"properties": {
"product": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Product name from the transactions' product_names."
},
"revenue": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Revenue from non-refunded transactions that include the product, per currency."
},
"transaction_count": {
"type": "number",
"description": "Non-refunded transactions that include the product."
}
},
"additionalProperties": {}
},
"description": "The top products by revenue, at most limit rows."
},
"has_more": {
"type": "boolean",
"description": "true when more groups exist than limit returned."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "revenue_by_product",
"title": "Revenue by product",
"description": "Transaction revenue and count grouped by product (from transactions.product_names), as a capped top-N with per-currency amount buckets. Use for 'which products drive the most affiliate revenue'. A transaction with multiple products counts toward each. Filters: program_id, partner_id, currency, start_date, end_date, limit. For a program with more than one currency, pass currency so the top rows are not ranked across currencies. Result fields: data (each with product, revenue, transaction_count), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"currency": {
"type": "string",
"description": "Only include transactions and commissions in this currency, such as USD, matched case-insensitively against the row's currency or, if it has none, its program's currency."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by transaction creation date; the whole day counts. Leave it out for no upper bound."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by transaction creation date. Leave it out for no lower bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"product",
"revenue",
"transaction_count"
],
"properties": {
"product": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Product name from the transactions' product_names."
},
"revenue": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Summed amount in this currency, as a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code of this bucket: the row's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Revenue from non-refunded transactions that include the product, per currency."
},
"transaction_count": {
"type": "number",
"description": "Non-refunded transactions that include the product."
}
},
"additionalProperties": {}
},
"description": "The top products by revenue, at most limit rows."
},
"has_more": {
"type": "boolean",
"description": "true when more groups exist than limit returned."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Customer counts grouped by plan (optionally filtered by status), as a capped top-N. Returns rows of {plan, count}, plus has_more. Filters: program_id, status, start_date, end_date, limit. Result fields: data (each with plan, count), has_more.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
status
Keep only customers at this lifecycle stage, from signed-up leads through trials to paying, canceled or suspended customers. Leave it out to include every stage.
Clear enough to supply this argument.
start_date
Earliest day to include, by customer creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by customer creation date; the whole day counts. Leave it out for no upper bound.
Clear enough to supply this argument.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"plan",
"count"
],
"properties": {
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name; null for customers with no plan."
},
"count": {
"type": "number",
"description": "Customers on the plan."
}
},
"additionalProperties": {}
},
"description": "The top plans by customer count, at most limit rows."
},
"has_more": {
"type": "boolean",
"description": "true when more groups exist than limit returned."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "customers_by_plan",
"title": "Customers by plan",
"description": "Customer counts grouped by plan (optionally filtered by status), as a capped top-N. Returns rows of {plan, count}, plus has_more. Filters: program_id, status, start_date, end_date, limit. Result fields: data (each with plan, count), has_more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"status": {
"enum": [
"lead",
"active",
"canceled",
"suspended",
"trialing"
],
"type": "string",
"description": "Keep only customers at this lifecycle stage, from signed-up leads through trials to paying, canceled or suspended customers. Leave it out to include every stage."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by customer creation date; the whole day counts. Leave it out for no upper bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by customer creation date. Leave it out for no lower bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"plan",
"count"
],
"properties": {
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name; null for customers with no plan."
},
"count": {
"type": "number",
"description": "Customers on the plan."
}
},
"additionalProperties": {}
},
"description": "The top plans by customer count, at most limit rows."
},
"has_more": {
"type": "boolean",
"description": "true when more groups exist than limit returned."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Payouts grouped by status, method, and currency with payout count and summed money (derived from the linked commissions, since payouts has no amount column). Returns by_bucket rows of {status, method, currency, payout_count, total_amount (string, minor units)}. Filters: program_id, period, method, status, paid_after, paid_before, start_date, end_date. Result fields: by_bucket (each with status, method, currency, payout_count, total_amount).
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
period
Commission period a payout covers, written as start and end dates like 2026-08-01 - 2026-08-31 and matched exactly; read it from a payout first.
Clear enough to supply this argument.
method
How the payouts are sent to partners, such as paypal, bank_transfer, wise, crypto or wire, matched exactly.
Clear enough to supply this argument.
status
Only payouts in this status, matched exactly against the stored value, such as paid.
Clear enough to supply this argument.
paid_after
Start of a window on when payouts were paid: only payouts paid at this time or later, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
paid_before
End of a window on when payouts were paid: only payouts paid before this time. Leave it out for no upper bound.
Clear enough to supply this argument.
start_date
Earliest day to include, by payout creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by payout creation date; the whole day counts. Leave it out for no upper bound.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"by_bucket"
],
"properties": {
"by_bucket": {
"type": "array",
"items": {
"type": "object",
"required": [
"status",
"method",
"currency",
"payout_count",
"total_amount"
],
"properties": {
"method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout method as stored, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout status as stored, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code: the commission's own currency, else the payout's program currency, else USD."
},
"payout_count": {
"type": "number",
"description": "Distinct payouts in this bucket."
},
"total_amount": {
"type": "string",
"description": "Summed amount of their commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
},
"description": "Payouts grouped by status, method and currency."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "payout_summary",
"title": "Payout summary",
"description": "Payouts grouped by status, method, and currency with payout count and summed money (derived from the linked commissions, since payouts has no amount column). Returns by_bucket rows of {status, method, currency, payout_count, total_amount (string, minor units)}. Filters: program_id, period, method, status, paid_after, paid_before, start_date, end_date. Result fields: by_bucket (each with status, method, currency, payout_count, total_amount).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"method": {
"type": "string",
"description": "How the payouts are sent to partners, such as paypal, bank_transfer, wise, crypto or wire, matched exactly."
},
"period": {
"type": "string",
"description": "Commission period a payout covers, written as start and end dates like 2026-08-01 - 2026-08-31 and matched exactly; read it from a payout first."
},
"status": {
"type": "string",
"description": "Only payouts in this status, matched exactly against the stored value, such as paid."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by payout creation date; the whole day counts. Leave it out for no upper bound."
},
"paid_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when payouts were paid: only payouts paid at this time or later, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by payout creation date. Leave it out for no lower bound."
},
"paid_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when payouts were paid: only payouts paid before this time. Leave it out for no upper bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"by_bucket"
],
"properties": {
"by_bucket": {
"type": "array",
"items": {
"type": "object",
"required": [
"status",
"method",
"currency",
"payout_count",
"total_amount"
],
"properties": {
"method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout method as stored, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout status as stored, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Upper-case currency code: the commission's own currency, else the payout's program currency, else USD."
},
"payout_count": {
"type": "number",
"description": "Distinct payouts in this bucket."
},
"total_amount": {
"type": "string",
"description": "Summed amount of their commissions, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
},
"description": "Payouts grouped by status, method and currency."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Invoices grouped by status and currency: count and summed total_amount / base_amount / processing_fee_amount / payout_count. Returns by_status rows of {status, currency, invoice_count, total_amount, base_amount, processing_fee_amount (strings, USD minor units), payout_count}. Filters: program_id, type, payment_method, start_date, end_date. Result fields: by_status (each with status, currency, invoice_count, total_amount, base_amount, processing_fee_amount, payout_count).
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
type
Kind of invoice: off_cycle for invoices created outside the regular payout schedule. Regular payout invoices have no type, so leave it out to include them.
Clear enough to supply this argument.
payment_method
How the invoice is paid, matched exactly against the stored value, such as card, us_bank_account or custom.
Clear enough to supply this argument.
start_date
Earliest day to include, by invoice creation date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by invoice creation date; the whole day counts. Leave it out for no upper bound.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"by_status"
],
"properties": {
"by_status": {
"type": "array",
"items": {
"type": "object",
"required": [
"status",
"currency",
"invoice_count",
"total_amount",
"base_amount",
"processing_fee_amount",
"payout_count"
],
"properties": {
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice status as stored, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice currency code."
},
"base_amount": {
"type": "string",
"description": "Summed payouts subtotal, in USD minor units, as a numeric string."
},
"payout_count": {
"type": "number",
"description": "Summed payout count of those invoices."
},
"total_amount": {
"type": "string",
"description": "Summed total due, in USD minor units, as a numeric string."
},
"invoice_count": {
"type": "number",
"description": "Invoices in this bucket."
},
"processing_fee_amount": {
"type": "string",
"description": "Summed processing fees, in USD minor units, as a numeric string."
}
},
"additionalProperties": {}
},
"description": "Invoices grouped by status and currency."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "invoice_totals",
"title": "Invoice totals",
"description": "Invoices grouped by status and currency: count and summed total_amount / base_amount / processing_fee_amount / payout_count. Returns by_status rows of {status, currency, invoice_count, total_amount, base_amount, processing_fee_amount (strings, USD minor units), payout_count}. Filters: program_id, type, payment_method, start_date, end_date. Result fields: by_status (each with status, currency, invoice_count, total_amount, base_amount, processing_fee_amount, payout_count).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"type": {
"type": "string",
"description": "Kind of invoice: off_cycle for invoices created outside the regular payout schedule. Regular payout invoices have no type, so leave it out to include them."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by invoice creation date; the whole day counts. Leave it out for no upper bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by invoice creation date. Leave it out for no lower bound."
},
"payment_method": {
"type": "string",
"description": "How the invoice is paid, matched exactly against the stored value, such as card, us_bank_account or custom."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"by_status"
],
"properties": {
"by_status": {
"type": "array",
"items": {
"type": "object",
"required": [
"status",
"currency",
"invoice_count",
"total_amount",
"base_amount",
"processing_fee_amount",
"payout_count"
],
"properties": {
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice status as stored, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice currency code."
},
"base_amount": {
"type": "string",
"description": "Summed payouts subtotal, in USD minor units, as a numeric string."
},
"payout_count": {
"type": "number",
"description": "Summed payout count of those invoices."
},
"total_amount": {
"type": "string",
"description": "Summed total due, in USD minor units, as a numeric string."
},
"invoice_count": {
"type": "number",
"description": "Invoices in this bucket."
},
"processing_fee_amount": {
"type": "string",
"description": "Summed processing fees, in USD minor units, as a numeric string."
}
},
"additionalProperties": {}
},
"description": "Invoices grouped by status and currency."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Finance cross-checks between commissions, payouts, and invoices: outstanding approved-but-unpaid liability by currency, plus integrity anomalies (commissions marked paid with no payout link, payouts in a paid state with no invoice link). Returns approved_unpaid_liability and paid_commissions_without_payout as rows of {currency, amount (string, minor units), count}, and paid_payouts_without_invoice as a count. Filter: program_id. Result fields: paid_commissions_without_payout (each with currency, amount, count), approved_unpaid_liability (each with currency, amount, count), paid_payouts_without_invoice.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"paid_commissions_without_payout",
"approved_unpaid_liability",
"paid_payouts_without_invoice"
],
"properties": {
"approved_unpaid_liability": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount",
"count"
],
"properties": {
"count": {
"type": "number",
"description": "Number of commissions in this bucket."
},
"amount": {
"type": "string",
"description": "Summed commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"type": "string",
"description": "Upper-case currency code: the commission's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Approved commissions not yet attached to a payout: the outstanding liability, per currency."
},
"paid_payouts_without_invoice": {
"type": "number",
"description": "Payouts in a paid state (paid, completed or success) that are linked to no invoice."
},
"paid_commissions_without_payout": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount",
"count"
],
"properties": {
"count": {
"type": "number",
"description": "Number of commissions in this bucket."
},
"amount": {
"type": "string",
"description": "Summed commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"type": "string",
"description": "Upper-case currency code: the commission's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Commissions marked paid that are not linked to a payout, per currency."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "reconciliation_check",
"title": "Commission reconciliation",
"description": "Finance cross-checks between commissions, payouts, and invoices: outstanding approved-but-unpaid liability by currency, plus integrity anomalies (commissions marked paid with no payout link, payouts in a paid state with no invoice link). Returns approved_unpaid_liability and paid_commissions_without_payout as rows of {currency, amount (string, minor units), count}, and paid_payouts_without_invoice as a count. Filter: program_id. Result fields: paid_commissions_without_payout (each with currency, amount, count), approved_unpaid_liability (each with currency, amount, count), paid_payouts_without_invoice.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"paid_commissions_without_payout",
"approved_unpaid_liability",
"paid_payouts_without_invoice"
],
"properties": {
"approved_unpaid_liability": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount",
"count"
],
"properties": {
"count": {
"type": "number",
"description": "Number of commissions in this bucket."
},
"amount": {
"type": "string",
"description": "Summed commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"type": "string",
"description": "Upper-case currency code: the commission's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Approved commissions not yet attached to a payout: the outstanding liability, per currency."
},
"paid_payouts_without_invoice": {
"type": "number",
"description": "Payouts in a paid state (paid, completed or success) that are linked to no invoice."
},
"paid_commissions_without_payout": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"amount",
"count"
],
"properties": {
"count": {
"type": "number",
"description": "Number of commissions in this bucket."
},
"amount": {
"type": "string",
"description": "Summed commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
},
"currency": {
"type": "string",
"description": "Upper-case currency code: the commission's own currency, else its program's currency, else USD."
}
},
"additionalProperties": {}
},
"description": "Commissions marked paid that are not linked to a payout, per currency."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Manual-submission lead queue sized up: counts and summed potential_value by status, plus the top rejection reasons. Returns by_status rows with counts and potential value, top_rejection_reasons, total_count, and total_potential_value per currency (strings, minor units). Filters: program_id, partner_id, enabled, start_date, end_date. Result fields: by_status (each with status, currency, count, potential_value), top_rejection_reasons (each with reason, count), total_count, total_potential_value (each with currency, potential_value).
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
enabled
Filter on the lead's enabled flag. Leads are created enabled and the Tolt apps do not change the flag, so leave it out unless you are looking for leads disabled outside the apps.
Clear enough to supply this argument.
start_date
Earliest day to include, by submission date. Leave it out for no lower bound.
Clear enough to supply this argument.
end_date
Latest day to include, by submission date; the whole day counts. Leave it out for no upper bound.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"by_status",
"top_rejection_reasons",
"total_count",
"total_potential_value"
],
"properties": {
"by_status": {
"type": "array",
"items": {
"type": "object",
"required": [
"status",
"currency",
"count",
"potential_value"
],
"properties": {
"count": {
"type": "number",
"description": "Submitted leads in this bucket."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Review status as stored, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The program's currency code as stored, or null."
},
"potential_value": {
"type": "string",
"description": "Summed potential value, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
},
"description": "Submitted leads grouped by status and program currency."
},
"total_count": {
"type": "number",
"description": "All submitted leads matching the filters."
},
"top_rejection_reasons": {
"type": "array",
"items": {
"type": "object",
"required": [
"reason",
"count"
],
"properties": {
"count": {
"type": "number",
"description": "Leads rejected for it."
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Rejection reason."
}
},
"additionalProperties": {}
},
"description": "Up to 20 most common rejection reasons."
},
"total_potential_value": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"potential_value"
],
"properties": {
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The program's currency code as stored, or null."
},
"potential_value": {
"type": "string",
"description": "Summed potential value, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
},
"description": "Summed potential value per currency."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "submitted_leads_overview",
"title": "Submitted leads overview",
"description": "Manual-submission lead queue sized up: counts and summed potential_value by status, plus the top rejection reasons. Returns by_status rows with counts and potential value, top_rejection_reasons, total_count, and total_potential_value per currency (strings, minor units). Filters: program_id, partner_id, enabled, start_date, end_date. Result fields: by_status (each with status, currency, count, potential_value), top_rejection_reasons (each with reason, count), total_count, total_potential_value (each with currency, potential_value).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"enabled": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "Filter on the lead's enabled flag. Leads are created enabled and the Tolt apps do not change the flag, so leave it out unless you are looking for leads disabled outside the apps."
},
"end_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Latest day to include, by submission date; the whole day counts. Leave it out for no upper bound."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Earliest day to include, by submission date. Leave it out for no lower bound."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"by_status",
"top_rejection_reasons",
"total_count",
"total_potential_value"
],
"properties": {
"by_status": {
"type": "array",
"items": {
"type": "object",
"required": [
"status",
"currency",
"count",
"potential_value"
],
"properties": {
"count": {
"type": "number",
"description": "Submitted leads in this bucket."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Review status as stored, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The program's currency code as stored, or null."
},
"potential_value": {
"type": "string",
"description": "Summed potential value, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
},
"description": "Submitted leads grouped by status and program currency."
},
"total_count": {
"type": "number",
"description": "All submitted leads matching the filters."
},
"top_rejection_reasons": {
"type": "array",
"items": {
"type": "object",
"required": [
"reason",
"count"
],
"properties": {
"count": {
"type": "number",
"description": "Leads rejected for it."
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Rejection reason."
}
},
"additionalProperties": {}
},
"description": "Up to 20 most common rejection reasons."
},
"total_potential_value": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"potential_value"
],
"properties": {
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The program's currency code as stored, or null."
},
"potential_value": {
"type": "string",
"description": "Summed potential value, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99)."
}
},
"additionalProperties": {}
},
"description": "Summed potential value per currency."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
One page of partners. Partners still finishing onboarding are listed only when completed_onboarding is false. Filters: status, program_id, group_id, completed_onboarding, tax_form_status, search (id/email/name/company). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, email, first_name, last_name, company_name, status, group_id, program_id, country_code, website_url, display_name, completed_onboarding, created_at, updated_at, rejected_at, suspended_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs90/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
status
Keep only partners at this review stage; an approved partner's stage is active.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
group_id
Limit to partners in one group, by the group id (grp_...) as returned when listing groups.
Clear enough to supply this argument.
search
Case-insensitive text matched anywhere in the partner's id, email, first name, last name or company name.
Clear enough to supply this argument.
completed_onboarding
Defaults to true (only onboarded partners). Set false to see partners who have not finished onboarding.
Clear enough to supply this argument.
tax_form_status
Where the partner stands on tax forms: submitted when they have sent one, not_required when the program does not need one.
Resolve the mismatch between this description and its schema constraints.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"email",
"first_name",
"last_name",
"company_name",
"status",
"group_id",
"program_id",
"country_code",
"website_url",
"display_name",
"completed_onboarding",
"created_at",
"updated_at",
"rejected_at",
"suspended_at"
],
"properties": {
"id": {
"type": "string",
"description": "Partner id (part_...)."
},
"email": {
"type": "string",
"description": "Partner's email."
},
"status": {
"type": "string",
"description": "Review status: active (approved), pending, rejected or suspended."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner's group (grp_...), or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"created_at": {
"type": "string",
"description": "When the partner was created, as an ISO 8601 timestamp."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the partner last changed, as an ISO 8601 timestamp."
},
"rejected_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was rejected, as an ISO 8601 timestamp, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's website, or null."
},
"company_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's company, or null."
},
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's country code, or null."
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name shown for the partner in the dashboard, or null."
},
"suspended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was suspended, as an ISO 8601 timestamp, or null."
},
"completed_onboarding": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the partner finished onboarding; only onboarded partners can be approved or rejected."
}
},
"additionalProperties": {}
},
"description": "This page of partners, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_partners",
"title": "List partners",
"description": "One page of partners. Partners still finishing onboarding are listed only when completed_onboarding is false. Filters: status, program_id, group_id, completed_onboarding, tax_form_status, search (id/email/name/company). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, email, first_name, last_name, company_name, status, group_id, program_id, country_code, website_url, display_name, completed_onboarding, created_at, updated_at, rejected_at, suspended_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"search": {
"type": "string",
"description": "Case-insensitive text matched anywhere in the partner's id, email, first name, last name or company name."
},
"status": {
"enum": [
"active",
"pending",
"rejected",
"suspended"
],
"type": "string",
"description": "Keep only partners at this review stage; an approved partner's stage is active."
},
"group_id": {
"type": "string",
"description": "Limit to partners in one group, by the group id (grp_...) as returned when listing groups."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
},
"tax_form_status": {
"type": "string",
"description": "Where the partner stands on tax forms: submitted when they have sent one, not_required when the program does not need one."
},
"completed_onboarding": {
"type": "boolean",
"description": "Defaults to true (only onboarded partners). Set false to see partners who have not finished onboarding."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"email",
"first_name",
"last_name",
"company_name",
"status",
"group_id",
"program_id",
"country_code",
"website_url",
"display_name",
"completed_onboarding",
"created_at",
"updated_at",
"rejected_at",
"suspended_at"
],
"properties": {
"id": {
"type": "string",
"description": "Partner id (part_...)."
},
"email": {
"type": "string",
"description": "Partner's email."
},
"status": {
"type": "string",
"description": "Review status: active (approved), pending, rejected or suspended."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner's group (grp_...), or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"created_at": {
"type": "string",
"description": "When the partner was created, as an ISO 8601 timestamp."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the partner last changed, as an ISO 8601 timestamp."
},
"rejected_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was rejected, as an ISO 8601 timestamp, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's website, or null."
},
"company_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's company, or null."
},
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's country code, or null."
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name shown for the partner in the dashboard, or null."
},
"suspended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was suspended, as an ISO 8601 timestamp, or null."
},
"completed_onboarding": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the partner finished onboarding; only onboarded partners can be approved or rejected."
}
},
"additionalProperties": {}
},
"description": "This page of partners, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
One page of customers. Each row has the customer's id, identifier, email, name, status, plan, the referring partner, link, click and promotion code, and lead and conversion dates. Filters: program_id, partner_id, customer_id, status, search (email/name/identifier), click_id, link_id. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, customer_id, identifier, email, name, status, plan, subscription_id, partner_id, program_id, link_id, promotion_code_id, click_id, lead_at, active_at, created_at, updated_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Clear enough to supply this argument.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
customer_id
Exact match on the customer's customer_id field, the id the customer has in your own system or billing provider; not the Tolt customer id.
Clear enough to supply this argument.
status
Keep only customers at this lifecycle stage, from signed-up leads through trials to paying, canceled or suspended customers. Leave it out to include every stage.
Clear enough to supply this argument.
search
Case-insensitive text matched anywhere in the customer's email, name, identifier or customer_id.
Clear enough to supply this argument.
click_id
Only the customers attributed to this click, by its id (clk_...).
Clear enough to supply this argument.
link_id
Only customers attributed to this referral link (lnk_...), directly or through one of its clicks.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"customer_id",
"identifier",
"email",
"name",
"status",
"plan",
"subscription_id",
"partner_id",
"program_id",
"link_id",
"promotion_code_id",
"click_id",
"lead_at",
"active_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Tolt customer id (cus_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's name, or null."
},
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name the customer is on, or null."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's email, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle stage: lead (signed up, not paying), trialing, active (paying), canceled or suspended."
},
"lead_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became a lead, as an ISO 8601 timestamp, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link the customer came through (lnk_...), or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click the customer came from, or null."
},
"active_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became active (paying), as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the customer was created, as an ISO 8601 timestamp."
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier the customer was recorded with, such as their email, or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referring partner (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the customer last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The customer's id in the merchant's own system or billing provider, or null."
},
"subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Subscription id in the billing provider, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code the customer is attributed to (promo_...), or null."
}
},
"additionalProperties": {}
},
"description": "This page of customers, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_customers",
"title": "List customers",
"description": "One page of customers. Each row has the customer's id, identifier, email, name, status, plan, the referring partner, link, click and promotion code, and lead and conversion dates. Filters: program_id, partner_id, customer_id, status, search (email/name/identifier), click_id, link_id. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, customer_id, identifier, email, name, status, plan, subscription_id, partner_id, program_id, link_id, promotion_code_id, click_id, lead_at, active_at, created_at, updated_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"search": {
"type": "string",
"description": "Case-insensitive text matched anywhere in the customer's email, name, identifier or customer_id."
},
"status": {
"enum": [
"lead",
"active",
"canceled",
"suspended",
"trialing"
],
"type": "string",
"description": "Keep only customers at this lifecycle stage, from signed-up leads through trials to paying, canceled or suspended customers. Leave it out to include every stage."
},
"link_id": {
"type": "string",
"description": "Only customers attributed to this referral link (lnk_...), directly or through one of its clicks."
},
"click_id": {
"type": "string",
"description": "Only the customers attributed to this click, by its id (clk_...)."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"customer_id": {
"type": "string",
"description": "Exact match on the customer's customer_id field, the id the customer has in your own system or billing provider; not the Tolt customer id."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"customer_id",
"identifier",
"email",
"name",
"status",
"plan",
"subscription_id",
"partner_id",
"program_id",
"link_id",
"promotion_code_id",
"click_id",
"lead_at",
"active_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Tolt customer id (cus_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's name, or null."
},
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name the customer is on, or null."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's email, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle stage: lead (signed up, not paying), trialing, active (paying), canceled or suspended."
},
"lead_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became a lead, as an ISO 8601 timestamp, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link the customer came through (lnk_...), or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click the customer came from, or null."
},
"active_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became active (paying), as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the customer was created, as an ISO 8601 timestamp."
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier the customer was recorded with, such as their email, or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referring partner (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the customer last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The customer's id in the merchant's own system or billing provider, or null."
},
"subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Subscription id in the billing provider, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code the customer is attributed to (promo_...), or null."
}
},
"additionalProperties": {}
},
"description": "This page of customers, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
One page of commissions. Filters: program_id, partner_id, customer_id, transaction_id, status, type, currency, source, is_self_referral, is_ad_click, unpaid_only, search (id/charge_id). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, amount, currency, revenue, status, type, source, partner_id, customer_id, program_id, transaction_id, payout_id, charge_id, charge_status, is_ad_click, is_self_referral, approval_type, scheduled_approval_date, created_at, updated_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
customer_id
Only commissions for this customer, by Tolt customer id (cus_...) as returned when listing customers.
Clear enough to supply this argument.
transaction_id
Only commissions linked to this transaction, by its id (txn_...).
Clear enough to supply this argument.
status
Only commissions in this status, matched exactly, such as pending, approved or paid.
Clear enough to supply this argument.
type
Only commissions whose type equals this stored value exactly.
Clear enough to supply this argument.
search
Case-insensitive text matched anywhere in the commission id or its charge_id.
Clear enough to supply this argument.
currency
Only commissions whose stored currency equals this value exactly; the match is case-sensitive.
Clear enough to supply this argument.
source
Only commissions whose source equals this stored value exactly.
Clear enough to supply this argument.
is_self_referral
true for commissions flagged as self-referrals, where the partner referred themselves; false for unflagged ones.
Clear enough to supply this argument.
is_ad_click
true for commissions flagged as coming from a paid ad click; false for unflagged ones.
Clear enough to supply this argument.
unpaid_only
true keeps only commissions not yet attached to a payout.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"amount",
"currency",
"revenue",
"status",
"type",
"source",
"partner_id",
"customer_id",
"program_id",
"transaction_id",
"payout_id",
"charge_id",
"charge_status",
"is_ad_click",
"is_self_referral",
"approval_type",
"scheduled_approval_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Commission id (comm_...)."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission type as stored, such as reward, fixed or percentage, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the commission came from as stored, such as stripe, paddle or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "pending (awaiting approval), approved (paid in the next payout run), paid, rejected or refunded."
},
"revenue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Revenue the commission was earned on, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in the same currency as amount, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the commission; null means the program's currency."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"payout_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payout it was paid in (pout_...), or null while unpaid."
},
"created_at": {
"type": "string",
"description": "When the commission was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who earned it (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the commission last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"is_ad_click": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as coming from a paid ad click."
},
"approval_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the commission is approved as stored, such as manual or immediate, or null."
},
"charge_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Status of that charge as stored (for example refunded), or null."
},
"transaction_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the transaction it was earned on (txn_...), or null."
},
"is_self_referral": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as a self-referral, where the partner referred themselves."
},
"scheduled_approval_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When a pending commission is scheduled to be approved, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
},
"description": "This page of commissions, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_commissions",
"title": "List commissions",
"description": "One page of commissions. Filters: program_id, partner_id, customer_id, transaction_id, status, type, currency, source, is_self_referral, is_ad_click, unpaid_only, search (id/charge_id). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, amount, currency, revenue, status, type, source, partner_id, customer_id, program_id, transaction_id, payout_id, charge_id, charge_status, is_ad_click, is_self_referral, approval_type, scheduled_approval_date, created_at, updated_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"type": {
"type": "string",
"description": "Only commissions whose type equals this stored value exactly."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"search": {
"type": "string",
"description": "Case-insensitive text matched anywhere in the commission id or its charge_id."
},
"source": {
"type": "string",
"description": "Only commissions whose source equals this stored value exactly."
},
"status": {
"type": "string",
"description": "Only commissions in this status, matched exactly, such as pending, approved or paid."
},
"currency": {
"type": "string",
"description": "Only commissions whose stored currency equals this value exactly; the match is case-sensitive."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"customer_id": {
"type": "string",
"description": "Only commissions for this customer, by Tolt customer id (cus_...) as returned when listing customers."
},
"is_ad_click": {
"type": "boolean",
"description": "true for commissions flagged as coming from a paid ad click; false for unflagged ones."
},
"unpaid_only": {
"type": "boolean",
"description": "true keeps only commissions not yet attached to a payout."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"transaction_id": {
"type": "string",
"description": "Only commissions linked to this transaction, by its id (txn_...)."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
},
"is_self_referral": {
"type": "boolean",
"description": "true for commissions flagged as self-referrals, where the partner referred themselves; false for unflagged ones."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"amount",
"currency",
"revenue",
"status",
"type",
"source",
"partner_id",
"customer_id",
"program_id",
"transaction_id",
"payout_id",
"charge_id",
"charge_status",
"is_ad_click",
"is_self_referral",
"approval_type",
"scheduled_approval_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Commission id (comm_...)."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission type as stored, such as reward, fixed or percentage, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the commission came from as stored, such as stripe, paddle or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "pending (awaiting approval), approved (paid in the next payout run), paid, rejected or refunded."
},
"revenue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Revenue the commission was earned on, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in the same currency as amount, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the commission; null means the program's currency."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"payout_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payout it was paid in (pout_...), or null while unpaid."
},
"created_at": {
"type": "string",
"description": "When the commission was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who earned it (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the commission last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"is_ad_click": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as coming from a paid ad click."
},
"approval_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the commission is approved as stored, such as manual or immediate, or null."
},
"charge_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Status of that charge as stored (for example refunded), or null."
},
"transaction_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the transaction it was earned on (txn_...), or null."
},
"is_self_referral": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as a self-referral, where the partner referred themselves."
},
"scheduled_approval_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When a pending commission is scheduled to be approved, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
},
"description": "This page of commissions, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
One page of transactions. Each row has the transaction's amounts with and without tax (strings, minor units), currency, status, source, billing type, interval, products, promotion code, charge id, and its partner, customer and program. Filters: program_id, partner_id, customer_id, status, currency, search (id/charge_id). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Clear enough to supply this argument.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
customer_id
Only transactions from this customer, by Tolt customer id (cus_...) as returned when listing customers.
Clear enough to supply this argument.
status
Only transactions in this status, matched exactly, such as paid or refunded.
Clear enough to supply this argument.
search
Case-insensitive text matched anywhere in the transaction id or its charge_id.
Clear enough to supply this argument.
currency
Only transactions whose stored currency equals this value exactly; the match is case-sensitive.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"additionalProperties": {}
},
"description": "This page of transactions, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_transactions",
"title": "List transactions",
"description": "One page of transactions. Each row has the transaction's amounts with and without tax (strings, minor units), currency, status, source, billing type, interval, products, promotion code, charge id, and its partner, customer and program. Filters: program_id, partner_id, customer_id, status, currency, search (id/charge_id). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"search": {
"type": "string",
"description": "Case-insensitive text matched anywhere in the transaction id or its charge_id."
},
"status": {
"type": "string",
"description": "Only transactions in this status, matched exactly, such as paid or refunded."
},
"currency": {
"type": "string",
"description": "Only transactions whose stored currency equals this value exactly; the match is case-sensitive."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"customer_id": {
"type": "string",
"description": "Only transactions from this customer, by Tolt customer id (cus_...) as returned when listing customers."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"additionalProperties": {}
},
"description": "This page of transactions, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
One page of raw click events. Each row has the click's id, page, referrer, device, browser, country and state, its link, partner and program, and when it happened. REQUIRES a partner_id or link_id filter (the clicks table is very large). Filters: program_id, partner_id, link_id, country, device, browser, referrer_contains. For click totals, trends, or source breakdowns use clicks_breakdown or performance_timeseries instead. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, page, referrer, device, browser, country, state, link_id, program_id, partner_id, created_at, updated_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
link_id
Limit to one referral link, by its id (lnk_...) as returned when listing links.
Clear enough to supply this argument.
country
Filter by the click's stored country, matched exactly (values are not normalized). Clicks recorded by the tracking script store a country name (e.g. `Canada`); clicks created through the API store a 2-letter ISO code (e.g. `CA`). Filter by the exact form you expect.
Clear enough to supply this argument.
device
Device type, e.g. `desktop`, `mobile` or `tablet`.
Clear enough to supply this argument.
browser
Browser name, matched exactly.
Clear enough to supply this argument.
referrer_contains
Case-insensitive substring match on the click's referrer URL, e.g. `google`.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"page",
"referrer",
"device",
"browser",
"country",
"state",
"link_id",
"program_id",
"partner_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Click id."
},
"page": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL the visitor landed on, or null."
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Region or state, or null."
},
"device": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Device type, such as desktop, mobile or tablet, or null."
},
"browser": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Browser name, or null."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Country as stored: a name for clicks from the tracking script, a 2-letter code for clicks created through the API, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link clicked (lnk_...), or null."
},
"referrer": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Referrer URL, or null."
},
"created_at": {
"type": "string",
"description": "When the click was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the click is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the click last changed, as an ISO 8601 timestamp."
}
},
"additionalProperties": {}
},
"description": "This page of clicks, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_clicks",
"title": "List clicks",
"description": "One page of raw click events. Each row has the click's id, page, referrer, device, browser, country and state, its link, partner and program, and when it happened. REQUIRES a partner_id or link_id filter (the clicks table is very large). Filters: program_id, partner_id, link_id, country, device, browser, referrer_contains. For click totals, trends, or source breakdowns use clicks_breakdown or performance_timeseries instead. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, page, referrer, device, browser, country, state, link_id, program_id, partner_id, created_at, updated_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"device": {
"type": "string",
"minLength": 1,
"description": "Device type, e.g. `desktop`, `mobile` or `tablet`."
},
"browser": {
"type": "string",
"minLength": 1,
"description": "Browser name, matched exactly."
},
"country": {
"type": "string",
"minLength": 1,
"description": "Filter by the click's stored country, matched exactly (values are not normalized). Clicks recorded by the tracking script store a country name (e.g. `Canada`); clicks created through the API store a 2-letter ISO code (e.g. `CA`). Filter by the exact form you expect."
},
"link_id": {
"type": "string",
"description": "Limit to one referral link, by its id (lnk_...) as returned when listing links."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
},
"referrer_contains": {
"type": "string",
"minLength": 1,
"description": "Case-insensitive substring match on the click's referrer URL, e.g. `google`."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"page",
"referrer",
"device",
"browser",
"country",
"state",
"link_id",
"program_id",
"partner_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Click id."
},
"page": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL the visitor landed on, or null."
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Region or state, or null."
},
"device": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Device type, such as desktop, mobile or tablet, or null."
},
"browser": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Browser name, or null."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Country as stored: a name for clicks from the tracking script, a 2-letter code for clicks created through the API, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link clicked (lnk_...), or null."
},
"referrer": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Referrer URL, or null."
},
"created_at": {
"type": "string",
"description": "When the click was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the click is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the click last changed, as an ISO 8601 timestamp."
}
},
"additionalProperties": {}
},
"description": "This page of clicks, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
One page of referral links (campaign links excluded). Each row has the link's id, param and value, status, partner, program and campaign, and when it was created and changed. Filters: program_id, partner_id, param, value, search (value/param). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
param
Only links using this URL parameter name exactly, such as `ref` in `?ref=sam`.
Clear enough to supply this argument.
value
Only links with this exact slug, such as `sam` in `?ref=sam`.
Clear enough to supply this argument.
search
Case-insensitive text matched anywhere in the link's slug (value) or parameter name.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"additionalProperties": {}
},
"description": "This page of referral links, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_links",
"title": "List links",
"description": "One page of referral links (campaign links excluded). Each row has the link's id, param and value, status, partner, program and campaign, and when it was created and changed. Filters: program_id, partner_id, param, value, search (value/param). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"param": {
"type": "string",
"description": "Only links using this URL parameter name exactly, such as `ref` in `?ref=sam`."
},
"value": {
"type": "string",
"description": "Only links with this exact slug, such as `sam` in `?ref=sam`."
},
"search": {
"type": "string",
"description": "Case-insensitive text matched anywhere in the link's slug (value) or parameter name."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"additionalProperties": {}
},
"description": "This page of referral links, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
One page of promotion codes. Each row has the code, discount type and value, duration, whether it is active, and its partner, group or program. Filters: program_id, partner_id, type, search (code). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, code, type, value, duration, duration_in_months, active, entity_type, external_id, partner_id, program_id, group_id, created_at, updated_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Clear enough to supply this argument.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
type
Only codes giving this kind of discount: a fixed amount off or a percentage off.
Clear enough to supply this argument.
search
Case-insensitive text matched anywhere in the code.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"code",
"type",
"value",
"duration",
"duration_in_months",
"active",
"entity_type",
"external_id",
"partner_id",
"program_id",
"group_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Promotion code id (promo_...)."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code as customers enter it at checkout."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Size of the discount as stored text: a percent for percentage codes (20 = 20%), or an amount in major units of the program currency for fixed codes (20 = 20.00)."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the code is active."
},
"duration": {
"type": "string",
"description": "How long the discount applies as stored, such as forever, once, one-time or repeating."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the group the code belongs to (grp_...), or null."
},
"created_at": {
"type": "string",
"description": "When the promotion code was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the code belongs to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the promotion code last changed, as an ISO 8601 timestamp."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the code belongs to as stored: partner, group or program, or null."
},
"external_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The code's id in the billing system, or null."
},
"duration_in_months": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Number of months for a repeating discount, as stored text, or null."
}
},
"additionalProperties": {}
},
"description": "This page of promotion codes, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_promotion_codes",
"title": "List promotion codes",
"description": "One page of promotion codes. Each row has the code, discount type and value, duration, whether it is active, and its partner, group or program. Filters: program_id, partner_id, type, search (code). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, code, type, value, duration, duration_in_months, active, entity_type, external_id, partner_id, program_id, group_id, created_at, updated_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"type": {
"enum": [
"fixed",
"percentage"
],
"type": "string",
"description": "Only codes giving this kind of discount: a fixed amount off or a percentage off."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"search": {
"type": "string",
"description": "Case-insensitive text matched anywhere in the code."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"code",
"type",
"value",
"duration",
"duration_in_months",
"active",
"entity_type",
"external_id",
"partner_id",
"program_id",
"group_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Promotion code id (promo_...)."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code as customers enter it at checkout."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Size of the discount as stored text: a percent for percentage codes (20 = 20%), or an amount in major units of the program currency for fixed codes (20 = 20.00)."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the code is active."
},
"duration": {
"type": "string",
"description": "How long the discount applies as stored, such as forever, once, one-time or repeating."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the group the code belongs to (grp_...), or null."
},
"created_at": {
"type": "string",
"description": "When the promotion code was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the code belongs to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the promotion code last changed, as an ISO 8601 timestamp."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the code belongs to as stored: partner, group or program, or null."
},
"external_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The code's id in the billing system, or null."
},
"duration_in_months": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Number of months for a repeating discount, as stored text, or null."
}
},
"additionalProperties": {}
},
"description": "This page of promotion codes, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
One page of flows (automations). Amounts (fixed commission and fixed override values, money condition values) are in major units of the program currency named in each row's currency. Filters: program_id, group_id, campaign_id, event, active, search (name/description). Read flows_guide to interpret a flow's event, conditions, action and options. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, name, description, event, action_type, action, conditions, program_id, group_id, campaign_id, active, partner_overrides, link_overrides, options, created_at, updated_at, currency), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
group_id
Only flows that run for this partner group, by the group id (grp_...) as returned when listing groups.
Clear enough to supply this argument.
campaign_id
Only flows that belong to this campaign, by its id as returned when listing campaigns.
Clear enough to supply this argument.
event
Only flows triggered by this event, such as transaction_created or lead_created.
Clear enough to supply this argument.
active
true lists only active flows, false only paused flows, which do not run.
Clear enough to supply this argument.
search
Case-insensitive text matched anywhere in the flow's name or description.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"description",
"event",
"action_type",
"action",
"conditions",
"program_id",
"group_id",
"campaign_id",
"active",
"partner_overrides",
"link_overrides",
"options",
"created_at",
"updated_at",
"currency"
],
"properties": {
"id": {
"type": "string",
"description": "Flow id (flw_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Flow name, or null."
},
"event": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Event that triggers the flow, such as transaction_created or lead_created."
},
"action": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Action settings as stored JSON; a fixed commission value is in major units of currency."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the flow runs; false means paused."
},
"options": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Flow options as stored JSON, such as approval settings."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program currency the flow amounts are expressed in; null when the program has none, in which case amounts are left as stored."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner group the flow runs for (grp_...), or null."
},
"conditions": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Condition tree as stored JSON, or null for no conditions; money condition values are in major units of currency. See flows_guide."
},
"created_at": {
"type": "string",
"description": "When the flow was created, as an ISO 8601 timestamp."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the flow last changed, as an ISO 8601 timestamp."
},
"action_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the flow does, such as generate_commission."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the flow belongs to (cmp_...), or null."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Flow description, or null."
},
"link_overrides": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Per-link overrides as stored JSON; fixed override values are in major units of currency."
},
"partner_overrides": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Per-partner overrides as stored JSON; fixed override values are in major units of currency."
}
},
"additionalProperties": {}
},
"description": "This page of flows, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_flows",
"title": "List flows",
"description": "One page of flows (automations). Amounts (fixed commission and fixed override values, money condition values) are in major units of the program currency named in each row's currency. Filters: program_id, group_id, campaign_id, event, active, search (name/description). Read flows_guide to interpret a flow's event, conditions, action and options. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, name, description, event, action_type, action, conditions, program_id, group_id, campaign_id, active, partner_overrides, link_overrides, options, created_at, updated_at, currency), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"event": {
"type": "string",
"description": "Only flows triggered by this event, such as transaction_created or lead_created."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"active": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "true lists only active flows, false only paused flows, which do not run."
},
"search": {
"type": "string",
"description": "Case-insensitive text matched anywhere in the flow's name or description."
},
"group_id": {
"type": "string",
"description": "Only flows that run for this partner group, by the group id (grp_...) as returned when listing groups."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"campaign_id": {
"type": "string",
"description": "Only flows that belong to this campaign, by its id as returned when listing campaigns."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"description",
"event",
"action_type",
"action",
"conditions",
"program_id",
"group_id",
"campaign_id",
"active",
"partner_overrides",
"link_overrides",
"options",
"created_at",
"updated_at",
"currency"
],
"properties": {
"id": {
"type": "string",
"description": "Flow id (flw_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Flow name, or null."
},
"event": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Event that triggers the flow, such as transaction_created or lead_created."
},
"action": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Action settings as stored JSON; a fixed commission value is in major units of currency."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the flow runs; false means paused."
},
"options": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Flow options as stored JSON, such as approval settings."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program currency the flow amounts are expressed in; null when the program has none, in which case amounts are left as stored."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner group the flow runs for (grp_...), or null."
},
"conditions": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Condition tree as stored JSON, or null for no conditions; money condition values are in major units of currency. See flows_guide."
},
"created_at": {
"type": "string",
"description": "When the flow was created, as an ISO 8601 timestamp."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the flow last changed, as an ISO 8601 timestamp."
},
"action_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the flow does, such as generate_commission."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the flow belongs to (cmp_...), or null."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Flow description, or null."
},
"link_overrides": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Per-link overrides as stored JSON; fixed override values are in major units of currency."
},
"partner_overrides": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Per-partner overrides as stored JSON; fixed override values are in major units of currency."
}
},
"additionalProperties": {}
},
"description": "This page of flows, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
One page of programs (usually few per org). Each row has the program's id, name, type, status, currency, cookie duration, payout term, minimum payout (minor units), website and subdomain. Filter: search (name). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, name, product_name, type, status, currency_code, cookie_duration, payout_term, minimum_payout, website_url, subdomain, created_at, updated_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
search
Case-insensitive text matched anywhere in the program name.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"product_name",
"type",
"status",
"currency_code",
"cookie_duration",
"payout_term",
"minimum_payout",
"website_url",
"subdomain",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Program id (prg_..., or a UUID for older programs)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program name, or null."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program type as stored, such as public or private, or null."
},
"status": {
"type": "string",
"description": "Program status as stored, such as active or inactive."
},
"subdomain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner portal subdomain, or null."
},
"created_at": {
"type": "string",
"description": "When the program was created, as an ISO 8601 timestamp."
},
"updated_at": {
"type": "string",
"description": "When the program last changed, as an ISO 8601 timestamp."
},
"payout_term": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout term in days as stored text, such as 15 or 30, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program website, or null."
},
"product_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Product the program promotes, or null."
},
"currency_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program currency code, or null."
},
"minimum_payout": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Minimum balance before a partner is paid, in minor units of the program currency, or null."
},
"cookie_duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "How many days a referral cookie lasts, or null."
}
},
"additionalProperties": {}
},
"description": "This page of programs, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_programs",
"title": "List programs",
"description": "One page of programs (usually few per org). Each row has the program's id, name, type, status, currency, cookie duration, payout term, minimum payout (minor units), website and subdomain. Filter: search (name). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, name, product_name, type, status, currency_code, cookie_duration, payout_term, minimum_payout, website_url, subdomain, created_at, updated_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"search": {
"type": "string",
"description": "Case-insensitive text matched anywhere in the program name."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"product_name",
"type",
"status",
"currency_code",
"cookie_duration",
"payout_term",
"minimum_payout",
"website_url",
"subdomain",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Program id (prg_..., or a UUID for older programs)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program name, or null."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program type as stored, such as public or private, or null."
},
"status": {
"type": "string",
"description": "Program status as stored, such as active or inactive."
},
"subdomain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner portal subdomain, or null."
},
"created_at": {
"type": "string",
"description": "When the program was created, as an ISO 8601 timestamp."
},
"updated_at": {
"type": "string",
"description": "When the program last changed, as an ISO 8601 timestamp."
},
"payout_term": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout term in days as stored text, such as 15 or 30, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program website, or null."
},
"product_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Product the program promotes, or null."
},
"currency_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program currency code, or null."
},
"minimum_payout": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Minimum balance before a partner is paid, in minor units of the program currency, or null."
},
"cookie_duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "How many days a referral cookie lasts, or null."
}
},
"additionalProperties": {}
},
"description": "This page of programs, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
One page of partner groups. Each row has the group's id, name, description, program, whether it is the default or private group, manual lead submission, minimum payout (minor units) and public key. Filters: program_id, default, search (name/description/public_key). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, name, description, program_id, is_default, public_key, website_url, is_private, allow_manual_lead_submission, minimum_payout, created_at, updated_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
search
Case-insensitive text matched anywhere in the group's name, description or public key.
Clear enough to supply this argument.
default
true lists only default groups, where new partners are placed unless another group is chosen; false lists the others.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"description",
"program_id",
"is_default",
"public_key",
"website_url",
"is_private",
"allow_manual_lead_submission",
"minimum_payout",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Group id (grp_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group name, or null."
},
"created_at": {
"type": "string",
"description": "When the group was created, as an ISO 8601 timestamp."
},
"is_default": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether new partners are placed in this group unless another is chosen."
},
"is_private": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the group is private."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"public_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group public key, or null."
},
"updated_at": {
"type": "string",
"description": "When the group last changed, as an ISO 8601 timestamp."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group description, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group website, or null."
},
"minimum_payout": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Minimum balance before a partner in the group is paid, in minor units of the program currency, or null to use the program's."
},
"allow_manual_lead_submission": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether partners in the group can submit leads manually."
}
},
"additionalProperties": {}
},
"description": "This page of partner groups, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_groups",
"title": "List groups",
"description": "One page of partner groups. Each row has the group's id, name, description, program, whether it is the default or private group, manual lead submission, minimum payout (minor units) and public key. Filters: program_id, default, search (name/description/public_key). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, name, description, program_id, is_default, public_key, website_url, is_private, allow_manual_lead_submission, minimum_payout, created_at, updated_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"search": {
"type": "string",
"description": "Case-insensitive text matched anywhere in the group's name, description or public key."
},
"default": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "true lists only default groups, where new partners are placed unless another group is chosen; false lists the others."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"description",
"program_id",
"is_default",
"public_key",
"website_url",
"is_private",
"allow_manual_lead_submission",
"minimum_payout",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Group id (grp_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group name, or null."
},
"created_at": {
"type": "string",
"description": "When the group was created, as an ISO 8601 timestamp."
},
"is_default": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether new partners are placed in this group unless another is chosen."
},
"is_private": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the group is private."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"public_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group public key, or null."
},
"updated_at": {
"type": "string",
"description": "When the group last changed, as an ISO 8601 timestamp."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group description, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group website, or null."
},
"minimum_payout": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Minimum balance before a partner in the group is paid, in minor units of the program currency, or null to use the program's."
},
"allow_manual_lead_submission": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether partners in the group can submit leads manually."
}
},
"additionalProperties": {}
},
"description": "This page of partner groups, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
One page of payouts, with each payout's money summed from its commissions. Filters: partner_id, program_id, status, method, period, invoice_id, paid_after, paid_before. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, partner_id, program_id, invoice_id, method, period, status, paid_at, created_at, updated_at, amount, commission_count, currency), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Clear enough to supply this argument.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
status
Only payouts in this status, matched exactly against the stored value, such as paid.
Clear enough to supply this argument.
method
How the payouts are sent to partners, such as paypal, bank_transfer, wise, crypto or wire, matched exactly.
Clear enough to supply this argument.
period
Commission period a payout covers, written as start and end dates like 2026-08-01 - 2026-08-31 and matched exactly; read it from a payout first.
Clear enough to supply this argument.
invoice_id
Only payouts on this invoice, by its id (inv_...) as returned when listing invoices.
Clear enough to supply this argument.
paid_after
Start of a window on when payouts were paid: only payouts paid at this time or later, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
paid_before
End of a window on when payouts were paid: only payouts paid before this time. Leave it out for no upper bound.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"partner_id",
"program_id",
"invoice_id",
"method",
"period",
"status",
"paid_at",
"created_at",
"updated_at",
"amount",
"commission_count",
"currency"
],
"properties": {
"id": {
"type": "string",
"description": "Payout id (pout_...)."
},
"amount": {
"type": "string",
"description": "Sum of the payout's commissions in its main currency, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99); 0 when it has none."
},
"method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout method as stored, such as paypal, bank_transfer, wise, crypto or wire, or null."
},
"period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission period the payout covers, such as 2026-08-01 - 2026-08-31, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout status as stored, such as paid, or null."
},
"paid_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the payout was paid, as stored text, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The payout's main currency: the commission currency with the largest sum, or null when it has no commissions."
},
"created_at": {
"type": "string",
"description": "When the payout was created, as an ISO 8601 timestamp."
},
"invoice_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the invoice the payout is on (inv_...), or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner paid (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the payout last changed, as an ISO 8601 timestamp."
},
"commission_count": {
"type": "string",
"description": "Number of the payout's commissions in its main currency, as a numeric string."
}
},
"additionalProperties": {}
},
"description": "This page of payouts, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_payouts",
"title": "List payouts",
"description": "One page of payouts, with each payout's money summed from its commissions. Filters: partner_id, program_id, status, method, period, invoice_id, paid_after, paid_before. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, partner_id, program_id, invoice_id, method, period, status, paid_at, created_at, updated_at, amount, commission_count, currency), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"method": {
"type": "string",
"description": "How the payouts are sent to partners, such as paypal, bank_transfer, wise, crypto or wire, matched exactly."
},
"period": {
"type": "string",
"description": "Commission period a payout covers, written as start and end dates like 2026-08-01 - 2026-08-31 and matched exactly; read it from a payout first."
},
"status": {
"type": "string",
"description": "Only payouts in this status, matched exactly against the stored value, such as paid."
},
"invoice_id": {
"type": "string",
"description": "Only payouts on this invoice, by its id (inv_...) as returned when listing invoices."
},
"paid_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when payouts were paid: only payouts paid at this time or later, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"paid_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when payouts were paid: only payouts paid before this time. Leave it out for no upper bound."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"partner_id",
"program_id",
"invoice_id",
"method",
"period",
"status",
"paid_at",
"created_at",
"updated_at",
"amount",
"commission_count",
"currency"
],
"properties": {
"id": {
"type": "string",
"description": "Payout id (pout_...)."
},
"amount": {
"type": "string",
"description": "Sum of the payout's commissions in its main currency, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99); 0 when it has none."
},
"method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout method as stored, such as paypal, bank_transfer, wise, crypto or wire, or null."
},
"period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission period the payout covers, such as 2026-08-01 - 2026-08-31, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout status as stored, such as paid, or null."
},
"paid_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the payout was paid, as stored text, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The payout's main currency: the commission currency with the largest sum, or null when it has no commissions."
},
"created_at": {
"type": "string",
"description": "When the payout was created, as an ISO 8601 timestamp."
},
"invoice_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the invoice the payout is on (inv_...), or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner paid (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the payout last changed, as an ISO 8601 timestamp."
},
"commission_count": {
"type": "string",
"description": "Number of the payout's commissions in its main currency, as a numeric string."
}
},
"additionalProperties": {}
},
"description": "This page of payouts, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
One page of invoices. Each row has the invoice's number, name, status, type, payment method, payout count, paid date, and base, fee and total amounts (strings, USD minor units). Filters: program_id, status, type, payment_method, paid_after, paid_before. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, invoice_number, name, description, amount, base_amount, total_amount, processing_fee_amount, processing_fee_rate, currency, status, type, payment_method, payout_count, program_id, paid_at, created_at, updated_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Clear enough to supply this argument.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
status
Only invoices in this status, matched exactly against the stored value, such as draft.
Clear enough to supply this argument.
type
Kind of invoice: off_cycle for invoices created outside the regular payout schedule. Regular payout invoices have no type, so leave it out to include them.
Clear enough to supply this argument.
payment_method
How the invoice is paid, matched exactly against the stored value, such as card, us_bank_account or custom.
Clear enough to supply this argument.
paid_after
Start of a window on when invoices were paid: only invoices paid at this time or later, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
paid_before
End of a window on when invoices were paid: only invoices paid before this time. Leave it out for no upper bound.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"invoice_number",
"name",
"description",
"amount",
"base_amount",
"total_amount",
"processing_fee_amount",
"processing_fee_rate",
"currency",
"status",
"type",
"payment_method",
"payout_count",
"program_id",
"paid_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Invoice id (inv_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice name, or null."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "off_cycle for an invoice created outside the regular payout schedule; null for a regular payout invoice."
},
"amount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Older amount column as stored, or null; use base_amount, processing_fee_amount and total_amount for the invoice totals."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice status as stored, such as draft or paid, or null."
},
"paid_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the invoice was paid, as an ISO 8601 timestamp, or null."
},
"currency": {
"type": "string",
"description": "Currency code stored on the invoice. Tolt bills invoices in USD, the currency of the amounts above."
},
"created_at": {
"type": "string",
"description": "When the invoice was created, as an ISO 8601 timestamp."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the invoice last changed, as an ISO 8601 timestamp."
},
"base_amount": {
"type": "string",
"description": "Payouts subtotal in USD minor units, as a numeric string."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice description, or null."
},
"payout_count": {
"type": "number",
"description": "Number of payouts on the invoice."
},
"total_amount": {
"type": "string",
"description": "Total due in USD minor units, base plus processing fee, as a numeric string."
},
"invoice_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice number, or null."
},
"payment_method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the invoice is paid: card, us_bank_account or custom, or null."
},
"processing_fee_rate": {
"type": "string",
"description": "Processing fee rate as a fraction (0.03 = 3%), as a numeric string."
},
"processing_fee_amount": {
"type": "string",
"description": "Processing fee in USD minor units, as a numeric string."
}
},
"additionalProperties": {}
},
"description": "This page of invoices, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_invoices",
"title": "List invoices",
"description": "One page of invoices. Each row has the invoice's number, name, status, type, payment method, payout count, paid date, and base, fee and total amounts (strings, USD minor units). Filters: program_id, status, type, payment_method, paid_after, paid_before. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, invoice_number, name, description, amount, base_amount, total_amount, processing_fee_amount, processing_fee_rate, currency, status, type, payment_method, payout_count, program_id, paid_at, created_at, updated_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"type": {
"type": "string",
"description": "Kind of invoice: off_cycle for invoices created outside the regular payout schedule. Regular payout invoices have no type, so leave it out to include them."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"status": {
"type": "string",
"description": "Only invoices in this status, matched exactly against the stored value, such as draft."
},
"paid_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when invoices were paid: only invoices paid at this time or later, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"paid_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when invoices were paid: only invoices paid before this time. Leave it out for no upper bound."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"payment_method": {
"type": "string",
"description": "How the invoice is paid, matched exactly against the stored value, such as card, us_bank_account or custom."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"invoice_number",
"name",
"description",
"amount",
"base_amount",
"total_amount",
"processing_fee_amount",
"processing_fee_rate",
"currency",
"status",
"type",
"payment_method",
"payout_count",
"program_id",
"paid_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Invoice id (inv_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice name, or null."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "off_cycle for an invoice created outside the regular payout schedule; null for a regular payout invoice."
},
"amount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Older amount column as stored, or null; use base_amount, processing_fee_amount and total_amount for the invoice totals."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice status as stored, such as draft or paid, or null."
},
"paid_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the invoice was paid, as an ISO 8601 timestamp, or null."
},
"currency": {
"type": "string",
"description": "Currency code stored on the invoice. Tolt bills invoices in USD, the currency of the amounts above."
},
"created_at": {
"type": "string",
"description": "When the invoice was created, as an ISO 8601 timestamp."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the invoice last changed, as an ISO 8601 timestamp."
},
"base_amount": {
"type": "string",
"description": "Payouts subtotal in USD minor units, as a numeric string."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice description, or null."
},
"payout_count": {
"type": "number",
"description": "Number of payouts on the invoice."
},
"total_amount": {
"type": "string",
"description": "Total due in USD minor units, base plus processing fee, as a numeric string."
},
"invoice_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice number, or null."
},
"payment_method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the invoice is paid: card, us_bank_account or custom, or null."
},
"processing_fee_rate": {
"type": "string",
"description": "Processing fee rate as a fraction (0.03 = 3%), as a numeric string."
},
"processing_fee_amount": {
"type": "string",
"description": "Processing fee in USD minor units, as a numeric string."
}
},
"additionalProperties": {}
},
"description": "This page of invoices, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
One page of campaigns. Each row has the campaign's id, name, slug, status, visibility, website, program, and start and end dates. Filters: program_id, status, visibility, search (name/slug). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, program_id, name, slug, description, status, visibility, website_url, start_date, end_date, created_at, updated_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Clear enough to supply this argument.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
status
Only campaigns in this status, matched exactly against the stored value, such as active.
Clear enough to supply this argument.
visibility
Only campaigns with this visibility, matched exactly, such as public for campaigns any partner in the program can join.
Clear enough to supply this argument.
search
Case-insensitive text matched anywhere in the campaign's name or slug.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"program_id",
"name",
"slug",
"description",
"status",
"visibility",
"website_url",
"start_date",
"end_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Campaign id (cmp_...)."
},
"name": {
"type": "string",
"description": "Campaign name."
},
"slug": {
"type": "string",
"description": "Campaign slug."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Campaign status as stored, such as active, or null."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the campaign ends, as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the campaign was created, as an ISO 8601 timestamp."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the campaign starts, as an ISO 8601 timestamp, or null."
},
"updated_at": {
"type": "string",
"description": "When the campaign last changed, as an ISO 8601 timestamp."
},
"visibility": {
"type": "string",
"description": "Campaign visibility as stored, such as public."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Campaign description, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Campaign website, or null."
}
},
"additionalProperties": {}
},
"description": "This page of campaigns, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_campaigns",
"title": "List campaigns",
"description": "One page of campaigns. Each row has the campaign's id, name, slug, status, visibility, website, program, and start and end dates. Filters: program_id, status, visibility, search (name/slug). Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, program_id, name, slug, description, status, visibility, website_url, start_date, end_date, created_at, updated_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"search": {
"type": "string",
"description": "Case-insensitive text matched anywhere in the campaign's name or slug."
},
"status": {
"type": "string",
"description": "Only campaigns in this status, matched exactly against the stored value, such as active."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"visibility": {
"type": "string",
"description": "Only campaigns with this visibility, matched exactly, such as public for campaigns any partner in the program can join."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"program_id",
"name",
"slug",
"description",
"status",
"visibility",
"website_url",
"start_date",
"end_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Campaign id (cmp_...)."
},
"name": {
"type": "string",
"description": "Campaign name."
},
"slug": {
"type": "string",
"description": "Campaign slug."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Campaign status as stored, such as active, or null."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the campaign ends, as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the campaign was created, as an ISO 8601 timestamp."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the campaign starts, as an ISO 8601 timestamp, or null."
},
"updated_at": {
"type": "string",
"description": "When the campaign last changed, as an ISO 8601 timestamp."
},
"visibility": {
"type": "string",
"description": "Campaign visibility as stored, such as public."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Campaign description, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Campaign website, or null."
}
},
"additionalProperties": {}
},
"description": "This page of campaigns, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
One page of manually submitted leads (approval queue). Each row has the customer email and name, potential value (string, minor units), status, rejection reason, and the partner and program. Filters: status, partner_id, program_id, enabled. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, partner_id, program_id, customer_email, customer_name, potential_value, status, rejection_reason, enabled, created_at, updated_at), has_more, next_cursor, prev_cursor.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
order
Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change.
Clear enough to supply this argument.
starting_after
Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before.
Clear enough to supply this argument.
ending_before
Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after.
Clear enough to supply this argument.
created_after
Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound.
Clear enough to supply this argument.
created_before
End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound.
Clear enough to supply this argument.
updated_after
Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync.
Clear enough to supply this argument.
updated_before
End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period.
Clear enough to supply this argument.
status
Only leads in this review status, matched exactly against the stored value, such as pending.
Clear enough to supply this argument.
partner_id
Limit to one partner, by its id (part_...) as returned when listing partners.
Clear enough to supply this argument.
program_id
Limit to one program, by its id (prg_...) as returned when listing programs.
Clear enough to supply this argument.
enabled
Filter on the lead's enabled flag. Leads are created enabled and the Tolt apps do not change the flag, so leave it out unless you are looking for leads disabled outside the apps.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"partner_id",
"program_id",
"customer_email",
"customer_name",
"potential_value",
"status",
"rejection_reason",
"enabled",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Submitted lead id (sl_...)."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Review status as stored, such as pending, or null."
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the lead's enabled flag is set."
},
"created_at": {
"type": "string",
"description": "When the submitted lead was created, as an ISO 8601 timestamp."
},
"partner_id": {
"type": "string",
"description": "Id of the partner who submitted it (part_...)."
},
"program_id": {
"type": "string",
"description": "Id of the program it was submitted to (prg_...)."
},
"updated_at": {
"type": "string",
"description": "When the submitted lead last changed, as an ISO 8601 timestamp."
},
"customer_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name of the submitted customer, or null."
},
"customer_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Email of the submitted customer, or null."
},
"potential_value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Potential deal value, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of the program currency, or null."
},
"rejection_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Why it was rejected, or null."
}
},
"additionalProperties": {}
},
"description": "This page of submitted leads, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "list_submitted_leads",
"title": "List submitted leads",
"description": "One page of manually submitted leads (approval queue). Each row has the customer email and name, potential value (string, minor units), status, rejection reason, and the partner and program. Filters: status, partner_id, program_id, enabled. Returns ONE page with has_more and next_cursor; pass starting_after=<next_cursor> for the next page. Do not page the whole list to compute totals or rankings; use the summary tools instead. Result fields: data (each with id, partner_id, program_id, customer_email, customer_name, potential_value, status, rejection_reason, enabled, created_at, updated_at), has_more, next_cursor, prev_cursor.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"created_at",
"updated_at"
],
"type": "string",
"default": "created_at",
"description": "Timestamp to order and page by: created_at follows creation order, updated_at follows each item's most recent change."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "How many rows this call returns. Ask for a large page only when you need those rows at once; otherwise follow the cursor or offset for more."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Direction to read along the sort field: newest or largest first, or oldest first to walk forward in time."
},
"status": {
"type": "string",
"description": "Only leads in this review status, matched exactly against the stored value, such as pending."
},
"enabled": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "Filter on the lead's enabled flag. Leads are created enabled and the Tolt apps do not change the flag, so leave it out unless you are looking for leads disabled outside the apps."
},
"partner_id": {
"type": "string",
"description": "Limit to one partner, by its id (part_...) as returned when listing partners."
},
"program_id": {
"type": "string",
"description": "Limit to one program, by its id (prg_...) as returned when listing programs."
},
"created_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a window on when items were created: items created at this time or later are included, for example 2026-01-01T00:00:00Z. Leave it out for no lower bound."
},
"ending_before": {
"type": "string",
"description": "Page backward from a position: the prev_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with starting_after."
},
"updated_after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only items last changed at or after this moment; with sort=updated_at, use it to fetch what changed since a previous sync."
},
"created_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items were created: only items created before this time are included. Leave it out for no upper bound."
},
"starting_after": {
"type": "string",
"description": "Continue after a position: the next_cursor of a previous page, or an item id when sorting by created_at. Cannot be combined with ending_before."
},
"updated_before": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End of a window on when items last changed: only items changed before this time. Pair it with updated_after to see what changed in a period."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data",
"has_more",
"next_cursor",
"prev_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"partner_id",
"program_id",
"customer_email",
"customer_name",
"potential_value",
"status",
"rejection_reason",
"enabled",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Submitted lead id (sl_...)."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Review status as stored, such as pending, or null."
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the lead's enabled flag is set."
},
"created_at": {
"type": "string",
"description": "When the submitted lead was created, as an ISO 8601 timestamp."
},
"partner_id": {
"type": "string",
"description": "Id of the partner who submitted it (part_...)."
},
"program_id": {
"type": "string",
"description": "Id of the program it was submitted to (prg_...)."
},
"updated_at": {
"type": "string",
"description": "When the submitted lead last changed, as an ISO 8601 timestamp."
},
"customer_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name of the submitted customer, or null."
},
"customer_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Email of the submitted customer, or null."
},
"potential_value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Potential deal value, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of the program currency, or null."
},
"rejection_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Why it was rejected, or null."
}
},
"additionalProperties": {}
},
"description": "This page of submitted leads, in the requested sort order."
},
"has_more": {
"type": "boolean",
"description": "true when more items exist past this page in the direction it was read; continue with next_cursor as starting_after, or prev_cursor as ending_before when paging backward."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the last item on this page, for starting_after; null when the page is empty."
},
"prev_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cursor of the first item on this page, for ending_before; null when the page is empty."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Fetch one partner by id, including partners still finishing onboarding. Returns the partner's name, email, company, country, website, status, group and program, onboarding, rejection and suspension dates, and their answers to the program's signup questions. Result fields: id, email, first_name, last_name, company_name, status, group_id, program_id, country_code, website_url, display_name, completed_onboarding, created_at, updated_at, rejected_at, suspended_at, custom_fields (each with answer_id, question_id, question, answer).
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the partner to fetch, such as part_9fQ2xLL. Use an id from list_partners results or from a related record.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Fetch one referred customer by id. Returns the customer's identifier, email, name, status, plan and subscription, the partner, link, click and promotion code that referred them, and when they became a lead and a paying customer. Result fields: id, customer_id, identifier, email, name, status, plan, subscription_id, partner_id, program_id, link_id, promotion_code_id, click_id, lead_at, active_at, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the customer to fetch, such as cus_3pV9tRwA. Use an id from list_customers results or from a related record.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"customer_id",
"identifier",
"email",
"name",
"status",
"plan",
"subscription_id",
"partner_id",
"program_id",
"link_id",
"promotion_code_id",
"click_id",
"lead_at",
"active_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Tolt customer id (cus_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's name, or null."
},
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name the customer is on, or null."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's email, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle stage: lead (signed up, not paying), trialing, active (paying), canceled or suspended."
},
"lead_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became a lead, as an ISO 8601 timestamp, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link the customer came through (lnk_...), or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click the customer came from, or null."
},
"active_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became active (paying), as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the customer was created, as an ISO 8601 timestamp."
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier the customer was recorded with, such as their email, or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referring partner (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the customer last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The customer's id in the merchant's own system or billing provider, or null."
},
"subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Subscription id in the billing provider, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code the customer is attributed to (promo_...), or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "get_customer",
"title": "Get customer",
"description": "Fetch one referred customer by id. Returns the customer's identifier, email, name, status, plan and subscription, the partner, link, click and promotion code that referred them, and when they became a lead and a paying customer. Result fields: id, customer_id, identifier, email, name, status, plan, subscription_id, partner_id, program_id, link_id, promotion_code_id, click_id, lead_at, active_at, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Id of the customer to fetch, such as cus_3pV9tRwA. Use an id from list_customers results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"customer_id",
"identifier",
"email",
"name",
"status",
"plan",
"subscription_id",
"partner_id",
"program_id",
"link_id",
"promotion_code_id",
"click_id",
"lead_at",
"active_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Tolt customer id (cus_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's name, or null."
},
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name the customer is on, or null."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's email, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle stage: lead (signed up, not paying), trialing, active (paying), canceled or suspended."
},
"lead_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became a lead, as an ISO 8601 timestamp, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link the customer came through (lnk_...), or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click the customer came from, or null."
},
"active_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became active (paying), as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the customer was created, as an ISO 8601 timestamp."
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier the customer was recorded with, such as their email, or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referring partner (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the customer last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The customer's id in the merchant's own system or billing provider, or null."
},
"subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Subscription id in the billing provider, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code the customer is attributed to (promo_...), or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Fetch one commission by id. Returns its amount and revenue (strings in minor units; a null currency means the program's currency), status, type, source, approval type and scheduled approval date, self-referral and ad-click flags, and the partner, customer, transaction and payout it belongs to. Result fields: id, amount, currency, revenue, status, type, source, partner_id, customer_id, program_id, transaction_id, payout_id, charge_id, charge_status, is_ad_click, is_self_referral, approval_type, scheduled_approval_date, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the commission to fetch, such as comm_8KfQ2xLm. Use an id from list_commissions results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"currency",
"revenue",
"status",
"type",
"source",
"partner_id",
"customer_id",
"program_id",
"transaction_id",
"payout_id",
"charge_id",
"charge_status",
"is_ad_click",
"is_self_referral",
"approval_type",
"scheduled_approval_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Commission id (comm_...)."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission type as stored, such as reward, fixed or percentage, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the commission came from as stored, such as stripe, paddle or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "pending (awaiting approval), approved (paid in the next payout run), paid, rejected or refunded."
},
"revenue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Revenue the commission was earned on, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in the same currency as amount, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the commission; null means the program's currency."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"payout_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payout it was paid in (pout_...), or null while unpaid."
},
"created_at": {
"type": "string",
"description": "When the commission was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who earned it (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the commission last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"is_ad_click": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as coming from a paid ad click."
},
"approval_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the commission is approved as stored, such as manual or immediate, or null."
},
"charge_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Status of that charge as stored (for example refunded), or null."
},
"transaction_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the transaction it was earned on (txn_...), or null."
},
"is_self_referral": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as a self-referral, where the partner referred themselves."
},
"scheduled_approval_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When a pending commission is scheduled to be approved, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "get_commission",
"title": "Get commission",
"description": "Fetch one commission by id. Returns its amount and revenue (strings in minor units; a null currency means the program's currency), status, type, source, approval type and scheduled approval date, self-referral and ad-click flags, and the partner, customer, transaction and payout it belongs to. Result fields: id, amount, currency, revenue, status, type, source, partner_id, customer_id, program_id, transaction_id, payout_id, charge_id, charge_status, is_ad_click, is_self_referral, approval_type, scheduled_approval_date, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Id of the commission to fetch, such as comm_8KfQ2xLm. Use an id from list_commissions results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"currency",
"revenue",
"status",
"type",
"source",
"partner_id",
"customer_id",
"program_id",
"transaction_id",
"payout_id",
"charge_id",
"charge_status",
"is_ad_click",
"is_self_referral",
"approval_type",
"scheduled_approval_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Commission id (comm_...)."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission type as stored, such as reward, fixed or percentage, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the commission came from as stored, such as stripe, paddle or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "pending (awaiting approval), approved (paid in the next payout run), paid, rejected or refunded."
},
"revenue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Revenue the commission was earned on, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in the same currency as amount, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the commission; null means the program's currency."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"payout_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payout it was paid in (pout_...), or null while unpaid."
},
"created_at": {
"type": "string",
"description": "When the commission was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who earned it (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the commission last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"is_ad_click": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as coming from a paid ad click."
},
"approval_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the commission is approved as stored, such as manual or immediate, or null."
},
"charge_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Status of that charge as stored (for example refunded), or null."
},
"transaction_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the transaction it was earned on (txn_...), or null."
},
"is_self_referral": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as a self-referral, where the partner referred themselves."
},
"scheduled_approval_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When a pending commission is scheduled to be approved, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Fetch one transaction by id. Returns its amounts with and without tax (strings in minor units), currency, status, source, billing type and interval, quantity, product ids and names, promotion code, charge id and metadata, and the partner, customer and program it belongs to. Result fields: id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the transaction to fetch, such as txn_Q7hN1cZe. Use an id from list_transactions results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "get_transaction",
"title": "Get transaction",
"description": "Fetch one transaction by id. Returns its amounts with and without tax (strings in minor units), currency, status, source, billing type and interval, quantity, product ids and names, promotion code, charge id and metadata, and the partner, customer and program it belongs to. Result fields: id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Id of the transaction to fetch, such as txn_Q7hN1cZe. Use an id from list_transactions results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Fetch one referral link by id. Returns its param and value, status, and the partner, program and campaign it belongs to. Result fields: id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the referral link to fetch, such as lnk_7Hk2pQ. Use an id from list_links results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "get_link",
"title": "Get link",
"description": "Fetch one referral link by id. Returns its param and value, status, and the partner, program and campaign it belongs to. Result fields: id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Id of the referral link to fetch, such as lnk_7Hk2pQ. Use an id from list_links results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Fetch one promotion code by id. Returns the code, discount type and value, duration, whether it is active, its external id in the billing system, and the partner, group or program it belongs to. Result fields: id, code, type, value, duration, duration_in_months, active, entity_type, external_id, partner_id, program_id, group_id, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the promotion code to fetch, such as promo_4Lm8Qa. Use an id from list_promotion_codes results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"code",
"type",
"value",
"duration",
"duration_in_months",
"active",
"entity_type",
"external_id",
"partner_id",
"program_id",
"group_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Promotion code id (promo_...)."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code as customers enter it at checkout."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Size of the discount as stored text: a percent for percentage codes (20 = 20%), or an amount in major units of the program currency for fixed codes (20 = 20.00)."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the code is active."
},
"duration": {
"type": "string",
"description": "How long the discount applies as stored, such as forever, once, one-time or repeating."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the group the code belongs to (grp_...), or null."
},
"created_at": {
"type": "string",
"description": "When the promotion code was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the code belongs to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the promotion code last changed, as an ISO 8601 timestamp."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the code belongs to as stored: partner, group or program, or null."
},
"external_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The code's id in the billing system, or null."
},
"duration_in_months": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Number of months for a repeating discount, as stored text, or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "get_promotion_code",
"title": "Get promotion code",
"description": "Fetch one promotion code by id. Returns the code, discount type and value, duration, whether it is active, its external id in the billing system, and the partner, group or program it belongs to. Result fields: id, code, type, value, duration, duration_in_months, active, entity_type, external_id, partner_id, program_id, group_id, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Id of the promotion code to fetch, such as promo_4Lm8Qa. Use an id from list_promotion_codes results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"code",
"type",
"value",
"duration",
"duration_in_months",
"active",
"entity_type",
"external_id",
"partner_id",
"program_id",
"group_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Promotion code id (promo_...)."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code as customers enter it at checkout."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Size of the discount as stored text: a percent for percentage codes (20 = 20%), or an amount in major units of the program currency for fixed codes (20 = 20.00)."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the code is active."
},
"duration": {
"type": "string",
"description": "How long the discount applies as stored, such as forever, once, one-time or repeating."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the group the code belongs to (grp_...), or null."
},
"created_at": {
"type": "string",
"description": "When the promotion code was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the code belongs to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the promotion code last changed, as an ISO 8601 timestamp."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the code belongs to as stored: partner, group or program, or null."
},
"external_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The code's id in the billing system, or null."
},
"duration_in_months": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Number of months for a repeating discount, as stored text, or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Fetch one flow by id. Returns its name, event, action, conditions, partner and link overrides, options, group or campaign, active state, and currency. Amounts (fixed commission and fixed override values, money condition values) are in major units of the program currency named in currency. Read flows_guide to interpret its event, conditions, action and options. Result fields: id, name, description, event, action_type, action, conditions, program_id, group_id, campaign_id, active, partner_overrides, link_overrides, options, created_at, updated_at, currency.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the flow to fetch, such as flw_6Tq2rNw. Use an id from list_flows results or from a related record.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Fetch one program by id. Returns its name, product, type, status, currency, cookie duration, payout term, minimum payout (minor units), website and subdomain, plus its terms. terms_url is the Terms of Service link partners must accept to sign up (null when none is set); merchants set it in Program settings, General tab, Program details card, Terms of Service. terms_reacceptance_required_at is when the merchant last required partners to accept updated terms. Result fields: id, name, product_name, type, status, currency_code, cookie_duration, payout_term, minimum_payout, website_url, subdomain, created_at, updated_at, terms_url, terms_reacceptance_required_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the program to fetch, such as prg_YRsbPDAK. Use an id from list_programs results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"name",
"product_name",
"type",
"status",
"currency_code",
"cookie_duration",
"payout_term",
"minimum_payout",
"website_url",
"subdomain",
"created_at",
"updated_at",
"terms_url",
"terms_reacceptance_required_at"
],
"properties": {
"id": {
"type": "string",
"description": "Program id (prg_..., or a UUID for older programs)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program name, or null."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program type as stored, such as public or private, or null."
},
"status": {
"type": "string",
"description": "Program status as stored, such as active or inactive."
},
"subdomain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner portal subdomain, or null."
},
"terms_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Terms of Service link partners must accept to sign up, or null when none is set."
},
"created_at": {
"type": "string",
"description": "When the program was created, as an ISO 8601 timestamp."
},
"updated_at": {
"type": "string",
"description": "When the program last changed, as an ISO 8601 timestamp."
},
"payout_term": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout term in days as stored text, such as 15 or 30, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program website, or null."
},
"product_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Product the program promotes, or null."
},
"currency_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program currency code, or null."
},
"minimum_payout": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Minimum balance before a partner is paid, in minor units of the program currency, or null."
},
"cookie_duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "How many days a referral cookie lasts, or null."
},
"terms_reacceptance_required_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the merchant last required partners to accept updated terms, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "get_program",
"title": "Get program",
"description": "Fetch one program by id. Returns its name, product, type, status, currency, cookie duration, payout term, minimum payout (minor units), website and subdomain, plus its terms. terms_url is the Terms of Service link partners must accept to sign up (null when none is set); merchants set it in Program settings, General tab, Program details card, Terms of Service. terms_reacceptance_required_at is when the merchant last required partners to accept updated terms. Result fields: id, name, product_name, type, status, currency_code, cookie_duration, payout_term, minimum_payout, website_url, subdomain, created_at, updated_at, terms_url, terms_reacceptance_required_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Id of the program to fetch, such as prg_YRsbPDAK. Use an id from list_programs results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"name",
"product_name",
"type",
"status",
"currency_code",
"cookie_duration",
"payout_term",
"minimum_payout",
"website_url",
"subdomain",
"created_at",
"updated_at",
"terms_url",
"terms_reacceptance_required_at"
],
"properties": {
"id": {
"type": "string",
"description": "Program id (prg_..., or a UUID for older programs)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program name, or null."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program type as stored, such as public or private, or null."
},
"status": {
"type": "string",
"description": "Program status as stored, such as active or inactive."
},
"subdomain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner portal subdomain, or null."
},
"terms_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Terms of Service link partners must accept to sign up, or null when none is set."
},
"created_at": {
"type": "string",
"description": "When the program was created, as an ISO 8601 timestamp."
},
"updated_at": {
"type": "string",
"description": "When the program last changed, as an ISO 8601 timestamp."
},
"payout_term": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout term in days as stored text, such as 15 or 30, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program website, or null."
},
"product_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Product the program promotes, or null."
},
"currency_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Program currency code, or null."
},
"minimum_payout": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Minimum balance before a partner is paid, in minor units of the program currency, or null."
},
"cookie_duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "How many days a referral cookie lasts, or null."
},
"terms_reacceptance_required_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the merchant last required partners to accept updated terms, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Fetch one partner group by id. Returns its name, description, program, whether it is the default or a private group, whether partners can submit leads manually, its minimum payout (minor units), website and public key. Result fields: id, name, description, program_id, is_default, public_key, website_url, is_private, allow_manual_lead_submission, minimum_payout, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the partner group to fetch, such as grp_3Kd9wQ. Use an id from list_groups results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"name",
"description",
"program_id",
"is_default",
"public_key",
"website_url",
"is_private",
"allow_manual_lead_submission",
"minimum_payout",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Group id (grp_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group name, or null."
},
"created_at": {
"type": "string",
"description": "When the group was created, as an ISO 8601 timestamp."
},
"is_default": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether new partners are placed in this group unless another is chosen."
},
"is_private": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the group is private."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"public_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group public key, or null."
},
"updated_at": {
"type": "string",
"description": "When the group last changed, as an ISO 8601 timestamp."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group description, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group website, or null."
},
"minimum_payout": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Minimum balance before a partner in the group is paid, in minor units of the program currency, or null to use the program's."
},
"allow_manual_lead_submission": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether partners in the group can submit leads manually."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "get_group",
"title": "Get group",
"description": "Fetch one partner group by id. Returns its name, description, program, whether it is the default or a private group, whether partners can submit leads manually, its minimum payout (minor units), website and public key. Result fields: id, name, description, program_id, is_default, public_key, website_url, is_private, allow_manual_lead_submission, minimum_payout, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Id of the partner group to fetch, such as grp_3Kd9wQ. Use an id from list_groups results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"name",
"description",
"program_id",
"is_default",
"public_key",
"website_url",
"is_private",
"allow_manual_lead_submission",
"minimum_payout",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Group id (grp_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group name, or null."
},
"created_at": {
"type": "string",
"description": "When the group was created, as an ISO 8601 timestamp."
},
"is_default": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether new partners are placed in this group unless another is chosen."
},
"is_private": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the group is private."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"public_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group public key, or null."
},
"updated_at": {
"type": "string",
"description": "When the group last changed, as an ISO 8601 timestamp."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group description, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Group website, or null."
},
"minimum_payout": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Minimum balance before a partner in the group is paid, in minor units of the program currency, or null to use the program's."
},
"allow_manual_lead_submission": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether partners in the group can submit leads manually."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Fetch one payout by id. Returns its status, method, period, paid date, partner, program and invoice, with amount (string in minor units), currency and commission_count summed from the payout's commissions in its main currency. Result fields: id, partner_id, program_id, invoice_id, method, period, status, paid_at, created_at, updated_at, amount, commission_count, currency.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the payout to fetch, such as pout_8Rk2mNa. Use an id from list_payouts results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"partner_id",
"program_id",
"invoice_id",
"method",
"period",
"status",
"paid_at",
"created_at",
"updated_at",
"amount",
"commission_count",
"currency"
],
"properties": {
"id": {
"type": "string",
"description": "Payout id (pout_...)."
},
"amount": {
"type": "string",
"description": "Sum of the payout's commissions in its main currency, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99); 0 when it has none."
},
"method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout method as stored, such as paypal, bank_transfer, wise, crypto or wire, or null."
},
"period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission period the payout covers, such as 2026-08-01 - 2026-08-31, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout status as stored, such as paid, or null."
},
"paid_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the payout was paid, as stored text, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The payout's main currency: the commission currency with the largest sum, or null when it has no commissions."
},
"created_at": {
"type": "string",
"description": "When the payout was created, as an ISO 8601 timestamp."
},
"invoice_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the invoice the payout is on (inv_...), or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner paid (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the payout last changed, as an ISO 8601 timestamp."
},
"commission_count": {
"type": "string",
"description": "Number of the payout's commissions in its main currency, as a numeric string."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "get_payout",
"title": "Get payout",
"description": "Fetch one payout by id. Returns its status, method, period, paid date, partner, program and invoice, with amount (string in minor units), currency and commission_count summed from the payout's commissions in its main currency. Result fields: id, partner_id, program_id, invoice_id, method, period, status, paid_at, created_at, updated_at, amount, commission_count, currency.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Id of the payout to fetch, such as pout_8Rk2mNa. Use an id from list_payouts results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"partner_id",
"program_id",
"invoice_id",
"method",
"period",
"status",
"paid_at",
"created_at",
"updated_at",
"amount",
"commission_count",
"currency"
],
"properties": {
"id": {
"type": "string",
"description": "Payout id (pout_...)."
},
"amount": {
"type": "string",
"description": "Sum of the payout's commissions in its main currency, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99); 0 when it has none."
},
"method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout method as stored, such as paypal, bank_transfer, wise, crypto or wire, or null."
},
"period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission period the payout covers, such as 2026-08-01 - 2026-08-31, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Payout status as stored, such as paid, or null."
},
"paid_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the payout was paid, as stored text, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The payout's main currency: the commission currency with the largest sum, or null when it has no commissions."
},
"created_at": {
"type": "string",
"description": "When the payout was created, as an ISO 8601 timestamp."
},
"invoice_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the invoice the payout is on (inv_...), or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner paid (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the payout last changed, as an ISO 8601 timestamp."
},
"commission_count": {
"type": "string",
"description": "Number of the payout's commissions in its main currency, as a numeric string."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Fetch one invoice by id. Returns its number, name, description, status, type (off_cycle, or null for a regular payout invoice), payment method, payout count, program and paid date. Tolt bills invoices in USD: base_amount, processing_fee_amount and total_amount are strings in USD minor units, and processing_fee_rate is a fraction. Result fields: id, invoice_number, name, description, amount, base_amount, total_amount, processing_fee_amount, processing_fee_rate, currency, status, type, payment_method, payout_count, program_id, paid_at, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the invoice to fetch, such as inv_5Wp7cLx. Use an id from list_invoices results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"invoice_number",
"name",
"description",
"amount",
"base_amount",
"total_amount",
"processing_fee_amount",
"processing_fee_rate",
"currency",
"status",
"type",
"payment_method",
"payout_count",
"program_id",
"paid_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Invoice id (inv_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice name, or null."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "off_cycle for an invoice created outside the regular payout schedule; null for a regular payout invoice."
},
"amount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Older amount column as stored, or null; use base_amount, processing_fee_amount and total_amount for the invoice totals."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice status as stored, such as draft or paid, or null."
},
"paid_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the invoice was paid, as an ISO 8601 timestamp, or null."
},
"currency": {
"type": "string",
"description": "Currency code stored on the invoice. Tolt bills invoices in USD, the currency of the amounts above."
},
"created_at": {
"type": "string",
"description": "When the invoice was created, as an ISO 8601 timestamp."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the invoice last changed, as an ISO 8601 timestamp."
},
"base_amount": {
"type": "string",
"description": "Payouts subtotal in USD minor units, as a numeric string."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice description, or null."
},
"payout_count": {
"type": "number",
"description": "Number of payouts on the invoice."
},
"total_amount": {
"type": "string",
"description": "Total due in USD minor units, base plus processing fee, as a numeric string."
},
"invoice_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice number, or null."
},
"payment_method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the invoice is paid: card, us_bank_account or custom, or null."
},
"processing_fee_rate": {
"type": "string",
"description": "Processing fee rate as a fraction (0.03 = 3%), as a numeric string."
},
"processing_fee_amount": {
"type": "string",
"description": "Processing fee in USD minor units, as a numeric string."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "get_invoice",
"title": "Get invoice",
"description": "Fetch one invoice by id. Returns its number, name, description, status, type (off_cycle, or null for a regular payout invoice), payment method, payout count, program and paid date. Tolt bills invoices in USD: base_amount, processing_fee_amount and total_amount are strings in USD minor units, and processing_fee_rate is a fraction. Result fields: id, invoice_number, name, description, amount, base_amount, total_amount, processing_fee_amount, processing_fee_rate, currency, status, type, payment_method, payout_count, program_id, paid_at, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Id of the invoice to fetch, such as inv_5Wp7cLx. Use an id from list_invoices results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"invoice_number",
"name",
"description",
"amount",
"base_amount",
"total_amount",
"processing_fee_amount",
"processing_fee_rate",
"currency",
"status",
"type",
"payment_method",
"payout_count",
"program_id",
"paid_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Invoice id (inv_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice name, or null."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "off_cycle for an invoice created outside the regular payout schedule; null for a regular payout invoice."
},
"amount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Older amount column as stored, or null; use base_amount, processing_fee_amount and total_amount for the invoice totals."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice status as stored, such as draft or paid, or null."
},
"paid_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the invoice was paid, as an ISO 8601 timestamp, or null."
},
"currency": {
"type": "string",
"description": "Currency code stored on the invoice. Tolt bills invoices in USD, the currency of the amounts above."
},
"created_at": {
"type": "string",
"description": "When the invoice was created, as an ISO 8601 timestamp."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the invoice last changed, as an ISO 8601 timestamp."
},
"base_amount": {
"type": "string",
"description": "Payouts subtotal in USD minor units, as a numeric string."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice description, or null."
},
"payout_count": {
"type": "number",
"description": "Number of payouts on the invoice."
},
"total_amount": {
"type": "string",
"description": "Total due in USD minor units, base plus processing fee, as a numeric string."
},
"invoice_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Invoice number, or null."
},
"payment_method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the invoice is paid: card, us_bank_account or custom, or null."
},
"processing_fee_rate": {
"type": "string",
"description": "Processing fee rate as a fraction (0.03 = 3%), as a numeric string."
},
"processing_fee_amount": {
"type": "string",
"description": "Processing fee in USD minor units, as a numeric string."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Fetch one campaign by id. Returns its name, slug, description, status, visibility, website, program, and start and end dates. Result fields: id, program_id, name, slug, description, status, visibility, website_url, start_date, end_date, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the campaign to fetch, such as cmp_2Hn6tYe. Use an id from list_campaigns results or from a related record.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Fetch one manually submitted lead by id. Returns the customer email and name, potential value (string in minor units), status, rejection reason, whether it is enabled, and the partner and program. Result fields: id, partner_id, program_id, customer_email, customer_name, potential_value, status, rejection_reason, enabled, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the submitted lead to fetch, such as sl_9Vb4kQs. Use an id from list_submitted_leads results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"partner_id",
"program_id",
"customer_email",
"customer_name",
"potential_value",
"status",
"rejection_reason",
"enabled",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Submitted lead id (sl_...)."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Review status as stored, such as pending, or null."
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the lead's enabled flag is set."
},
"created_at": {
"type": "string",
"description": "When the submitted lead was created, as an ISO 8601 timestamp."
},
"partner_id": {
"type": "string",
"description": "Id of the partner who submitted it (part_...)."
},
"program_id": {
"type": "string",
"description": "Id of the program it was submitted to (prg_...)."
},
"updated_at": {
"type": "string",
"description": "When the submitted lead last changed, as an ISO 8601 timestamp."
},
"customer_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name of the submitted customer, or null."
},
"customer_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Email of the submitted customer, or null."
},
"potential_value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Potential deal value, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of the program currency, or null."
},
"rejection_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Why it was rejected, or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "get_submitted_lead",
"title": "Get submitted lead",
"description": "Fetch one manually submitted lead by id. Returns the customer email and name, potential value (string in minor units), status, rejection reason, whether it is enabled, and the partner and program. Result fields: id, partner_id, program_id, customer_email, customer_name, potential_value, status, rejection_reason, enabled, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Id of the submitted lead to fetch, such as sl_9Vb4kQs. Use an id from list_submitted_leads results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"partner_id",
"program_id",
"customer_email",
"customer_name",
"potential_value",
"status",
"rejection_reason",
"enabled",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Submitted lead id (sl_...)."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Review status as stored, such as pending, or null."
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the lead's enabled flag is set."
},
"created_at": {
"type": "string",
"description": "When the submitted lead was created, as an ISO 8601 timestamp."
},
"partner_id": {
"type": "string",
"description": "Id of the partner who submitted it (part_...)."
},
"program_id": {
"type": "string",
"description": "Id of the program it was submitted to (prg_...)."
},
"updated_at": {
"type": "string",
"description": "When the submitted lead last changed, as an ISO 8601 timestamp."
},
"customer_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name of the submitted customer, or null."
},
"customer_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Email of the submitted customer, or null."
},
"potential_value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Potential deal value, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of the program currency, or null."
},
"rejection_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Why it was rejected, or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Reference for Tolt commission flows: what triggers them, which flows run for an event, every condition type with its exact operators, values and pitfalls, actions, overrides, approval and other options, recipes for common commission setups, and a checklist for proposing or changing a flow. Read it before explaining what a flow does or proposing one, instead of guessing what a condition means: overview first, then the topics you need. Returns the requested section as markdown text; structured content carries the topic and the same markdown. Result fields: topic, guide.
The description explains the capability, when to use it, and what to expect.
Inputs74/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
topic
Part of the flows guide to return. Begin with the overview; before writing a condition, read the page named after its condition type for its operators and pitfalls, and read the checklist before proposing a flow.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"topic",
"guide"
],
"properties": {
"guide": {
"type": "string",
"description": "The section as markdown, the same text as the text result."
},
"topic": {
"type": "string",
"description": "The section that was read, as requested."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "flows_guide",
"title": "Flows guide",
"description": "Reference for Tolt commission flows: what triggers them, which flows run for an event, every condition type with its exact operators, values and pitfalls, actions, overrides, approval and other options, recipes for common commission setups, and a checklist for proposing or changing a flow. Read it before explaining what a flow does or proposing one, instead of guessing what a condition means: overview first, then the topics you need. Returns the requested section as markdown text; structured content carries the topic and the same markdown. Result fields: topic, guide.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"topic"
],
"properties": {
"topic": {
"enum": [
"overview",
"conditions",
"actions",
"recipes",
"checklist",
"transaction_amount",
"customer_total_paid",
"partner_total_revenue",
"partner_total_earnings",
"total_earned_per_customer",
"customer_transaction_count",
"partner_transaction_count",
"partner_lead_count",
"partner_customer_count",
"transaction_product_quantity",
"transaction_product_id",
"customer_identifier",
"partner_id",
"transaction_interval",
"transaction_billing_type",
"transaction_promotion_code",
"customer_lead_date",
"customer_active_date",
"partner_signup_date",
"partner_country",
"link_id"
],
"type": "string",
"description": "Part of the flows guide to return. Begin with the overview; before writing a condition, read the page named after its condition type for its operators and pitfalls, and read the checklist before proposing a flow."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"topic",
"guide"
],
"properties": {
"guide": {
"type": "string",
"description": "The section as markdown, the same text as the text result."
},
"topic": {
"type": "string",
"description": "The section that was read, as requested."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Create a partner in a program, with a referral link. Returns status created, the new partner (id, email, name, status, group and program) and the link (id, param and value). The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: status, partner (id, email, first_name, last_name, company_name, status, group_id, program_id, country_code, website_url, display_name, completed_onboarding, created_at, updated_at, rejected_at, suspended_at), link (id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at).
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
email
Partner's email address, where program emails such as the welcome email go. It identifies the partner in the program, so it cannot match another partner's email there, ignoring case.
Clear enough to supply this argument.
program_id
Id of the program to add the partner to (prg_...), as returned when listing programs.
Clear enough to supply this argument.
first_name
Partner's first name. With last_name it is used for the default link value when link is omitted.
Clear enough to supply this argument.
last_name
Partner's last name. With first_name it makes up the name shown for the partner unless display_name is set.
Clear enough to supply this argument.
display_name
Overrides the name shown for the partner; defaults to the first and last name.
Clear enough to supply this argument.
company_name
Business the partner promotes through, if they are a company rather than a person. Leave it out for an individual.
Clear enough to supply this argument.
country_code
Two-letter ISO country code.
Clear enough to supply this argument.
website_url
URL of the partner's website.
Clear enough to supply this argument.
created_at
Backdate the partner's creation time. Defaults to now.
Clear enough to supply this argument.
group_id
Group in the program. Defaults to the program's default group.
Clear enough to supply this argument.
status
Use pending to add the partner as an application that still needs approval instead of an active partner.
Clear enough to supply this argument.
link › value
Slug that identifies the partner in referral URLs, such as `sam` in `?ref=sam`. Pick one that no other link uses with the same parameter.
Clear enough to supply this argument.
link › param
Query parameter of the link, such as `ref` in `?ref=sam`. Leave it out to use the program's first link parameter.
Clear enough to supply this argument.
notify_partner
Send the partner the program's welcome email. Only goes out when the program's welcome email is enabled and the partner is active.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"status",
"partner",
"link"
],
"properties": {
"link": {
"type": "object",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"description": "The referral link created with the partner.",
"additionalProperties": {}
},
"status": {
"type": "string",
"const": "created",
"description": "Always created: the partner and its link were created."
},
"partner": {
"type": "object",
"required": [
"id",
"email",
"first_name",
"last_name",
"company_name",
"status",
"group_id",
"program_id",
"country_code",
"website_url",
"display_name",
"completed_onboarding",
"created_at",
"updated_at",
"rejected_at",
"suspended_at"
],
"properties": {
"id": {
"type": "string",
"description": "Partner id (part_...)."
},
"email": {
"type": "string",
"description": "Partner's email."
},
"status": {
"type": "string",
"description": "Review status: active (approved), pending, rejected or suspended."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner's group (grp_...), or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"created_at": {
"type": "string",
"description": "When the partner was created, as an ISO 8601 timestamp."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the partner last changed, as an ISO 8601 timestamp."
},
"rejected_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was rejected, as an ISO 8601 timestamp, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's website, or null."
},
"company_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's company, or null."
},
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's country code, or null."
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name shown for the partner in the dashboard, or null."
},
"suspended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was suspended, as an ISO 8601 timestamp, or null."
},
"completed_onboarding": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the partner finished onboarding; only onboarded partners can be approved or rejected."
}
},
"description": "The new partner.",
"additionalProperties": {}
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "create_partner",
"title": "Create partner",
"description": "Create a partner in a program, with a referral link. Returns status created, the new partner (id, email, name, status, group and program) and the link (id, param and value). The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: status, partner (id, email, first_name, last_name, company_name, status, group_id, program_id, country_code, website_url, display_name, completed_onboarding, created_at, updated_at, rejected_at, suspended_at), link (id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"program_id"
],
"properties": {
"link": {
"type": "object",
"required": [
"value"
],
"properties": {
"param": {
"type": "string",
"example": "ref",
"maxLength": 50,
"minLength": 1,
"description": "Query parameter of the link, such as `ref` in `?ref=sam`. Leave it out to use the program's first link parameter."
},
"value": {
"type": "string",
"example": "sam",
"maxLength": 100,
"minLength": 1,
"description": "Slug that identifies the partner in referral URLs, such as `sam` in `?ref=sam`. Pick one that no other link uses with the same parameter."
}
},
"description": "The referral link created with the partner. Leave it out to build the slug from the partner's name, or from the part of the email before the @ when there is no name."
},
"email": {
"type": "string",
"format": "email",
"example": "[email protected]",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Partner's email address, where program emails such as the welcome email go. It identifies the partner in the program, so it cannot match another partner's email there, ignoring case."
},
"status": {
"enum": [
"active",
"pending"
],
"type": "string",
"default": "active",
"description": "Use pending to add the partner as an application that still needs approval instead of an active partner."
},
"group_id": {
"type": "string",
"example": "grp_1a2b3c",
"minLength": 1,
"description": "Group in the program. Defaults to the program's default group."
},
"last_name": {
"type": "string",
"example": "Rivera",
"maxLength": 150,
"minLength": 1,
"description": "Partner's last name. With first_name it makes up the name shown for the partner unless display_name is set."
},
"created_at": {
"type": "string",
"format": "date-time",
"example": "2024-01-15T10:00:00Z",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Backdate the partner's creation time. Defaults to now."
},
"first_name": {
"type": "string",
"example": "Sam",
"maxLength": 150,
"minLength": 1,
"description": "Partner's first name. With last_name it is used for the default link value when link is omitted."
},
"program_id": {
"type": "string",
"example": "prg_YRsbPDAK",
"minLength": 1,
"description": "Id of the program to add the partner to (prg_...), as returned when listing programs."
},
"website_url": {
"type": "string",
"example": "https://acme.com",
"minLength": 1,
"description": "URL of the partner's website."
},
"company_name": {
"type": "string",
"example": "Acme",
"minLength": 1,
"description": "Business the partner promotes through, if they are a company rather than a person. Leave it out for an individual."
},
"country_code": {
"type": "string",
"example": "US",
"maxLength": 2,
"minLength": 2,
"description": "Two-letter ISO country code."
},
"display_name": {
"type": "string",
"example": "Sam Rivera",
"maxLength": 150,
"minLength": 1,
"description": "Overrides the name shown for the partner; defaults to the first and last name."
},
"notify_partner": {
"type": "boolean",
"example": true,
"description": "Send the partner the program's welcome email. Only goes out when the program's welcome email is enabled and the partner is active."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"status",
"partner",
"link"
],
"properties": {
"link": {
"type": "object",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"description": "The referral link created with the partner.",
"additionalProperties": {}
},
"status": {
"type": "string",
"const": "created",
"description": "Always created: the partner and its link were created."
},
"partner": {
"type": "object",
"required": [
"id",
"email",
"first_name",
"last_name",
"company_name",
"status",
"group_id",
"program_id",
"country_code",
"website_url",
"display_name",
"completed_onboarding",
"created_at",
"updated_at",
"rejected_at",
"suspended_at"
],
"properties": {
"id": {
"type": "string",
"description": "Partner id (part_...)."
},
"email": {
"type": "string",
"description": "Partner's email."
},
"status": {
"type": "string",
"description": "Review status: active (approved), pending, rejected or suspended."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner's group (grp_...), or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"created_at": {
"type": "string",
"description": "When the partner was created, as an ISO 8601 timestamp."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the partner last changed, as an ISO 8601 timestamp."
},
"rejected_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was rejected, as an ISO 8601 timestamp, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's website, or null."
},
"company_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's company, or null."
},
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's country code, or null."
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name shown for the partner in the dashboard, or null."
},
"suspended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was suspended, as an ISO 8601 timestamp, or null."
},
"completed_onboarding": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the partner finished onboarding; only onboarded partners can be approved or rejected."
}
},
"description": "The new partner.",
"additionalProperties": {}
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Update a partner's email, name, company, country, website or group. Only the fields in `changes` are changed. Returns the updated partner with its id, email, name, company, country, website, status, group and program. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, email, first_name, last_name, company_name, status, group_id, program_id, country_code, website_url, display_name, completed_onboarding, created_at, updated_at, rejected_at, suspended_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the partner to act on, such as part_9fQ2xLL. Use an id from list results or from a related record.
Clear enough to supply this argument.
changes › email
New email for the partner, stored lowercased. It must not belong to another partner in the same program.
Clear enough to supply this argument.
changes › first_name
Partner's first name, part of the name shown for them unless they have a display name; null clears it.
Clear enough to supply this argument.
changes › last_name
Partner's family name, shown with first_name in the dashboard and partner portal; null clears it.
Clear enough to supply this argument.
changes › company_name
Business the partner promotes through; null clears it.
Clear enough to supply this argument.
changes › country_code
Partner's country as a two-letter ISO code. Commission flows can match on it.
Clear enough to supply this argument.
changes › website_url
URL of the partner's website.
Clear enough to supply this argument.
changes › group_id
Id of a group in the partner's program to move them to (grp_...), as returned when listing groups. Commission flows scoped to that group then apply to them; null removes them from their group.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"email",
"first_name",
"last_name",
"company_name",
"status",
"group_id",
"program_id",
"country_code",
"website_url",
"display_name",
"completed_onboarding",
"created_at",
"updated_at",
"rejected_at",
"suspended_at"
],
"properties": {
"id": {
"type": "string",
"description": "Partner id (part_...)."
},
"email": {
"type": "string",
"description": "Partner's email."
},
"status": {
"type": "string",
"description": "Review status: active (approved), pending, rejected or suspended."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner's group (grp_...), or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"created_at": {
"type": "string",
"description": "When the partner was created, as an ISO 8601 timestamp."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the partner last changed, as an ISO 8601 timestamp."
},
"rejected_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was rejected, as an ISO 8601 timestamp, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's website, or null."
},
"company_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's company, or null."
},
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's country code, or null."
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name shown for the partner in the dashboard, or null."
},
"suspended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was suspended, as an ISO 8601 timestamp, or null."
},
"completed_onboarding": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the partner finished onboarding; only onboarded partners can be approved or rejected."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "update_partner",
"title": "Update partner",
"description": "Update a partner's email, name, company, country, website or group. Only the fields in `changes` are changed. Returns the updated partner with its id, email, name, company, country, website, status, group and program. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, email, first_name, last_name, company_name, status, group_id, program_id, country_code, website_url, display_name, completed_onboarding, created_at, updated_at, rejected_at, suspended_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"changes"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the partner to act on, such as part_9fQ2xLL. Use an id from list results or from a related record."
},
"changes": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"example": "[email protected]",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "New email for the partner, stored lowercased. It must not belong to another partner in the same program."
},
"group_id": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
],
"example": "grp_1a2b3c",
"description": "Id of a group in the partner's program to move them to (grp_...), as returned when listing groups. Commission flows scoped to that group then apply to them; null removes them from their group."
},
"last_name": {
"anyOf": [
{
"type": "string",
"maxLength": 150,
"minLength": 1
},
{
"type": "null"
}
],
"example": "Rivera",
"description": "Partner's family name, shown with first_name in the dashboard and partner portal; null clears it."
},
"first_name": {
"anyOf": [
{
"type": "string",
"maxLength": 150,
"minLength": 1
},
{
"type": "null"
}
],
"example": "Sam",
"description": "Partner's first name, part of the name shown for them unless they have a display name; null clears it."
},
"website_url": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
],
"example": "https://acme.com",
"description": "URL of the partner's website."
},
"company_name": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
],
"example": "Acme",
"description": "Business the partner promotes through; null clears it."
},
"country_code": {
"anyOf": [
{
"type": "string",
"maxLength": 2,
"minLength": 2
},
{
"type": "null"
}
],
"example": "US",
"description": "Partner's country as a two-letter ISO code. Commission flows can match on it."
}
},
"description": "The partner fields to change. Fields you leave out keep their current value.",
"additionalProperties": false
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"email",
"first_name",
"last_name",
"company_name",
"status",
"group_id",
"program_id",
"country_code",
"website_url",
"display_name",
"completed_onboarding",
"created_at",
"updated_at",
"rejected_at",
"suspended_at"
],
"properties": {
"id": {
"type": "string",
"description": "Partner id (part_...)."
},
"email": {
"type": "string",
"description": "Partner's email."
},
"status": {
"type": "string",
"description": "Review status: active (approved), pending, rejected or suspended."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner's group (grp_...), or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"created_at": {
"type": "string",
"description": "When the partner was created, as an ISO 8601 timestamp."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the partner last changed, as an ISO 8601 timestamp."
},
"rejected_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was rejected, as an ISO 8601 timestamp, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's website, or null."
},
"company_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's company, or null."
},
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's country code, or null."
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name shown for the partner in the dashboard, or null."
},
"suspended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was suspended, as an ISO 8601 timestamp, or null."
},
"completed_onboarding": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the partner finished onboarding; only onboarded partners can be approved or rejected."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Approve partner applications in one batch. Find open applications with list_partners filtered to status pending, and pass their ids. Approved partners become active and can start promoting the program. It also makes suspended or rejected partners active again. Only partners who finished onboarding can be approved; others are reported as errors. Returns succeeded and failed counts with a result per id. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: succeeded, failed, results (each with id, status, code, message).
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
ids
Ids of the partners to act on, as returned when listing partners. Each one succeeds or fails on its own and gets its own entry in results.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"succeeded",
"failed",
"results"
],
"properties": {
"failed": {
"type": "number",
"description": "Number of ids that failed."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "The id this result is for, as passed; repeated ids appear once."
},
"code": {
"type": "string",
"description": "Error code, only when status is error, such as not_found, commission_paid or commission_exists."
},
"status": {
"enum": [
"ok",
"error"
],
"type": "string",
"description": "ok when the id was processed, error when it was not."
},
"message": {
"type": "string",
"description": "Why the id failed, only when status is error."
}
},
"additionalProperties": {}
},
"description": "One result per distinct id, in the order the ids were passed."
},
"succeeded": {
"type": "number",
"description": "Number of ids processed successfully."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "approve_partners",
"title": "Approve partners",
"description": "Approve partner applications in one batch. Find open applications with list_partners filtered to status pending, and pass their ids. Approved partners become active and can start promoting the program. It also makes suspended or rejected partners active again. Only partners who finished onboarding can be approved; others are reported as errors. Returns succeeded and failed counts with a result per id. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: succeeded, failed, results (each with id, status, code, message).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"example": [
"part_9fQ2xLL",
"part_3RtV9k"
],
"maxItems": 100,
"minItems": 1,
"description": "Ids of the partners to act on, as returned when listing partners. Each one succeeds or fails on its own and gets its own entry in results."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"succeeded",
"failed",
"results"
],
"properties": {
"failed": {
"type": "number",
"description": "Number of ids that failed."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "The id this result is for, as passed; repeated ids appear once."
},
"code": {
"type": "string",
"description": "Error code, only when status is error, such as not_found, commission_paid or commission_exists."
},
"status": {
"enum": [
"ok",
"error"
],
"type": "string",
"description": "ok when the id was processed, error when it was not."
},
"message": {
"type": "string",
"description": "Why the id failed, only when status is error."
}
},
"additionalProperties": {}
},
"description": "One result per distinct id, in the order the ids were passed."
},
"succeeded": {
"type": "number",
"description": "Number of ids processed successfully."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Reject partner applications in one batch, with an optional note. Rejected partners earn no commissions on new payments or signups. Only partners who finished onboarding can be rejected; others are reported as errors. Returns succeeded and failed counts with a result per id. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: succeeded, failed, results (each with id, status, code, message).
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
ids
Ids of the partners to act on, as returned when listing partners. Each one succeeds or fails on its own and gets its own entry in results.
Clear enough to supply this argument.
rejection_note
Reason for the rejection, shown to the partner in the partner portal. Null clears an earlier note.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"succeeded",
"failed",
"results"
],
"properties": {
"failed": {
"type": "number",
"description": "Number of ids that failed."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "The id this result is for, as passed; repeated ids appear once."
},
"code": {
"type": "string",
"description": "Error code, only when status is error, such as not_found, commission_paid or commission_exists."
},
"status": {
"enum": [
"ok",
"error"
],
"type": "string",
"description": "ok when the id was processed, error when it was not."
},
"message": {
"type": "string",
"description": "Why the id failed, only when status is error."
}
},
"additionalProperties": {}
},
"description": "One result per distinct id, in the order the ids were passed."
},
"succeeded": {
"type": "number",
"description": "Number of ids processed successfully."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "reject_partners",
"title": "Reject partners",
"description": "Reject partner applications in one batch, with an optional note. Rejected partners earn no commissions on new payments or signups. Only partners who finished onboarding can be rejected; others are reported as errors. Returns succeeded and failed counts with a result per id. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: succeeded, failed, results (each with id, status, code, message).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"example": [
"part_9fQ2xLL",
"part_3RtV9k"
],
"maxItems": 100,
"minItems": 1,
"description": "Ids of the partners to act on, as returned when listing partners. Each one succeeds or fails on its own and gets its own entry in results."
},
"rejection_note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"example": "Site does not match our audience.",
"description": "Reason for the rejection, shown to the partner in the partner portal. Null clears an earlier note."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"succeeded",
"failed",
"results"
],
"properties": {
"failed": {
"type": "number",
"description": "Number of ids that failed."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "The id this result is for, as passed; repeated ids appear once."
},
"code": {
"type": "string",
"description": "Error code, only when status is error, such as not_found, commission_paid or commission_exists."
},
"status": {
"enum": [
"ok",
"error"
],
"type": "string",
"description": "ok when the id was processed, error when it was not."
},
"message": {
"type": "string",
"description": "Why the id failed, only when status is error."
}
},
"additionalProperties": {}
},
"description": "One result per distinct id, in the order the ids were passed."
},
"succeeded": {
"type": "number",
"description": "Number of ids processed successfully."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Suspend a partner who finished onboarding, with an optional reason shown to them in the partner portal. Their status becomes suspended, so commission flows skip their new payments and signups and they stop earning commissions; commissions they already have are not changed. A partner.updated webhook is sent. approve_partners makes them active again and clears the reason. Returns the partner with status suspended. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, email, first_name, last_name, company_name, status, group_id, program_id, country_code, website_url, display_name, completed_onboarding, created_at, updated_at, rejected_at, suspended_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the partner to act on, such as part_9fQ2xLL. Use an id from list results or from a related record.
Clear enough to supply this argument.
suspension_reason
Reason for the suspension, shown to the partner in the partner portal. Null clears an earlier reason.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"email",
"first_name",
"last_name",
"company_name",
"status",
"group_id",
"program_id",
"country_code",
"website_url",
"display_name",
"completed_onboarding",
"created_at",
"updated_at",
"rejected_at",
"suspended_at"
],
"properties": {
"id": {
"type": "string",
"description": "Partner id (part_...)."
},
"email": {
"type": "string",
"description": "Partner's email."
},
"status": {
"type": "string",
"description": "Review status: active (approved), pending, rejected or suspended."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner's group (grp_...), or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"created_at": {
"type": "string",
"description": "When the partner was created, as an ISO 8601 timestamp."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the partner last changed, as an ISO 8601 timestamp."
},
"rejected_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was rejected, as an ISO 8601 timestamp, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's website, or null."
},
"company_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's company, or null."
},
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's country code, or null."
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name shown for the partner in the dashboard, or null."
},
"suspended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was suspended, as an ISO 8601 timestamp, or null."
},
"completed_onboarding": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the partner finished onboarding; only onboarded partners can be approved or rejected."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "suspend_partner",
"title": "Suspend partner",
"description": "Suspend a partner who finished onboarding, with an optional reason shown to them in the partner portal. Their status becomes suspended, so commission flows skip their new payments and signups and they stop earning commissions; commissions they already have are not changed. A partner.updated webhook is sent. approve_partners makes them active again and clears the reason. Returns the partner with status suspended. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, email, first_name, last_name, company_name, status, group_id, program_id, country_code, website_url, display_name, completed_onboarding, created_at, updated_at, rejected_at, suspended_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the partner to act on, such as part_9fQ2xLL. Use an id from list results or from a related record."
},
"suspension_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"example": "Suspicious traffic under review.",
"description": "Reason for the suspension, shown to the partner in the partner portal. Null clears an earlier reason."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"email",
"first_name",
"last_name",
"company_name",
"status",
"group_id",
"program_id",
"country_code",
"website_url",
"display_name",
"completed_onboarding",
"created_at",
"updated_at",
"rejected_at",
"suspended_at"
],
"properties": {
"id": {
"type": "string",
"description": "Partner id (part_...)."
},
"email": {
"type": "string",
"description": "Partner's email."
},
"status": {
"type": "string",
"description": "Review status: active (approved), pending, rejected or suspended."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner's group (grp_...), or null."
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's last name, or null."
},
"created_at": {
"type": "string",
"description": "When the partner was created, as an ISO 8601 timestamp."
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's first name, or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the partner last changed, as an ISO 8601 timestamp."
},
"rejected_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was rejected, as an ISO 8601 timestamp, or null."
},
"website_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's website, or null."
},
"company_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's company, or null."
},
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Partner's country code, or null."
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name shown for the partner in the dashboard, or null."
},
"suspended_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the partner was suspended, as an ISO 8601 timestamp, or null."
},
"completed_onboarding": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the partner finished onboarding; only onboarded partners can be approved or rejected."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Create a manual commission for a customer, or for a partner in a program. amount and revenue are integer minor units of the program currency. status defaults to approved. Returns the new commission with its id, amount, currency, status and the partner, customer and transaction it belongs to. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, currency, revenue, status, type, source, partner_id, customer_id, program_id, transaction_id, payout_id, charge_id, charge_status, is_ad_click, is_self_referral, approval_type, scheduled_approval_date, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
created_at
When the commission was earned, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Reports and filters by creation date place the commission on this date; the upcoming approvals forecast goes by its scheduled approval date, which this does not change. Defaults to now.
Clear enough to supply this argument.
amount
What the partner earns, in the smallest unit of the program currency (cents for USD, so 500 is 5.00).
Clear enough to supply this argument.
customer_id
Id of the customer the commission is for (cus_...), as returned when listing customers. Its partner and program are used, so partner_id and program_id are ignored.
Clear enough to supply this argument.
partner_id
Id of the partner who earns the commission (part_...), as returned when listing partners. Used with program_id when no customer_id is given.
Clear enough to supply this argument.
program_id
Id of the partner's program (prg_...). Required with partner_id when no customer_id is given.
Clear enough to supply this argument.
revenue
The sale amount the commission is based on, in the smallest unit of the program currency.
Clear enough to supply this argument.
status
pending waits for approval, approved is paid in the next payout run, rejected is never paid; paid is set only by payouts. New commissions are approved when this is left out.
Clear enough to supply this argument.
source
Free-form label for where the commission came from, such as stripe or api.
Clear enough to supply this argument.
charge_id
Id of the payment in your billing system that the commission is for, such as a Stripe charge id.
Clear enough to supply this argument.
transaction_id
Id of the transaction the commission is for (txn_...). It must belong to the commission's customer, or to its partner and program, and must not be refunded.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"currency",
"revenue",
"status",
"type",
"source",
"partner_id",
"customer_id",
"program_id",
"transaction_id",
"payout_id",
"charge_id",
"charge_status",
"is_ad_click",
"is_self_referral",
"approval_type",
"scheduled_approval_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Commission id (comm_...)."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission type as stored, such as reward, fixed or percentage, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the commission came from as stored, such as stripe, paddle or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "pending (awaiting approval), approved (paid in the next payout run), paid, rejected or refunded."
},
"revenue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Revenue the commission was earned on, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in the same currency as amount, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the commission; null means the program's currency."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"payout_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payout it was paid in (pout_...), or null while unpaid."
},
"created_at": {
"type": "string",
"description": "When the commission was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who earned it (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the commission last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"is_ad_click": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as coming from a paid ad click."
},
"approval_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the commission is approved as stored, such as manual or immediate, or null."
},
"charge_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Status of that charge as stored (for example refunded), or null."
},
"transaction_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the transaction it was earned on (txn_...), or null."
},
"is_self_referral": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as a self-referral, where the partner referred themselves."
},
"scheduled_approval_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When a pending commission is scheduled to be approved, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "create_commission",
"title": "Create commission",
"description": "Create a manual commission for a customer, or for a partner in a program. amount and revenue are integer minor units of the program currency. status defaults to approved. Returns the new commission with its id, amount, currency, status and the partner, customer and transaction it belongs to. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, currency, revenue, status, type, source, partner_id, customer_id, program_id, transaction_id, payout_id, charge_id, charge_status, is_ad_click, is_self_referral, approval_type, scheduled_approval_date, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"amount"
],
"properties": {
"amount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "What the partner earns, in the smallest unit of the program currency (cents for USD, so 500 is 5.00)."
},
"source": {
"type": "string",
"description": "Free-form label for where the commission came from, such as stripe or api."
},
"status": {
"enum": [
"pending",
"approved",
"rejected"
],
"type": "string",
"description": "pending waits for approval, approved is paid in the next payout run, rejected is never paid; paid is set only by payouts. New commissions are approved when this is left out."
},
"revenue": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The sale amount the commission is based on, in the smallest unit of the program currency."
},
"charge_id": {
"type": "string",
"description": "Id of the payment in your billing system that the commission is for, such as a Stripe charge id."
},
"created_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "When the commission was earned, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Reports and filters by creation date place the commission on this date; the upcoming approvals forecast goes by its scheduled approval date, which this does not change. Defaults to now."
},
"partner_id": {
"type": "string",
"minLength": 1,
"description": "Id of the partner who earns the commission (part_...), as returned when listing partners. Used with program_id when no customer_id is given."
},
"program_id": {
"type": "string",
"minLength": 1,
"description": "Id of the partner's program (prg_...). Required with partner_id when no customer_id is given."
},
"customer_id": {
"type": "string",
"minLength": 1,
"description": "Id of the customer the commission is for (cus_...), as returned when listing customers. Its partner and program are used, so partner_id and program_id are ignored."
},
"transaction_id": {
"type": "string",
"description": "Id of the transaction the commission is for (txn_...). It must belong to the commission's customer, or to its partner and program, and must not be refunded."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"currency",
"revenue",
"status",
"type",
"source",
"partner_id",
"customer_id",
"program_id",
"transaction_id",
"payout_id",
"charge_id",
"charge_status",
"is_ad_click",
"is_self_referral",
"approval_type",
"scheduled_approval_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Commission id (comm_...)."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission type as stored, such as reward, fixed or percentage, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the commission came from as stored, such as stripe, paddle or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "pending (awaiting approval), approved (paid in the next payout run), paid, rejected or refunded."
},
"revenue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Revenue the commission was earned on, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in the same currency as amount, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the commission; null means the program's currency."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"payout_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payout it was paid in (pout_...), or null while unpaid."
},
"created_at": {
"type": "string",
"description": "When the commission was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who earned it (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the commission last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"is_ad_click": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as coming from a paid ad click."
},
"approval_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the commission is approved as stored, such as manual or immediate, or null."
},
"charge_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Status of that charge as stored (for example refunded), or null."
},
"transaction_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the transaction it was earned on (txn_...), or null."
},
"is_self_referral": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as a self-referral, where the partner referred themselves."
},
"scheduled_approval_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When a pending commission is scheduled to be approved, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Update a commission's amount, status (pending, approved or rejected) or other fields. Amounts are integer minor units of the program currency. Paid and frozen commissions cannot change. Returns the updated commission. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, currency, revenue, status, type, source, partner_id, customer_id, program_id, transaction_id, payout_id, charge_id, charge_status, is_ad_click, is_self_referral, approval_type, scheduled_approval_date, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs84/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
Id of the commission to act on, such as comm_8KfQ2xLm. Use an id from list results or from a related record.
Clear enough to supply this argument.
changes › amount
What the partner earns, in the smallest unit of the program currency (cents for USD, so 500 is 5.00).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › revenue
The sale amount the commission is based on, in the smallest unit of the program currency.
Clear enough to supply this argument.
changes › status
pending waits for approval, approved is paid in the next payout run, rejected is never paid; paid is set only by payouts. New commissions are approved when this is left out.
Resolve the mismatch between this description and its schema constraints.
changes › source
Free-form label for where the commission came from, such as stripe or api.
Clear enough to supply this argument.
changes › charge_id
Id of the payment in your billing system that the commission is for, such as a Stripe charge id.
Clear enough to supply this argument.
changes › transaction_id
Id of the transaction the commission is for (txn_...). It must belong to the commission's customer, or to its partner and program, and must not be refunded.
Clear enough to supply this argument.
changes › created_at
When the commission was earned, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Reports and filters by creation date place the commission on this date; the upcoming approvals forecast goes by its scheduled approval date, which this does not change.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"currency",
"revenue",
"status",
"type",
"source",
"partner_id",
"customer_id",
"program_id",
"transaction_id",
"payout_id",
"charge_id",
"charge_status",
"is_ad_click",
"is_self_referral",
"approval_type",
"scheduled_approval_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Commission id (comm_...)."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission type as stored, such as reward, fixed or percentage, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the commission came from as stored, such as stripe, paddle or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "pending (awaiting approval), approved (paid in the next payout run), paid, rejected or refunded."
},
"revenue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Revenue the commission was earned on, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in the same currency as amount, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the commission; null means the program's currency."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"payout_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payout it was paid in (pout_...), or null while unpaid."
},
"created_at": {
"type": "string",
"description": "When the commission was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who earned it (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the commission last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"is_ad_click": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as coming from a paid ad click."
},
"approval_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the commission is approved as stored, such as manual or immediate, or null."
},
"charge_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Status of that charge as stored (for example refunded), or null."
},
"transaction_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the transaction it was earned on (txn_...), or null."
},
"is_self_referral": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as a self-referral, where the partner referred themselves."
},
"scheduled_approval_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When a pending commission is scheduled to be approved, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "update_commission",
"title": "Update commission",
"description": "Update a commission's amount, status (pending, approved or rejected) or other fields. Amounts are integer minor units of the program currency. Paid and frozen commissions cannot change. Returns the updated commission. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, currency, revenue, status, type, source, partner_id, customer_id, program_id, transaction_id, payout_id, charge_id, charge_status, is_ad_click, is_self_referral, approval_type, scheduled_approval_date, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"changes"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the commission to act on, such as comm_8KfQ2xLm. Use an id from list results or from a related record."
},
"changes": {
"type": "object",
"properties": {
"amount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "What the partner earns, in the smallest unit of the program currency (cents for USD, so 500 is 5.00)."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Free-form label for where the commission came from, such as stripe or api."
},
"status": {
"enum": [
"pending",
"approved",
"rejected"
],
"type": "string",
"description": "pending waits for approval, approved is paid in the next payout run, rejected is never paid; paid is set only by payouts. New commissions are approved when this is left out."
},
"revenue": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The sale amount the commission is based on, in the smallest unit of the program currency."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payment in your billing system that the commission is for, such as a Stripe charge id."
},
"created_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "When the commission was earned, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Reports and filters by creation date place the commission on this date; the upcoming approvals forecast goes by its scheduled approval date, which this does not change."
},
"transaction_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the transaction the commission is for (txn_...). It must belong to the commission's customer, or to its partner and program, and must not be refunded."
}
},
"description": "The commission fields to change. Fields you leave out keep their current value.",
"additionalProperties": false
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"currency",
"revenue",
"status",
"type",
"source",
"partner_id",
"customer_id",
"program_id",
"transaction_id",
"payout_id",
"charge_id",
"charge_status",
"is_ad_click",
"is_self_referral",
"approval_type",
"scheduled_approval_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Commission id (comm_...)."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission type as stored, such as reward, fixed or percentage, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the commission came from as stored, such as stripe, paddle or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "pending (awaiting approval), approved (paid in the next payout run), paid, rejected or refunded."
},
"revenue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Revenue the commission was earned on, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in the same currency as amount, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the commission; null means the program's currency."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"payout_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payout it was paid in (pout_...), or null while unpaid."
},
"created_at": {
"type": "string",
"description": "When the commission was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who earned it (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the commission last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"is_ad_click": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as coming from a paid ad click."
},
"approval_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the commission is approved as stored, such as manual or immediate, or null."
},
"charge_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Status of that charge as stored (for example refunded), or null."
},
"transaction_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the transaction it was earned on (txn_...), or null."
},
"is_self_referral": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as a self-referral, where the partner referred themselves."
},
"scheduled_approval_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When a pending commission is scheduled to be approved, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Approve commissions in one batch so they are paid in the next payout run. Paid commissions, commissions that are part of a refund, and commissions on a confirmed invoice cannot change and are reported as errors. Returns succeeded and failed counts with a result per id. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: succeeded, failed, results (each with id, status, code, message).
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
ids
Ids of the commissions to act on, as returned when listing commissions. Each one succeeds or fails on its own and gets its own entry in results.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"succeeded",
"failed",
"results"
],
"properties": {
"failed": {
"type": "number",
"description": "Number of ids that failed."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "The id this result is for, as passed; repeated ids appear once."
},
"code": {
"type": "string",
"description": "Error code, only when status is error, such as not_found, commission_paid or commission_exists."
},
"status": {
"enum": [
"ok",
"error"
],
"type": "string",
"description": "ok when the id was processed, error when it was not."
},
"message": {
"type": "string",
"description": "Why the id failed, only when status is error."
}
},
"additionalProperties": {}
},
"description": "One result per distinct id, in the order the ids were passed."
},
"succeeded": {
"type": "number",
"description": "Number of ids processed successfully."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "approve_commissions",
"title": "Approve commissions",
"description": "Approve commissions in one batch so they are paid in the next payout run. Paid commissions, commissions that are part of a refund, and commissions on a confirmed invoice cannot change and are reported as errors. Returns succeeded and failed counts with a result per id. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: succeeded, failed, results (each with id, status, code, message).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"example": [
"comm_8KfQ2xLm",
"comm_2Jd7rTq"
],
"maxItems": 100,
"minItems": 1,
"description": "Ids of the commissions to act on, as returned when listing commissions. Each one succeeds or fails on its own and gets its own entry in results."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"succeeded",
"failed",
"results"
],
"properties": {
"failed": {
"type": "number",
"description": "Number of ids that failed."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "The id this result is for, as passed; repeated ids appear once."
},
"code": {
"type": "string",
"description": "Error code, only when status is error, such as not_found, commission_paid or commission_exists."
},
"status": {
"enum": [
"ok",
"error"
],
"type": "string",
"description": "ok when the id was processed, error when it was not."
},
"message": {
"type": "string",
"description": "Why the id failed, only when status is error."
}
},
"additionalProperties": {}
},
"description": "One result per distinct id, in the order the ids were passed."
},
"succeeded": {
"type": "number",
"description": "Number of ids processed successfully."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Decline commissions in one batch so they are never paid. Paid commissions, commissions that are part of a refund, and commissions on a confirmed invoice cannot change and are reported as errors. Returns succeeded and failed counts with a result per id. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: succeeded, failed, results (each with id, status, code, message).
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
ids
Ids of the commissions to act on, as returned when listing commissions. Each one succeeds or fails on its own and gets its own entry in results.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"succeeded",
"failed",
"results"
],
"properties": {
"failed": {
"type": "number",
"description": "Number of ids that failed."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "The id this result is for, as passed; repeated ids appear once."
},
"code": {
"type": "string",
"description": "Error code, only when status is error, such as not_found, commission_paid or commission_exists."
},
"status": {
"enum": [
"ok",
"error"
],
"type": "string",
"description": "ok when the id was processed, error when it was not."
},
"message": {
"type": "string",
"description": "Why the id failed, only when status is error."
}
},
"additionalProperties": {}
},
"description": "One result per distinct id, in the order the ids were passed."
},
"succeeded": {
"type": "number",
"description": "Number of ids processed successfully."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "decline_commissions",
"title": "Decline commissions",
"description": "Decline commissions in one batch so they are never paid. Paid commissions, commissions that are part of a refund, and commissions on a confirmed invoice cannot change and are reported as errors. Returns succeeded and failed counts with a result per id. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: succeeded, failed, results (each with id, status, code, message).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"example": [
"comm_8KfQ2xLm",
"comm_2Jd7rTq"
],
"maxItems": 100,
"minItems": 1,
"description": "Ids of the commissions to act on, as returned when listing commissions. Each one succeeds or fails on its own and gets its own entry in results."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"succeeded",
"failed",
"results"
],
"properties": {
"failed": {
"type": "number",
"description": "Number of ids that failed."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "The id this result is for, as passed; repeated ids appear once."
},
"code": {
"type": "string",
"description": "Error code, only when status is error, such as not_found, commission_paid or commission_exists."
},
"status": {
"enum": [
"ok",
"error"
],
"type": "string",
"description": "ok when the id was processed, error when it was not."
},
"message": {
"type": "string",
"description": "Why the id failed, only when status is error."
}
},
"additionalProperties": {}
},
"description": "One result per distinct id, in the order the ids were passed."
},
"succeeded": {
"type": "number",
"description": "Number of ids processed successfully."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Permanently delete a commission. Paid and frozen commissions cannot be deleted. Returns the commission as it was before it was deleted. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, currency, revenue, status, type, source, partner_id, customer_id, program_id, transaction_id, payout_id, charge_id, charge_status, is_ad_click, is_self_referral, approval_type, scheduled_approval_date, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the commission to act on, such as comm_8KfQ2xLm. Use an id from list results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"currency",
"revenue",
"status",
"type",
"source",
"partner_id",
"customer_id",
"program_id",
"transaction_id",
"payout_id",
"charge_id",
"charge_status",
"is_ad_click",
"is_self_referral",
"approval_type",
"scheduled_approval_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Commission id (comm_...)."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission type as stored, such as reward, fixed or percentage, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the commission came from as stored, such as stripe, paddle or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "pending (awaiting approval), approved (paid in the next payout run), paid, rejected or refunded."
},
"revenue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Revenue the commission was earned on, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in the same currency as amount, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the commission; null means the program's currency."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"payout_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payout it was paid in (pout_...), or null while unpaid."
},
"created_at": {
"type": "string",
"description": "When the commission was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who earned it (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the commission last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"is_ad_click": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as coming from a paid ad click."
},
"approval_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the commission is approved as stored, such as manual or immediate, or null."
},
"charge_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Status of that charge as stored (for example refunded), or null."
},
"transaction_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the transaction it was earned on (txn_...), or null."
},
"is_self_referral": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as a self-referral, where the partner referred themselves."
},
"scheduled_approval_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When a pending commission is scheduled to be approved, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "delete_commission",
"title": "Delete commission",
"description": "Permanently delete a commission. Paid and frozen commissions cannot be deleted. Returns the commission as it was before it was deleted. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, currency, revenue, status, type, source, partner_id, customer_id, program_id, transaction_id, payout_id, charge_id, charge_status, is_ad_click, is_self_referral, approval_type, scheduled_approval_date, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the commission to act on, such as comm_8KfQ2xLm. Use an id from list results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"currency",
"revenue",
"status",
"type",
"source",
"partner_id",
"customer_id",
"program_id",
"transaction_id",
"payout_id",
"charge_id",
"charge_status",
"is_ad_click",
"is_self_referral",
"approval_type",
"scheduled_approval_date",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Commission id (comm_...)."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission type as stored, such as reward, fixed or percentage, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Commission amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the commission came from as stored, such as stripe, paddle or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "pending (awaiting approval), approved (paid in the next payout run), paid, rejected or refunded."
},
"revenue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Revenue the commission was earned on, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in the same currency as amount, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the commission; null means the program's currency."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"payout_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payout it was paid in (pout_...), or null while unpaid."
},
"created_at": {
"type": "string",
"description": "When the commission was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who earned it (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the commission last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"is_ad_click": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as coming from a paid ad click."
},
"approval_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How the commission is approved as stored, such as manual or immediate, or null."
},
"charge_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Status of that charge as stored (for example refunded), or null."
},
"transaction_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the transaction it was earned on (txn_...), or null."
},
"is_self_referral": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "true when flagged as a self-referral, where the partner referred themselves."
},
"scheduled_approval_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When a pending commission is scheduled to be approved, as an ISO 8601 timestamp, or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Record a customer (lead or paying) and attribute it to a partner. Returns the new customer with its id, status and the partner, link and program it is attributed to. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, customer_id, identifier, email, name, status, plan, subscription_id, partner_id, program_id, link_id, promotion_code_id, click_id, lead_at, active_at, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
email
Customer's email, stored lowercased and used as their identifier. It must not belong to another customer. Provide this or customer_id.
Clear enough to supply this argument.
promotion_code
Resolve a code in the partner’s program, preferring partner, group, then program scope. An unmatched code leaves attribution unchanged.
Clear enough to supply this argument.
created_at
When the customer was created, for backdating. Defaults to now; lead_at, and active_at for active customers, default to it.
Clear enough to supply this argument.
name
Customer's full name as you want it shown in the dashboard; it does not affect attribution or matching.
Clear enough to supply this argument.
customer_id
Customer's id in your billing system, such as a Stripe customer id. The billing integration matches payments to this customer by it. Provide this or email.
Clear enough to supply this argument.
status
Lifecycle stage of the customer. Defaults to lead (signed up, not paying yet); recording a transaction for the customer makes them active.
Clear enough to supply this argument.
subscription_id
Customer's subscription id in your billing system, such as a Stripe subscription id.
Clear enough to supply this argument.
click_id
Id of the tracked click the customer came from, as returned when listing clicks. It must belong to the partner, and its link is used when link_id is omitted.
Clear enough to supply this argument.
link_id
Id of the referral link the customer came through (lnk_...). Without partner_id the link's partner is used; with it, the link must belong to that partner.
Clear enough to supply this argument.
partner_id
Id of the partner who referred the customer (part_...), as returned when listing partners. The customer joins that partner's program. Provide this or link_id.
Clear enough to supply this argument.
lead_at
When the customer signed up as a lead, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Defaults to created_at.
Clear enough to supply this argument.
active_at
When the customer became a paying customer, as a timestamp with a time zone. Defaults to created_at when status is active, otherwise it is set when a transaction is recorded for the customer.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"customer_id",
"identifier",
"email",
"name",
"status",
"plan",
"subscription_id",
"partner_id",
"program_id",
"link_id",
"promotion_code_id",
"click_id",
"lead_at",
"active_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Tolt customer id (cus_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's name, or null."
},
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name the customer is on, or null."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's email, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle stage: lead (signed up, not paying), trialing, active (paying), canceled or suspended."
},
"lead_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became a lead, as an ISO 8601 timestamp, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link the customer came through (lnk_...), or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click the customer came from, or null."
},
"active_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became active (paying), as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the customer was created, as an ISO 8601 timestamp."
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier the customer was recorded with, such as their email, or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referring partner (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the customer last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The customer's id in the merchant's own system or billing provider, or null."
},
"subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Subscription id in the billing provider, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code the customer is attributed to (promo_...), or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "create_customer",
"title": "Create customer",
"description": "Record a customer (lead or paying) and attribute it to a partner. Returns the new customer with its id, status and the partner, link and program it is attributed to. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, customer_id, identifier, email, name, status, plan, subscription_id, partner_id, program_id, link_id, promotion_code_id, click_id, lead_at, active_at, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"name": {
"type": "string",
"description": "Customer's full name as you want it shown in the dashboard; it does not affect attribution or matching."
},
"email": {
"type": "string",
"minLength": 1,
"description": "Customer's email, stored lowercased and used as their identifier. It must not belong to another customer. Provide this or customer_id."
},
"status": {
"enum": [
"lead",
"active",
"canceled",
"suspended",
"trialing"
],
"type": "string",
"description": "Lifecycle stage of the customer. Defaults to lead (signed up, not paying yet); recording a transaction for the customer makes them active."
},
"lead_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "When the customer signed up as a lead, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Defaults to created_at."
},
"link_id": {
"type": "string",
"description": "Id of the referral link the customer came through (lnk_...). Without partner_id the link's partner is used; with it, the link must belong to that partner."
},
"click_id": {
"type": "string",
"description": "Id of the tracked click the customer came from, as returned when listing clicks. It must belong to the partner, and its link is used when link_id is omitted."
},
"active_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "When the customer became a paying customer, as a timestamp with a time zone. Defaults to created_at when status is active, otherwise it is set when a transaction is recorded for the customer."
},
"created_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "When the customer was created, for backdating. Defaults to now; lead_at, and active_at for active customers, default to it."
},
"partner_id": {
"type": "string",
"description": "Id of the partner who referred the customer (part_...), as returned when listing partners. The customer joins that partner's program. Provide this or link_id."
},
"customer_id": {
"type": "string",
"minLength": 1,
"description": "Customer's id in your billing system, such as a Stripe customer id. The billing integration matches payments to this customer by it. Provide this or email."
},
"promotion_code": {
"type": "string",
"minLength": 1,
"description": "Resolve a code in the partner’s program, preferring partner, group, then program scope. An unmatched code leaves attribution unchanged."
},
"subscription_id": {
"type": "string",
"description": "Customer's subscription id in your billing system, such as a Stripe subscription id."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"customer_id",
"identifier",
"email",
"name",
"status",
"plan",
"subscription_id",
"partner_id",
"program_id",
"link_id",
"promotion_code_id",
"click_id",
"lead_at",
"active_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Tolt customer id (cus_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's name, or null."
},
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name the customer is on, or null."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's email, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle stage: lead (signed up, not paying), trialing, active (paying), canceled or suspended."
},
"lead_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became a lead, as an ISO 8601 timestamp, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link the customer came through (lnk_...), or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click the customer came from, or null."
},
"active_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became active (paying), as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the customer was created, as an ISO 8601 timestamp."
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier the customer was recorded with, such as their email, or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referring partner (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the customer last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The customer's id in the merchant's own system or billing provider, or null."
},
"subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Subscription id in the billing provider, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code the customer is attributed to (promo_...), or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Update a customer's details, status, dates or attribution (link, click, promotion code). It cannot move the customer to another partner: a link or click must belong to its current partner. Only the fields in `changes` are changed. Returns the updated customer with its status, attribution and lead and conversion dates. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, customer_id, identifier, email, name, status, plan, subscription_id, partner_id, program_id, link_id, promotion_code_id, click_id, lead_at, active_at, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the customer to act on, such as cus_3pV9tRwA. Use an id from list results or from a related record.
Clear enough to supply this argument.
changes › email
New email, stored lowercased and used as the customer's identifier. It must not belong to another customer.
Clear enough to supply this argument.
changes › promotion_code
Resolve a code in the partner’s program, preferring partner, group, then program scope. An unmatched code leaves attribution unchanged. Null clears the promotion code and its derived attribution.
Clear enough to supply this argument.
changes › created_at
When the customer was created, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Reports and filters that date customers by creation use it; those that date them by conversion read active_at, which this does not change.
Clear enough to supply this argument.
changes › name
Customer's full name as you want it shown in the dashboard; it does not affect attribution or matching.
Clear enough to supply this argument.
changes › status
Lifecycle stage of the customer. Changing it does not set active_at or run commission flows.
Clear enough to supply this argument.
changes › customer_id
Customer's id in your billing system, such as a Stripe customer id. The billing integration matches payments to this customer by it.
Clear enough to supply this argument.
changes › subscription_id
Customer's subscription id in your billing system, such as a Stripe subscription id.
Clear enough to supply this argument.
changes › click_id
Id of the tracked click the customer came from, as returned when listing clicks. It must belong to the customer's partner; link_id is not changed.
Clear enough to supply this argument.
changes › link_id
Id of the referral link the customer came through (lnk_...). It must belong to the customer's partner; a customer without a partner takes the link's partner and program.
Clear enough to supply this argument.
changes › lead_at
When the customer signed up as a lead, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z.
Clear enough to supply this argument.
changes › active_at
When the customer became a paying customer, as a timestamp with a time zone.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"customer_id",
"identifier",
"email",
"name",
"status",
"plan",
"subscription_id",
"partner_id",
"program_id",
"link_id",
"promotion_code_id",
"click_id",
"lead_at",
"active_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Tolt customer id (cus_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's name, or null."
},
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name the customer is on, or null."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's email, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle stage: lead (signed up, not paying), trialing, active (paying), canceled or suspended."
},
"lead_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became a lead, as an ISO 8601 timestamp, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link the customer came through (lnk_...), or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click the customer came from, or null."
},
"active_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became active (paying), as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the customer was created, as an ISO 8601 timestamp."
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier the customer was recorded with, such as their email, or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referring partner (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the customer last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The customer's id in the merchant's own system or billing provider, or null."
},
"subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Subscription id in the billing provider, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code the customer is attributed to (promo_...), or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "update_customer",
"title": "Update customer",
"description": "Update a customer's details, status, dates or attribution (link, click, promotion code). It cannot move the customer to another partner: a link or click must belong to its current partner. Only the fields in `changes` are changed. Returns the updated customer with its status, attribution and lead and conversion dates. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, customer_id, identifier, email, name, status, plan, subscription_id, partner_id, program_id, link_id, promotion_code_id, click_id, lead_at, active_at, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"changes"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the customer to act on, such as cus_3pV9tRwA. Use an id from list results or from a related record."
},
"changes": {
"type": "object",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's full name as you want it shown in the dashboard; it does not affect attribution or matching."
},
"email": {
"type": "string",
"minLength": 1,
"description": "New email, stored lowercased and used as the customer's identifier. It must not belong to another customer."
},
"status": {
"anyOf": [
{
"enum": [
"lead",
"active",
"canceled",
"suspended",
"trialing"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle stage of the customer. Changing it does not set active_at or run commission flows."
},
"lead_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "When the customer signed up as a lead, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link the customer came through (lnk_...). It must belong to the customer's partner; a customer without a partner takes the link's partner and program."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click the customer came from, as returned when listing clicks. It must belong to the customer's partner; link_id is not changed."
},
"active_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "When the customer became a paying customer, as a timestamp with a time zone."
},
"created_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "When the customer was created, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Reports and filters that date customers by creation use it; those that date them by conversion read active_at, which this does not change."
},
"customer_id": {
"type": "string",
"minLength": 1,
"description": "Customer's id in your billing system, such as a Stripe customer id. The billing integration matches payments to this customer by it."
},
"promotion_code": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
],
"description": "Resolve a code in the partner’s program, preferring partner, group, then program scope. An unmatched code leaves attribution unchanged. Null clears the promotion code and its derived attribution."
},
"subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's subscription id in your billing system, such as a Stripe subscription id."
}
},
"description": "The customer fields to change. Fields you leave out keep their current value.",
"additionalProperties": false
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"customer_id",
"identifier",
"email",
"name",
"status",
"plan",
"subscription_id",
"partner_id",
"program_id",
"link_id",
"promotion_code_id",
"click_id",
"lead_at",
"active_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Tolt customer id (cus_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's name, or null."
},
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name the customer is on, or null."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's email, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle stage: lead (signed up, not paying), trialing, active (paying), canceled or suspended."
},
"lead_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became a lead, as an ISO 8601 timestamp, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link the customer came through (lnk_...), or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click the customer came from, or null."
},
"active_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became active (paying), as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the customer was created, as an ISO 8601 timestamp."
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier the customer was recorded with, such as their email, or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referring partner (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the customer last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The customer's id in the merchant's own system or billing provider, or null."
},
"subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Subscription id in the billing provider, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code the customer is attributed to (promo_...), or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Permanently delete a customer. Fails if it has paid commissions. Returns the customer as it was before it was deleted. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, customer_id, identifier, email, name, status, plan, subscription_id, partner_id, program_id, link_id, promotion_code_id, click_id, lead_at, active_at, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the customer to act on, such as cus_3pV9tRwA. Use an id from list results or from a related record.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"customer_id",
"identifier",
"email",
"name",
"status",
"plan",
"subscription_id",
"partner_id",
"program_id",
"link_id",
"promotion_code_id",
"click_id",
"lead_at",
"active_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Tolt customer id (cus_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's name, or null."
},
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name the customer is on, or null."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's email, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle stage: lead (signed up, not paying), trialing, active (paying), canceled or suspended."
},
"lead_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became a lead, as an ISO 8601 timestamp, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link the customer came through (lnk_...), or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click the customer came from, or null."
},
"active_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became active (paying), as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the customer was created, as an ISO 8601 timestamp."
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier the customer was recorded with, such as their email, or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referring partner (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the customer last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The customer's id in the merchant's own system or billing provider, or null."
},
"subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Subscription id in the billing provider, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code the customer is attributed to (promo_...), or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "delete_customer",
"title": "Delete customer",
"description": "Permanently delete a customer. Fails if it has paid commissions. Returns the customer as it was before it was deleted. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, customer_id, identifier, email, name, status, plan, subscription_id, partner_id, program_id, link_id, promotion_code_id, click_id, lead_at, active_at, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the customer to act on, such as cus_3pV9tRwA. Use an id from list results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"customer_id",
"identifier",
"email",
"name",
"status",
"plan",
"subscription_id",
"partner_id",
"program_id",
"link_id",
"promotion_code_id",
"click_id",
"lead_at",
"active_at",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Tolt customer id (cus_...)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's name, or null."
},
"plan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Plan name the customer is on, or null."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Customer's email, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle stage: lead (signed up, not paying), trialing, active (paying), canceled or suspended."
},
"lead_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became a lead, as an ISO 8601 timestamp, or null."
},
"link_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referral link the customer came through (lnk_...), or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click the customer came from, or null."
},
"active_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the customer became active (paying), as an ISO 8601 timestamp, or null."
},
"created_at": {
"type": "string",
"description": "When the customer was created, as an ISO 8601 timestamp."
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier the customer was recorded with, such as their email, or null."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the referring partner (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the customer last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The customer's id in the merchant's own system or billing provider, or null."
},
"subscription_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Subscription id in the billing provider, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code the customer is attributed to (promo_...), or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Create a referral link for a partner, in the partner's program. Returns the new link with its id, param and value, status, partner and program. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
value
Slug that identifies the partner in referral URLs, such as `sam` in `?ref=sam`, saved in lowercase. Pick one that no other link uses with the same parameter; a taken slug returns an error.
Clear enough to supply this argument.
param
Query parameter of the link, e.g. `ref` in `?ref=sam`. Defaults to the program's first link parameter.
Clear enough to supply this argument.
partner_id
Id of the partner who owns the link (part_...), as returned when listing partners. The link is created in that partner's program.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "create_link",
"title": "Create link",
"description": "Create a referral link for a partner, in the partner's program. Returns the new link with its id, param and value, status, partner and program. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"value",
"partner_id"
],
"properties": {
"param": {
"type": "string",
"description": "Query parameter of the link, e.g. `ref` in `?ref=sam`. Defaults to the program's first link parameter."
},
"value": {
"type": "string",
"minLength": 1,
"description": "Slug that identifies the partner in referral URLs, such as `sam` in `?ref=sam`, saved in lowercase. Pick one that no other link uses with the same parameter; a taken slug returns an error."
},
"partner_id": {
"type": "string",
"minLength": 1,
"description": "Id of the partner who owns the link (part_...), as returned when listing partners. The link is created in that partner's program."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Change a referral link's value or param. Only the fields in `changes` are changed. Returns the updated link with its id, param and value, status, partner and program. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the link to act on, such as lnk_7Hk2pQ. Use an id from list results or from a related record.
Clear enough to supply this argument.
changes › param
Query parameter of the link, e.g. `ref` in `?ref=sam`. Null uses the program's first link parameter. URLs with the old parameter stop matching this link.
Clear enough to supply this argument.
changes › value
New slug, e.g. `sam` in `?ref=sam`, stored lowercased. URLs using the old slug stop matching this link.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "update_link",
"title": "Update link",
"description": "Change a referral link's value or param. Only the fields in `changes` are changed. Returns the updated link with its id, param and value, status, partner and program. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"changes"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the link to act on, such as lnk_7Hk2pQ. Use an id from list results or from a related record."
},
"changes": {
"type": "object",
"properties": {
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Query parameter of the link, e.g. `ref` in `?ref=sam`. Null uses the program's first link parameter. URLs with the old parameter stop matching this link."
},
"value": {
"type": "string",
"minLength": 1,
"description": "New slug, e.g. `sam` in `?ref=sam`, stored lowercased. URLs using the old slug stop matching this link."
}
},
"description": "The link fields to change. Fields you leave out keep their current value.",
"additionalProperties": false
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Delete a referral link. Clicks already tracked stay attributed. Returns the link as it was before it was deleted. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the link to act on, such as lnk_7Hk2pQ. Use an id from list results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "delete_link",
"title": "Delete link",
"description": "Delete a referral link. Clicks already tracked stay attributed. Returns the link as it was before it was deleted. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, value, param, status, partner_id, program_id, campaign_id, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the link to act on, such as lnk_7Hk2pQ. Use an id from list results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"value",
"param",
"status",
"partner_id",
"program_id",
"campaign_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Referral link id (lnk_...)."
},
"param": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "URL parameter name, such as ref in ?ref=sam; null or empty means the program's default."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The link's slug, such as sam in ?ref=sam."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Link status as stored, such as active or disabled, or null."
},
"created_at": {
"type": "string",
"description": "When the link was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner who owns the link (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the link last changed, as an ISO 8601 timestamp."
},
"campaign_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the campaign the link belongs to (cmp_...), or null for a regular referral link."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Create a promotion code for a partner. Returns the new promotion code with its id, code, discount type and value, duration, active flag, and the partner and program it belongs to. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, code, type, value, duration, duration_in_months, active, entity_type, external_id, partner_id, program_id, group_id, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Input documentation gives an agent enough context to populate the arguments.
code
The discount code as customers enter it at checkout. Customers and payments that use it are attributed to the code's partner. Recording it here does not create it in your billing system.
Clear enough to supply this argument.
type
Whether value is a percent off or a fixed amount off.
Clear enough to supply this argument.
value
Size of the discount, written as text: a percent for percentage codes ("20" is 20%), or an amount in major units of the program currency for fixed codes ("20" is 20.00).
Clear enough to supply this argument.
partner_id
Id of the partner the code belongs to (part_...), as returned when listing partners. The code is created in that partner's program.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"code",
"type",
"value",
"duration",
"duration_in_months",
"active",
"entity_type",
"external_id",
"partner_id",
"program_id",
"group_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Promotion code id (promo_...)."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code as customers enter it at checkout."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Size of the discount as stored text: a percent for percentage codes (20 = 20%), or an amount in major units of the program currency for fixed codes (20 = 20.00)."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the code is active."
},
"duration": {
"type": "string",
"description": "How long the discount applies as stored, such as forever, once, one-time or repeating."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the group the code belongs to (grp_...), or null."
},
"created_at": {
"type": "string",
"description": "When the promotion code was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the code belongs to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the promotion code last changed, as an ISO 8601 timestamp."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the code belongs to as stored: partner, group or program, or null."
},
"external_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The code's id in the billing system, or null."
},
"duration_in_months": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Number of months for a repeating discount, as stored text, or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "create_promotion_code",
"title": "Create promotion code",
"description": "Create a promotion code for a partner. Returns the new promotion code with its id, code, discount type and value, duration, active flag, and the partner and program it belongs to. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, code, type, value, duration, duration_in_months, active, entity_type, external_id, partner_id, program_id, group_id, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"code",
"partner_id"
],
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "The discount code as customers enter it at checkout. Customers and payments that use it are attributed to the code's partner. Recording it here does not create it in your billing system."
},
"type": {
"enum": [
"fixed",
"percentage"
],
"type": "string",
"description": "Whether value is a percent off or a fixed amount off."
},
"value": {
"type": "string",
"description": "Size of the discount, written as text: a percent for percentage codes (\"20\" is 20%), or an amount in major units of the program currency for fixed codes (\"20\" is 20.00)."
},
"partner_id": {
"type": "string",
"minLength": 1,
"description": "Id of the partner the code belongs to (part_...), as returned when listing partners. The code is created in that partner's program."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"code",
"type",
"value",
"duration",
"duration_in_months",
"active",
"entity_type",
"external_id",
"partner_id",
"program_id",
"group_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Promotion code id (promo_...)."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code as customers enter it at checkout."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Size of the discount as stored text: a percent for percentage codes (20 = 20%), or an amount in major units of the program currency for fixed codes (20 = 20.00)."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the code is active."
},
"duration": {
"type": "string",
"description": "How long the discount applies as stored, such as forever, once, one-time or repeating."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the group the code belongs to (grp_...), or null."
},
"created_at": {
"type": "string",
"description": "When the promotion code was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the code belongs to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the promotion code last changed, as an ISO 8601 timestamp."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the code belongs to as stored: partner, group or program, or null."
},
"external_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The code's id in the billing system, or null."
},
"duration_in_months": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Number of months for a repeating discount, as stored text, or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Update a promotion code. Only the fields in `changes` are changed. This changes Tolt's record of the code only; the code in the billing system is not updated, so keep them in sync there. Returns the updated promotion code. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, code, type, value, duration, duration_in_months, active, entity_type, external_id, partner_id, program_id, group_id, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the promotion code to act on, such as promo_4Lm8Qa. Use an id from list results or from a related record.
Clear enough to supply this argument.
changes › code
The discount code as customers enter it at checkout. Customers and payments that use it are attributed to the code's partner.
Clear enough to supply this argument.
changes › type
Whether value is a percent off or a fixed amount off.
Clear enough to supply this argument.
changes › value
Size of the discount, written as text: a percent for percentage codes ("20" is 20%), or an amount in major units of the program currency for fixed codes ("20" is 20.00). null clears it.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"code",
"type",
"value",
"duration",
"duration_in_months",
"active",
"entity_type",
"external_id",
"partner_id",
"program_id",
"group_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Promotion code id (promo_...)."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code as customers enter it at checkout."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Size of the discount as stored text: a percent for percentage codes (20 = 20%), or an amount in major units of the program currency for fixed codes (20 = 20.00)."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the code is active."
},
"duration": {
"type": "string",
"description": "How long the discount applies as stored, such as forever, once, one-time or repeating."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the group the code belongs to (grp_...), or null."
},
"created_at": {
"type": "string",
"description": "When the promotion code was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the code belongs to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the promotion code last changed, as an ISO 8601 timestamp."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the code belongs to as stored: partner, group or program, or null."
},
"external_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The code's id in the billing system, or null."
},
"duration_in_months": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Number of months for a repeating discount, as stored text, or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "update_promotion_code",
"title": "Update promotion code",
"description": "Update a promotion code. Only the fields in `changes` are changed. This changes Tolt's record of the code only; the code in the billing system is not updated, so keep them in sync there. Returns the updated promotion code. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, code, type, value, duration, duration_in_months, active, entity_type, external_id, partner_id, program_id, group_id, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"changes"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the promotion code to act on, such as promo_4Lm8Qa. Use an id from list results or from a related record."
},
"changes": {
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "The discount code as customers enter it at checkout. Customers and payments that use it are attributed to the code's partner."
},
"type": {
"anyOf": [
{
"enum": [
"fixed",
"percentage"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Whether value is a percent off or a fixed amount off."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Size of the discount, written as text: a percent for percentage codes (\"20\" is 20%), or an amount in major units of the program currency for fixed codes (\"20\" is 20.00). null clears it."
}
},
"description": "The promotion code fields to change. Fields you leave out keep their current value.",
"additionalProperties": false
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"code",
"type",
"value",
"duration",
"duration_in_months",
"active",
"entity_type",
"external_id",
"partner_id",
"program_id",
"group_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Promotion code id (promo_...)."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code as customers enter it at checkout."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Size of the discount as stored text: a percent for percentage codes (20 = 20%), or an amount in major units of the program currency for fixed codes (20 = 20.00)."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the code is active."
},
"duration": {
"type": "string",
"description": "How long the discount applies as stored, such as forever, once, one-time or repeating."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the group the code belongs to (grp_...), or null."
},
"created_at": {
"type": "string",
"description": "When the promotion code was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the code belongs to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the promotion code last changed, as an ISO 8601 timestamp."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the code belongs to as stored: partner, group or program, or null."
},
"external_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The code's id in the billing system, or null."
},
"duration_in_months": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Number of months for a repeating discount, as stored text, or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Permanently delete a promotion code from Tolt. The code in the billing system is not removed, and payments that use it are no longer attributed to the partner through this code. Returns the promotion code as it was before it was deleted. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, code, type, value, duration, duration_in_months, active, entity_type, external_id, partner_id, program_id, group_id, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the promotion code to act on, such as promo_4Lm8Qa. Use an id from list results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"code",
"type",
"value",
"duration",
"duration_in_months",
"active",
"entity_type",
"external_id",
"partner_id",
"program_id",
"group_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Promotion code id (promo_...)."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code as customers enter it at checkout."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Size of the discount as stored text: a percent for percentage codes (20 = 20%), or an amount in major units of the program currency for fixed codes (20 = 20.00)."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the code is active."
},
"duration": {
"type": "string",
"description": "How long the discount applies as stored, such as forever, once, one-time or repeating."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the group the code belongs to (grp_...), or null."
},
"created_at": {
"type": "string",
"description": "When the promotion code was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the code belongs to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the promotion code last changed, as an ISO 8601 timestamp."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the code belongs to as stored: partner, group or program, or null."
},
"external_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The code's id in the billing system, or null."
},
"duration_in_months": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Number of months for a repeating discount, as stored text, or null."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "delete_promotion_code",
"title": "Delete promotion code",
"description": "Permanently delete a promotion code from Tolt. The code in the billing system is not removed, and payments that use it are no longer attributed to the partner through this code. Returns the promotion code as it was before it was deleted. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, code, type, value, duration, duration_in_months, active, entity_type, external_id, partner_id, program_id, group_id, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the promotion code to act on, such as promo_4Lm8Qa. Use an id from list results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"code",
"type",
"value",
"duration",
"duration_in_months",
"active",
"entity_type",
"external_id",
"partner_id",
"program_id",
"group_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Promotion code id (promo_...)."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The discount code as customers enter it at checkout."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "percentage or fixed, or null."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Size of the discount as stored text: a percent for percentage codes (20 = 20%), or an amount in major units of the program currency for fixed codes (20 = 20.00)."
},
"active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the code is active."
},
"duration": {
"type": "string",
"description": "How long the discount applies as stored, such as forever, once, one-time or repeating."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the group the code belongs to (grp_...), or null."
},
"created_at": {
"type": "string",
"description": "When the promotion code was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner the code belongs to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the promotion code last changed, as an ISO 8601 timestamp."
},
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the code belongs to as stored: partner, group or program, or null."
},
"external_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The code's id in the billing system, or null."
},
"duration_in_months": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Number of months for a repeating discount, as stored text, or null."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Record a transaction for a customer. amount is integer minor units of the customer's program currency. Commission flows run on it afterwards. Returns the new transaction with its id, amounts, currency, status, products, and the partner and customer it belongs to. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
created_at
When the payment happened, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Reports and date filters place the transaction on this date. Defaults to now.
Clear enough to supply this argument.
product_id
Id of the purchased product in your billing system. Commission flows can match on it.
Clear enough to supply this argument.
product_name
Readable name of the purchased product, such as Pro plan. It is saved as the transaction's product name, which revenue_by_product groups revenue by; flows match on product_id, not on this name.
Clear enough to supply this argument.
amount
The payment amount in the smallest unit of the program currency (cents for USD, so 4999 is 49.99); percentage commissions are calculated from it.
Clear enough to supply this argument.
customer_id
Id of the customer who paid (cus_...), as returned when listing customers. The transaction goes to that customer's partner and program, and the customer becomes active.
Clear enough to supply this argument.
billing_type
Kind of payment: subscription for a recurring payment, or one_time. Commission flows can match on it.
Clear enough to supply this argument.
charge_id
Id of the payment in your billing system, such as a Stripe charge id.
Clear enough to supply this argument.
click_id
Id of the tracked click behind this payment, as returned when listing clicks. Commission flows use its link before falling back to the customer's link.
Clear enough to supply this argument.
interval
Billing period of a subscription payment: month or year. Commission flows can match on it. Flows can also split a yearly payment into monthly commissions.
Clear enough to supply this argument.
source
Where the transaction came from, such as stripe or api. Commissions that flows create from it copy this value.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "create_transaction",
"title": "Create transaction",
"description": "Record a transaction for a customer. amount is integer minor units of the customer's program currency. Commission flows run on it afterwards. Returns the new transaction with its id, amounts, currency, status, products, and the partner and customer it belongs to. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"amount",
"customer_id"
],
"properties": {
"amount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The payment amount in the smallest unit of the program currency (cents for USD, so 4999 is 49.99); percentage commissions are calculated from it."
},
"source": {
"type": "string",
"description": "Where the transaction came from, such as stripe or api. Commissions that flows create from it copy this value."
},
"click_id": {
"type": "string",
"description": "Id of the tracked click behind this payment, as returned when listing clicks. Commission flows use its link before falling back to the customer's link."
},
"interval": {
"type": "string",
"description": "Billing period of a subscription payment: month or year. Commission flows can match on it. Flows can also split a yearly payment into monthly commissions."
},
"charge_id": {
"type": "string",
"description": "Id of the payment in your billing system, such as a Stripe charge id."
},
"created_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "When the payment happened, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Reports and date filters place the transaction on this date. Defaults to now."
},
"product_id": {
"type": "string",
"description": "Id of the purchased product in your billing system. Commission flows can match on it."
},
"customer_id": {
"type": "string",
"minLength": 1,
"description": "Id of the customer who paid (cus_...), as returned when listing customers. The transaction goes to that customer's partner and program, and the customer becomes active."
},
"billing_type": {
"type": "string",
"description": "Kind of payment: subscription for a recurring payment, or one_time. Commission flows can match on it."
},
"product_name": {
"type": "string",
"description": "Readable name of the purchased product, such as Pro plan. It is saved as the transaction's product name, which revenue_by_product groups revenue by; flows match on product_id, not on this name."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Update a transaction. amount is integer minor units of the program currency. Refunded transactions cannot change. Only the fields in `changes` are changed. Editing a transaction does not re-run commission flows or change its existing commissions; adjust those with update_commission. Returns the updated transaction. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
Id of the transaction to act on, such as txn_Q7hN1cZe. Use an id from list results or from a related record.
Clear enough to supply this argument.
changes › amount
The payment amount in the smallest unit of the program currency (cents for USD, so 4999 is 49.99); percentage commissions are calculated from it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › status
Payment status text, such as paid, which is what new transactions get. refunded is not accepted here: refund a transaction with the refund action. null clears the status.
Clear enough to supply this argument.
changes › source
Where the transaction came from, such as stripe or api.
Clear enough to supply this argument.
changes › billing_type
Kind of payment: subscription for a recurring payment, or one_time.
Clear enough to supply this argument.
changes › charge_id
Id of the payment in your billing system, such as a Stripe charge id.
Clear enough to supply this argument.
changes › click_id
Id of the tracked click behind this payment, as returned when listing clicks.
Clear enough to supply this argument.
changes › product_id
Id of the purchased product in your billing system.
Clear enough to supply this argument.
changes › product_name
Readable name of the purchased product, such as Pro plan. It is saved as the transaction's product name, which revenue_by_product groups revenue by; flows match on product_id, not on this name. null clears it.
Clear enough to supply this argument.
changes › interval
Billing period of a subscription payment: month or year.
Clear enough to supply this argument.
changes › created_at
When the payment happened, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Reports and date filters place the transaction on this date.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "update_transaction",
"title": "Update transaction",
"description": "Update a transaction. amount is integer minor units of the program currency. Refunded transactions cannot change. Only the fields in `changes` are changed. Editing a transaction does not re-run commission flows or change its existing commissions; adjust those with update_commission. Returns the updated transaction. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"changes"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the transaction to act on, such as txn_Q7hN1cZe. Use an id from list results or from a related record."
},
"changes": {
"type": "object",
"properties": {
"amount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The payment amount in the smallest unit of the program currency (cents for USD, so 4999 is 49.99); percentage commissions are calculated from it."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from, such as stripe or api."
},
"status": {
"anyOf": [
{
"not": {
"const": "refunded"
},
"type": "string"
},
{
"type": "null"
}
],
"description": "Payment status text, such as paid, which is what new transactions get. refunded is not accepted here: refund a transaction with the refund action. null clears the status."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the tracked click behind this payment, as returned when listing clicks."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing period of a subscription payment: month or year."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the payment in your billing system, such as a Stripe charge id."
},
"created_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "When the payment happened, as a timestamp with a time zone, for example 2026-03-01T12:00:00Z. Reports and date filters place the transaction on this date."
},
"product_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the purchased product in your billing system."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Kind of payment: subscription for a recurring payment, or one_time."
},
"product_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Readable name of the purchased product, such as Pro plan. It is saved as the transaction's product name, which revenue_by_product groups revenue by; flows match on product_id, not on this name. null clears it."
}
},
"description": "The transaction fields to change. Fields you leave out keep their current value.",
"additionalProperties": false
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Mark a transaction refunded. This cannot be undone. Its unpaid commissions are set to zero and refunded; commissions already paid get a negative clawback commission that is deducted from the partner's next payout. A transaction that is already refunded returns an error. Returns the transaction, now refunded. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the transaction to act on, such as txn_Q7hN1cZe. Use an id from list results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "refund_transaction",
"title": "Refund transaction",
"description": "Mark a transaction refunded. This cannot be undone. Its unpaid commissions are set to zero and refunded; commissions already paid get a negative clawback commission that is deducted from the partner's next payout. A transaction that is already refunded returns an error. Returns the transaction, now refunded. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the transaction to act on, such as txn_Q7hN1cZe. Use an id from list results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Permanently delete a transaction. Returns the transaction as it was before it was deleted. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
id
Id of the transaction to act on, such as txn_Q7hN1cZe. Use an id from list results or from a related record.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "delete_transaction",
"title": "Delete transaction",
"description": "Permanently delete a transaction. Returns the transaction as it was before it was deleted. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: id, amount, amount_excluding_tax, amount_including_tax, currency, tax, payment_amount, payment_currency, status, source, billing_type, interval, quantity, partner_id, customer_id, program_id, promotion_code_id, promotion_code_name, charge_id, click_id, product_ids, product_names, conversion_rate, metadata, created_at, updated_at.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Id of the transaction to act on, such as txn_Q7hN1cZe. Use an id from list results or from a related record."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"amount",
"amount_excluding_tax",
"amount_including_tax",
"currency",
"tax",
"payment_amount",
"payment_currency",
"status",
"source",
"billing_type",
"interval",
"quantity",
"partner_id",
"customer_id",
"program_id",
"promotion_code_id",
"promotion_code_name",
"charge_id",
"click_id",
"product_ids",
"product_names",
"conversion_rate",
"metadata",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"description": "Transaction id (txn_...)."
},
"tax": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Tax amount in minor units of the currency, as a number, or null."
},
"amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction amount, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), in currency (or the program's currency when currency is null), or null."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the transaction came from as stored, such as stripe, paddle, chargebee or manual, or null."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Transaction status as stored, such as paid or refunded, or null."
},
"click_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the click it is attributed to, or null."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code stored on the transaction; null means the program's currency."
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing interval, such as month or year, or null."
},
"metadata": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
],
"description": "Free-form metadata stored with the transaction, or null."
},
"quantity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Quantity purchased, or null."
},
"charge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Charge id in the billing provider, or null."
},
"created_at": {
"type": "string",
"description": "When the transaction was created, as an ISO 8601 timestamp."
},
"partner_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the partner it is attributed to (part_...), or null."
},
"program_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the program it belongs to (prg_...), or null."
},
"updated_at": {
"type": "string",
"description": "When the transaction last changed, as an ISO 8601 timestamp."
},
"customer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Tolt id of the referred customer (cus_...), or null."
},
"product_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product ids in the billing provider, or null."
},
"billing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing type as stored, such as subscription or one_time, or null."
},
"product_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Product names, or null."
},
"payment_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount in the currency the customer paid in, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99) of payment_currency, or null."
},
"conversion_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Exchange rate stored with the transaction, as a decimal string, or null."
},
"payment_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency the customer paid in, or null."
},
"promotion_code_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Id of the promotion code used (promo_...), or null."
},
"promotion_code_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Promotion code used, as named in the billing provider, or null."
},
"amount_excluding_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount without tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
},
"amount_including_tax": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Amount with tax, a string in integer minor units of the currency (cents for USD, so 1999 is 19.99), or null."
}
},
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"allOf": [
{
"$ref": "#/definitions/__schema0"
}
]
}
}
]
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Run commission flows again for a batch of transactions in one call, so the user approves the whole batch once. Pass every transaction to rerun, and split into more calls only when the list is longer than one call accepts. Transactions that are refunded or already have a commission are skipped and reported, so no duplicates are created. Returns succeeded and failed counts with a result per id; skipped transactions carry a code such as commission_exists or transaction_refunded. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: succeeded, failed, results (each with id, status, code, message).
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
ids
Ids of the transactions to act on, as returned when listing transactions. Each one succeeds or fails on its own and gets its own entry in results.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"succeeded",
"failed",
"results"
],
"properties": {
"failed": {
"type": "number",
"description": "Number of ids that failed."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "The id this result is for, as passed; repeated ids appear once."
},
"code": {
"type": "string",
"description": "Error code, only when status is error, such as not_found, commission_paid or commission_exists."
},
"status": {
"enum": [
"ok",
"error"
],
"type": "string",
"description": "ok when the id was processed, error when it was not."
},
"message": {
"type": "string",
"description": "Why the id failed, only when status is error."
}
},
"additionalProperties": {}
},
"description": "One result per distinct id, in the order the ids were passed."
},
"succeeded": {
"type": "number",
"description": "Number of ids processed successfully."
}
},
"additionalProperties": {}
}
Original tool metadata
{
"name": "rerun_transaction_flows",
"title": "Rerun flows on transactions",
"description": "Run commission flows again for a batch of transactions in one call, so the user approves the whole batch once. Pass every transaction to rerun, and split into more calls only when the list is longer than one call accepts. Transactions that are refunded or already have a commission are skipped and reported, so no duplicates are created. Returns succeeded and failed counts with a result per id; skipped transactions carry a code such as commission_exists or transaction_refunded. The app asks the user to approve this call before it runs, so call it directly instead of asking for confirmation in text. Result fields: succeeded, failed, results (each with id, status, code, message).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"example": [
"txn_Q7hN1cZe",
"txn_5Hn2vLp"
],
"maxItems": 100,
"minItems": 1,
"description": "Ids of the transactions to act on, as returned when listing transactions. Each one succeeds or fails on its own and gets its own entry in results."
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"succeeded",
"failed",
"results"
],
"properties": {
"failed": {
"type": "number",
"description": "Number of ids that failed."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "The id this result is for, as passed; repeated ids appear once."
},
"code": {
"type": "string",
"description": "Error code, only when status is error, such as not_found, commission_paid or commission_exists."
},
"status": {
"enum": [
"ok",
"error"
],
"type": "string",
"description": "ok when the id was processed, error when it was not."
},
"message": {
"type": "string",
"description": "Why the id failed, only when status is error."
}
},
"additionalProperties": {}
},
"description": "One result per distinct id, in the order the ids were passed."
},
"succeeded": {
"type": "number",
"description": "Number of ids processed successfully."
}
},
"additionalProperties": {}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01List campaignsOne page of campaigns.
02Get campaignFetch one campaign by id.
03Get transactionFetch one transaction by id.
04Performance over timeRevenue, commissions, customers, and clicks bucketed by period (granularity) over a date window (defaults to the last 90 days, max 186).
05List programsOne page of programs (usually few per org).
Want to run these tasks against your MCP server with us?
Tolt setup, tools, quality score, publishing readiness, and alternatives.
How do I add Tolt to Claude, ChatGPT, or Cursor?
Add Tolt to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://mcp.tolt.com/.
Is Tolt MCP ready for ChatGPT and Claude?
As of October 15, 2026, Tolt scores 100/100 on Manufact's MCP publishing checklist. The scan meets ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is Tolt's MCP tool documentation?
As of October 15, 2026, Tolt scores 96/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 82 of 82 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to Tolt?
As of October 15, 2026, alternatives to Tolt in sales-and-marketing on the Manufact MCP catalog include Griddo AX Docs, Rocket Sloth, Datacircle, Revnu, and Data Legion.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.