Control your agent via MCP
Read your agent's strategies, talk to it, approve its proposals and change its settings from ChatGPT, Claude, Grok or your own code.
Four Swop MCP tools give an AI assistant (or your own program) the same control over your Ovi trading agent that you have in the Swop app. They're on the full endpoint, https://mcp.swopme.co/mcp, not on /mcp/commerce.
| Tool | Scope | What it does |
|---|---|---|
swop_get_my_agent | agent.read | Autonomy, venue permissions and caps, vault, strategies, playbook files, brain settings, recent activity, pending proposals and confirmations. Can also return one playbook file, or preview copying a Hyperliquid trader |
swop_resolve_strategy_markets | agent.read | Turns "gold, ETH and Nvidia" into the live perps markets a strategy can trade. Read-only |
swop_message_my_agent | agent.write | Sends a chat message and returns the agent's reply, as if typed in the app |
swop_update_my_agent | agent.write | Starts, stops, revises or refocuses strategies; sets autonomy, caps and venues; edits the playbook; mirrors a trader; approves or rejects proposals |
Set up the connector with the MCP quickstart, and grant agent.read and agent.write when you sign in.
Things to ask your assistant
- "How is my agent doing? What's it running?"
- "Pause my BTC strategy."
- "Show me what my agent is proposing and approve the first one." (the assistant shows you the preview and waits for your yes)
- "Broaden my strategy to gold and ETH perps." (
swop_resolve_strategy_markets, then arevise_strategypreview) - "Lower my daily cap to $100." (narrowing changes apply immediately)
From your own code
// `client` is a connected, signed-in MCP client (see /docs/mcp/build-an-agent)
const overview = JSON.parse(
(await client.callTool({ name: 'swop_get_my_agent', arguments: {} })).content[0].text,
);
console.log(overview.pendingProposals);
const reply = await client.callTool({
name: 'swop_message_my_agent',
arguments: { message: 'Summarise today in two lines.' },
});
console.log(reply.content[0].text);Changing settings
swop_update_my_agent takes an action. Some actions narrow risk and apply at once; anything that adds risk or moves money returns a preview that must be confirmed.
| Applies immediately | Needs a preview and your yes |
|---|---|
stop_strategy | start_strategy |
set_autonomy to proposal | set_autonomy to full |
update_station that lowers caps or disables venues | update_station that raises caps or enables venues |
update_strategy_focus | revise_strategy (always previews, with before and after) |
write_playbook, update_brain | mirror (copy a Hyperliquid trader) |
reject_proposal | approve_proposal, confirm_pending |
A preview includes a summary, a diff (every line that will change) and a riskNote. Confirm with a second call carrying only previewId and confirm: true. Previews are single-use, expire after five minutes, and only work for the assistant that made them. If the agent's settings changed in between, the confirm fails with 409 so the user never approves a stale diff: preview again.
const p = JSON.parse((await client.callTool({
name: 'swop_update_my_agent',
arguments: { action: 'approve_proposal', proposalId },
})).content[0].text);
// show p.summary, p.diff and p.riskNote to the user; on their yes:
await client.callTool({
name: 'swop_update_my_agent',
arguments: { previewId: p.previewId, confirm: true },
});Things to know
- A bare "yes" in chat isn't a confirmation.
swop_message_my_agentrefuses messages like "yes" or "confirm". Confirm an armed close or deposit withswop_update_my_agentandaction: "confirm_pending". - In full autonomy the agent may trade from a chat request. Send only what the user actually asked.
- Messaging needs AI access.
swop_message_my_agentreturns403withcode: "UPGRADE_REQUIRED"unless the account has Swop Premium or meets the SWOP-holding unlock. Reading the agent doesn't. - Get ids first. Strategy ids, proposal ids and playbook file names come from
swop_get_my_agent.