- One click, where the client supports it. Cursor and VS Code install from a link; Claude Code and Codex take one command; Claude and ChatGPT take the URL in their connector settings. See the setup guides.
- OAuth, never an API key. The connector arrives with no credentials — a
browser sign-in mints a workspace-scoped token behind the scenes. Nothing you
paste into a config file is secret, so a shared
mcp.jsonleaks nothing. - Workspace-scoped. On sign-in you pick which workspace and access level to grant. The connector can only ever see that workspace’s data.
- Read + safe-configure only. No tool can move money — payouts and payment batches are deliberately not exposed. Configure tools ask for your approval in the client before they run.
Connect
1
Add the connector
Pick your client — most can add it for you, and Affixo has the buttons under
Settings → Developer & API → MCP server:Any other client takes the URL directly as a remote/custom connector:Windsurf keeps its config at There is no API key in any of these. If a setup asks you to paste an
Cursor
One click.
VS Code
One click.
Claude Code
One command.
Codex
Two commands.
Gemini CLI
One command.
Claude
Settings → Connectors.
ChatGPT
Developer mode.
~/.codeium/windsurf/mcp_config.json, and
names the field serverUrl rather than url:sa_live_ key into a config file, it’s out of date — the connector
authenticates in the browser instead.2
Connect and sign in
Click Connect. Affixo opens in your browser — sign in (or you’re already
signed in), then choose the workspace and access level:
- Read only — inspect campaigns, commissions, promoters and referrals.
- Read & write — also create/update campaigns, set commission rules (including per-product rates), configure product commissions, and invite affiliates.
3
Use it
Affixo’s tools appear in your client. Try: “List my Affixo campaigns” or
“Show my pending commissions.”
Tools
Configure (
write) tools surface to the client, whose per-tool human approval is
the confirmation gate. No tool can move money, whatever access you grant.
Result format
Every tool takes an optionalresponseFormat:
You rarely need to ask for either — your assistant picks. Reach for
json when
you want a nested field walked precisely, or when the distinction between the
string "5" and the number 5 matters; that is the one thing the table form
flattens. Nothing else is lost in markdown: every field survives, and a value
too structured for a cell is written there as compact JSON rather than dropped.
Per-product commissions
A campaign carries multiple commission rules. Each rule is a rate + recurrence plus an optional scope:product_ids (only those Stripe products)
or billing_interval (one_time purchases, monthly plans, or yearly
plans). A rule with no scope is the campaign’s default:
- A sale of a mapped product pays its rule’s rate.
- Otherwise a sale matching an interval rule pays that rate.
- Otherwise the sale pays the default rule.
- With only scoped rules and no match, the sale pays nothing.
- A product (or an interval) can belong to at most one rule per campaign.
“In my Affixo campaign, pay a flat 300 for VIP, and 10% for everything else.”The assistant will call
affixo_set_commission_rule once per rate (your client
asks you to approve each write). Products come from your Stripe sync or manual
entry — check them with “list my Affixo products”.
Non-cash rewards
Any rule — default, per-product, or per-cadence — can pay a non-cash reward (credits, points, free months) instead of a cash commission. Setreward_type="non_cash" with a unit, and amount becomes the count of that
unit:
“In my Affixo campaign, give 100 credits for the Starter product and 10% on everything else.”A non-cash rule records a fulfilment for you to apply on your own system rather than paying money — Affixo never moves funds or applies the credit itself. Each fulfilment fires the
fulfilment.pending webhook event when
earned (fulfilment.completed / fulfilment.cancelled follow its lifecycle)
and appears in the dashboard’s Rewards queue until you mark it fulfilled.
Everything else (scope precedence, recurrence) works exactly as it does for
cash rules.