Tool reference
Every tool and resource the MCP server exposes, with inputs, defaults and what comes back.
Every tool takes an optional program_id (prg_…) and defaults to your organization's first program; the program://current resource lists the rest, so "in the Acme program" in a prompt is enough for the assistant to pass the right id. Errors come back as readable messages the assistant can act on, not stack traces.
Read tools
Available to every connection.
top_partners
Rank partners by revenue they brought in over a period, with commissions earned and customers referred.
| Input | Type | Default |
|---|---|---|
period | 7d, 30d, 90d, ytd, all | 30d |
limit | integer 1 to 50 | 10 |
pending_commissions
Commissions waiting for approval, oldest first, optionally only those at or above an amount.
| Input | Type | Default |
|---|---|---|
min_amount_minor | integer, minor units | 0 |
limit | integer 1 to 100 | 25 |
idle_partners
Active partners with no clicks and no sales in the last N days, the longest idle first.
| Input | Type | Default |
|---|---|---|
days | integer 1 to 365 | 30 |
limit | integer 1 to 100 | 25 |
revenue_by_period
Affiliate-driven revenue, sales, commissions and new customers bucketed by day, week or month, oldest bucket first.
| Input | Type | Default |
|---|---|---|
granularity | day, week, month | month |
periods | integer 1 to 90, buckets back from now | 12 |
partner_detail
Everything about one partner: status, group, balances, lifetime revenue, recent commissions.
| Input | Type | Notes |
|---|---|---|
handle_or_email | string | The partner's handle (their ?ref= value) or email address |
payout_status
Payouts by status, with every failed or not-eligible payout and its reason.
| Input | Type | Default |
|---|---|---|
period | this_month, last_month, all | this_month |
flows_summary
The program's commission flows in priority order: scope, default rate, approval mode, branch count and what each has produced. No inputs beyond program_id.
recent_referrals
The latest referred visits, newest first, with the partner, status (visit, lead, converted) and landing page.
| Input | Type | Default |
|---|---|---|
limit | integer 1 to 100 | 20 |
list_partners
Search partners by name, handle or email, optionally one status, newest first. A blank search lists everyone up to the limit.
| Input | Type | Default |
|---|---|---|
query | string, name, handle or email fragment | none |
status | pending, active, declined, suspended | all |
limit | integer 1 to 100 | 25 |
list_customers
Search customers by email, name or identifier, optionally one status, newest first. Each row carries the partner who referred them, or none when the sale arrived direct.
| Input | Type | Default |
|---|---|---|
query | string, email, name or identifier fragment | none |
status | lead, trial, active, cancelled, refunded, suspended | all |
limit | integer 1 to 100 | 25 |
list_commissions
Commissions in any status, newest first, with totals for the filter. For the approval queue specifically, pending_commissions is the one that orders oldest first.
| Input | Type | Default |
|---|---|---|
status | pending, approved, due, paid, rejected, voided | all |
partner_handle | string, only this partner's commissions | all partners |
limit | integer 1 to 100 | 25 |
list_applications
Who is waiting for review and why, oldest first: their answers, where they came from, and any safeguard holds written out in words.
| Input | Type | Default |
|---|---|---|
limit | integer 1 to 100 | 25 |
report
The dashboard's own report engine: clicks, leads, customers, sales, refunds, revenue and commissions, cut six ways over a date range. Rows keyed direct are money that arrived without a partner; the totals include them, which is why they match the dashboard headline. Filtering by partner, group or tag leaves direct money out, because those filters mean "this slice of the partner programme".
| Input | Type | Default |
|---|---|---|
dimension | partner, link, product, group, tag, period | partner |
from | ISO date, inclusive | twelve months back |
to | ISO date, inclusive | now |
granularity | day, week, month, for the period dimension | month |
list_risk_flags
Fraud signals with their evidence, highest severity first: self-referrals, refund spikes and the rest. History stays readable on every plan; new flags come from the risk checks.
| Input | Type | Default |
|---|---|---|
status | open, reviewing, resolved, dismissed | all |
limit | integer 1 to 100 | 25 |
list_resources
The shelf partners see: files and links, in their folders, with audience scoping and published state. No inputs beyond program_id.
messaging_status
Every campaign with its delivery stats and every sequence with its enrolment counts, so you can see at a glance what is sending, paused or done. No inputs beyond program_id.
Write tools
Registered only when the key carries a write scope, and the scope is checked again on every call. Keep these on "needs approval" in your assistant's tool permissions, so you confirm each change before it happens.
approve_commission
Approve one pending commission by id. It becomes due for payout once its holding period has run.
| Input | Type | Notes |
|---|---|---|
commission_id | string | com_… |
reject_commission
Reject one unpaid commission by id, with a reason the partner will see. The money is returned to the program.
| Input | Type | Notes |
|---|---|---|
commission_id | string | com_… |
reason | string, 1 to 500 chars | Shown to the partner |
invite_partner
Invite someone by email as a pending partner, optionally into a named group. They still go through the review queue.
| Input | Type | Notes |
|---|---|---|
email | string | Required |
group | string | Group name or slug; leave out for none |
name | string | If known |
approve_application
Approve a pending application by id (list_applications has the queue). The partner goes active, their links go live, and they are told by email.
| Input | Type | Notes |
|---|---|---|
application_id | string | app_… |
reject_application
Decline a pending application. The reason is read word for word by the applicant; leave it out and the program's default sentence is used instead.
| Input | Type | Notes |
|---|---|---|
application_id | string | app_… |
reason | string, up to 1000 chars | Optional; shown to the applicant |
resolve_risk_flag
Close one open or reviewing flag as resolved (you acted on it) or dismissed (false alarm). The note is required, because it is the audit trail.
| Input | Type | Notes |
|---|---|---|
risk_flag_id | string | rsk_… |
status | resolved or dismissed | Default resolved |
note | string, 1 to 1000 chars | What you found |
create_resource_link
Put a link on the partners' resources shelf. Files are uploaded in the dashboard, so this tool mints links only.
| Input | Type | Notes |
|---|---|---|
title | string, 1 to 120 chars | Required |
url | string | The http(s) address the shelf links to |
folder | string, up to 60 chars | Leave out for the top level |
publish | boolean | Default true |
update_resource
Rename a resource, move it to a folder, repoint a link, or publish and unpublish it. list_resources has the ids. Only the fields you send change.
| Input | Type | Notes |
|---|---|---|
resource_id | string | res_… |
title | string, 1 to 120 chars | Optional |
url | string | Optional, links only |
folder | string or null | Optional; null moves it to the top level |
published | boolean | Optional |
delete_resource
Take one resource off the shelf for good. A file's stored blob goes with it.
| Input | Type | Notes |
|---|---|---|
resource_id | string | res_… |
send_campaign
Send a draft or paused campaign now, to the audience already saved on it. This is real email to real partners and cannot be recalled, so the tool is marked destructive: confirm the campaign name and its audience before you approve it.
| Input | Type | Notes |
|---|---|---|
campaign_id | string | camp_…; messaging_status has the list |
pause_sequence
Stop a sequence sending. Nobody is dropped: resuming carries each partner on from the step they were on.
| Input | Type | Notes |
|---|---|---|
sequence_id | string | seq_… |
resume_sequence
Turn a paused sequence back on.
| Input | Type | Notes |
|---|---|---|
sequence_id | string | seq_… |
Every write returns a confirmation payload (what changed, from what to what, with formatted amounts) and lands in your audit log with the key that made it. See Security.
Resources
program://current
Your default program's settings, plan, partner and commission counts, plus every other program on the organization with its id, currency and portal address. Assistants are instructed to read this first when they need to know which program, currency or plan they are looking at.
catalog://events
The webhook event catalogue: every event the platform emits, grouped by family, with a description and an example payload. The same content as the webhooks guide, shaped for a model.