- 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.