AI agents: MCP server & CLI
Let Claude, ChatGPT, Cursor, or any agent operate your affiliate program — via the hosted MCP server or the partli CLI. Both expose identical operations.
Partli ships two agent surfaces with full parity — both are thin adapters over the same operations registry, so anything one can do, the other can:
- MCP server — hosted at
https://partli.app/api/mcp, for MCP clients (Claude, ChatGPT, Cursor, …) partliCLI — for terminals and terminal-native agents (often more token-efficient than tool schemas)
Two ways to authenticate: OAuth sign-in (supported MCP clients like Claude.ai, Claude Desktop, Claude Code, and Cursor prompt you to sign in with your Partli account — no key to copy), or a workspace API key (Dashboard → API keys) for headless and CI setups. Keys are workspace-scoped and revocable; both paths are billing-gated like the rest of the API.
OAuth connections to /api/mcp land in your first workspace; use https://partli.app/api/mcp/{workspace-slug} to target a specific one (your dashboard's AI & MCP page shows the exact URL).
MCP server
Claude Code
claude mcp add --transport http partli https://partli.app/api/mcp \
--header "Authorization: Bearer pk_live_..."Claude.ai / ChatGPT (custom connector)
Add a custom connector with URL https://partli.app/api/mcp and header Authorization: Bearer pk_live_….
Cursor / other MCP clients
{
"mcpServers": {
"partli": {
"url": "https://partli.app/api/mcp",
"headers": { "Authorization": "Bearer pk_live_..." }
}
}
}CLI
npm install -g partli
partli config set-key pk_live_... # or export PARTLI_API_KEY=pk_live_...
partli stats
partli partners list --status pending
partli partners approve --email jane@example.com
partli commissions list --status approved
partli payouts run # asks for confirmation (--yes to skip)
partli sales attribute --email jane@example.com --external-id cs_live_x \
--amount 79.20 --customer buyer@example.com --note "cookie-less checkout"Output is JSON (agent-friendly; pipe through jq for reading). Two parity-guaranteeing escape hatches: partli ops lists every operation with its schema straight from the server, and partli call <op> --json '{...}' runs any operation directly — so the CLI can never lag the MCP server.
Skill, plugin and prompts
The tools say what an agent can do. The Partli skill tells it how to run a program well: step-by-step playbooks for launching a program, reviewing applications, the monthly payout close, a weekly review and moving partners from another platform, plus the rules it must follow (confirm before money moves or email is sent, never add up different currencies, follow pagination cursors).
Claude Code plugin (MCP server + skill + commands)
/plugin marketplace add https://partli.app/marketplace.json
/plugin install partli@partliThen run /mcp, choose partli and sign in. You get /partli:monthly-close, /partli:review-applications, /partli:launch-program, /partli:weekly-review and /partli:migrate-partners.
Skill only (Claude Code, Codex, other agents)
npm install -g partli
partli skill install # ~/.claude/skills and ~/.agents/skills (Codex)
partli skill install --target claudeOn claude.ai, upload partli-affiliate-program.zip under Settings → Capabilities → Skills. The raw files are at /skill/partli-affiliate-program/SKILL.md.
MCP prompts
The MCP server also serves the same playbooks as prompts (launch-program, review-applications, monthly-close, weekly-review, migrate-partners). Clients that support prompts show them as one-click commands; in Claude Code they appear as /mcp__partli__monthly-close and so on.
Operations
list_partners/get_partner— roster, status, links, click/sale stats, earningsapprove_partner/reject_partner— full approval side-effects (link, email, webhook, coupon)list_commissions— filter by status, partner, or date range; paginated withhasMore/nextCursorset_referral_domain/verify_referral_domain— put partner links on your own domain (returns the CNAME to add, then verifies it)commission_summary— totals by month, status, and currency, plus the accrued liability at a date (asOf) for year-end booksrelease_commission— approve a pending commission early (admin override of the holding period)list_payouts/run_payouts— payout history; trigger a run (real money movement)payout_balance— funding picture: balance, settling top-ups, drawable amount, and partners with earnings but no Stripe connectedsend_stripe_reminders— nudge partners with unpaid earnings to connect Stripe (auto-runs monthly too)attribute_sale— manually credit a missed referral, with dedupe by external idlist_bounties— one-off task rewardsworkspace_stats— clicks, sales, revenue, partner/commission totalsfind_affiliate_prospects/list_prospects— AI recruitment search + pipelineupdate_workspace— rename a workspace or change its URL slug (owner-only; old URLs permanently redirect)create_workspace— spin up a new product's workspace (plan workspace caps apply: Starter 1, Growth 5, Scale unlimited)create_program/update_program— create (with AI-generated description) and edit programs, including activating themcreate_bounty— post one-off task rewards, schedulable with start/end dates (Growth+)set_retainer— fixed monthly payment to a partner, minted as an approved commission on the 1stlist_campaigns/send_campaign— email campaigns with audience, program, and group targeting (confirm before sending)get_tracking_setup/verify_tracking— the snippet, install steps, and the same install check as the dashboard's Go-Live listsetup_status— the whole go-live checklist in one callinvite_partner— directly invite an approved partner (closes the recruitment loop afterfind_affiliate_prospects)ban_partner/list_fraud_flags— suspend bad actors; flagged clicks with plain-English verdictslist_bounty_claims/review_bounty_claim— review submitted bounty work; approval mints the reward commissionlist_groups/create_group/move_partner_to_group— partner tiers with their own reward ruleslist_partner_messages/message_partner— the partner-portal inboxlist_customers— referred customers and who brought them inimport_partners— bulk migration from Rewardful, Dub, FirstPromoter, PartnerStack, or Tolt (slugs preserved)account_status— plan, usage vs caps, payout balance summarylist_workspaces/use_workspace— see and switch between every workspace you belong to; every tool also takes an optionalworkspaceargument for one-off cross-workspace calls (OAuth connections)
The definitive list (with JSON Schemas) is always GET /api/agent/ops with your API key — the same registry both surfaces serve.
Raw HTTP (no MCP client, no CLI)
curl -X POST https://partli.app/api/agent/ops/list_partners \
-H "Authorization: Bearer pk_live_..." \
-H "Content-Type: application/json" \
-d '{"status": "pending", "limit": 10}'Safety
Two operations have real-world consequences
run_payoutstransfers real money via Stripe Connect — the CLI asks for confirmation, and the MCP server's instructions tell agents to confirm with you first.attribute_salecreates a real commission — it's deduped by external id, so it can't double-count, but only attribute sales you've verified.- Everything else is read-only or reversible. Revoke a key any time from Dashboard → API keys and both surfaces lose access instantly.