Connect Claude Code, Cursor, Codex, Windsurf, VS Code or Claude.ai to the Soroswap docs MCP (https://docs.soroswap.finance/mcp, no auth), install the skill, and give your agent the rules for quote, build, sign and send.
An agent that integrates Soroswap needs three things: the docs, the rules of the API, and a way
to check its work. This page gives it all three. Everything here is free and read-only unless
it says otherwise.
Resource
URL
Use it for
Docs MCP
https://docs.soroswap.finance/mcp
Search and read these docs and the OpenAPI from your editor. No auth
The skill teaches a local agent (Claude Code, Codex, Cursor) when to use which endpoint, the
errors to expect and the Stellar gotchas, so it writes a correct integration on the first try.
npx skills add https://docs.soroswap.finance
It installs skill.md, the skill these docs publish. It
tells the agent that a page it fetched from these docs wins over what the skill remembers.
Rolling out. The sections below describe the next tools for agents. They are not live yet:
until each one ships, its command fails. Use the docs MCP and the skill above in the meantime.
In Cursor, VS Code or Windsurf, add the same URL with a headers object:
"headers": { "Authorization": "Bearer sk_..." }. In Codex, set
bearer_token_env_var = "SOROSWAP_API_KEY" under [mcp_servers.soroswap].
Paste this into the AGENTS.md or CLAUDE.md of the repository where you integrate Soroswap.
It keeps the agent on the rules that matter even when it has not read these docs.
## Soroswap Aggregator API- Docs: https://docs.soroswap.finance (append .md to any page). Index: https://docs.soroswap.finance/llms.txt- Base URL: https://api.soroswap.finance. Always send ?network=mainnet or ?network=testnet; leaving it out means mainnet.- Auth: `Authorization: Bearer $SOROSWAP_API_KEY` (starts with sk_). Server side only, never in frontend code. A missing or bad key returns 403, not 401.- Flow: POST /quote -> POST /quote/build with the quote unchanged and `from` -> user signs -> POST /send (or your own RPC). Always quote before you build, and build right before signing: a Soroban XDR is valid for 180 seconds.- Submit the built XDR as is. Do not re-simulate it or call prepareTransaction on it.- Assets are contract addresses (C...), never CODE:ISSUER. Amounts are integer strings in the asset's smallest unit: XLM, USDC and every classic asset have 7 decimals, so 1 USDC = "10000000". Read decimals from the asset list for Soroban tokens.- `protocols` must list the venues: ["soroswap","aqua","sushi","comet","sdex"]. Leave out sdex when you execute from a contract or a smart wallet.- Branch on the quote's `platform` (aggregator, router, sdex) before executing.- 428 CREATE_TRUSTLINE: sign and submit actionData.xdr, then build again. 409: quote again. 429: wait Retry-After. 503: retry with backoff. Never retry a 400 unchanged.- Test on testnet first (?network=testnet, Friendbot, https://faucet.soroswap.finance). Never submit to mainnet without the user's explicit confirmation.
A correct agent turns each prompt into the calls on its right. We use this table as our own eval:
each prompt runs in a fresh session with only the docs MCP and the skill installed, and passes
when the agent makes these calls, in this order, with the right units.
Prompt
Expected sequence
Must not
”Swap 100 USDC to XLM for G...”
POST /quote (assetIn USDC C..., amount: "1000000000", EXACT_IN, all venues) → POST /quote/build (quote, from) → sign → POST /send
Most first-try failures come from units, asset addresses, an expired build or a missing
trustline. Stellar gotchas lists each one with the exact error, and
Errors says which ones to retry. If these docs led your agent astray, tell us
from the docs MCP (it has a feedback tool) or on Discord.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Soroswap Finance","description":"The Swap Aggregator for Stellar: one API that quotes every Stellar venue and returns the best route, plus the Soroswap AMM.","colors":{"primary":"#8866DD","light":"#A98BE8","dark":"#6F4FC7"},"logo":{"light":"https://mintcdn.com/soroswap/1xzCGA5zGx88_Gb9/logo/light.svg?fit=max\u0026auto=format\u0026n=1xzCGA5zGx88_Gb9\u0026q=85\u0026s=167296c66e3d90415a7f2aa982f7843b","dark":"https://mintcdn.com/soroswap/1xzCGA5zGx88_Gb9/logo/dark.svg?fit=max\u0026auto=format\u0026n=1xzCGA5zGx88_Gb9\u0026q=85\u0026s=77ca3dbbc4d3854eb6f326c89561e074","href":"https://soroswap.finance"},"favicon":"https://mintcdn.com/soroswap/1xzCGA5zGx88_Gb9/favicon.png?fit=max\u0026auto=format\u0026n=1xzCGA5zGx88_Gb9\u0026q=85\u0026s=001876061b5f304af9d8fa19a3ff1da0","api":{"openapi":"https://api.soroswap.finance/api-json","mdx":{"auth":{"method":"bearer"},"server":"https://api.soroswap.finance"}},"navbar":{"links":[{"href":"https://app.soroswap.finance","label":"Launch App"},{"href":"https://discord.gg/A2rQ3cm9XG","label":"Support"}],"primary":{"type":"button","label":"Get API key","href":"https://api.soroswap.finance/register"}},"footer":{"socials":{"x":"https://x.com/SoroswapFinance","discord":"https://discord.gg/A2rQ3cm9XG","github":"https://github.com/soroswap"}},"integrations":{"posthog":{"apiKey":"phc_C6MfPNluY4B1Kx7kFa4d2XPJmcGHhQAplhnzD8hIt6G","apiHost":"https://us.i.posthog.com","sessionRecording":false}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"markdown":{"instructions":["Soroswap Aggregator API: base URL https://api.soroswap.finance, pick the network with ?network=mainnet or ?network=testnet (omitted means mainnet).","Auth: Authorization: Bearer sk_... on every call. Get a key at https://api.soroswap.finance/register. A missing or invalid key returns 403, never 401. Free plan 1 request/s; see https://docs.soroswap.finance/api/plans.md.","Flow: POST /quote (assetIn, assetOut as C... contract addresses, amount as an integer string in the smallest unit, tradeType, protocols) -> POST /quote/build with the unchanged quote and from -> the user signs the XDR -> POST /send. Build right after quoting: a Soroban XDR is valid for 180 seconds. Submit it as is, never re-simulate it.","AI tools: docs MCP at https://docs.soroswap.finance/mcp (claude mcp add --transport http soroswap-docs https://docs.soroswap.finance/mcp), skill with npx skills add https://docs.soroswap.finance. Other clients: https://docs.soroswap.finance/api/build-with-ai.md.","Units and Stellar pitfalls: https://docs.soroswap.finance/api/stellar-gotchas.md. Errors and retries: https://docs.soroswap.finance/api/errors.md."]},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Dune Dashboard","icon":"chart-line","href":"https://dune.com/paltalabs/soroswap"},{"anchor":"GitHub","icon":"github","href":"https://github.com/soroswap"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/A2rQ3cm9XG"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"soroswap","hasAudioNarration":false,"actualSubdomain":"soroswap","customDomains":["docs.soroswap.finance"],"gitSource":{"type":"github","owner":"soroswap","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ade6f2f4a3e9e76edc2be3f","collectionId":"2c10f609-df8e-4c98-a996-c37ee49fa6a9","liveDeploymentHistoryId":"6ade6f2f4a3e9e76edc2be3f","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"}},"buildId":"6ade74214325ef366dab28cf","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"Learn","count":39},{"language":"default","tag":"Soroswap AMM","count":34},{"language":"default","tag":"API Reference","count":27},{"language":"default","tag":"Aggregator API","count":15},{"language":"default","tag":"Concepts","count":15},{"language":"default","tag":"Technical Reference","count":13},{"language":"default","tag":"Tutorials","count":11},{"language":"default","tag":"Getting Started","count":7},{"language":"default","tag":"Account","count":6},{"language":"default","tag":"Market data","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api/build-with-ai","slug":"/api/build-with-ai","pageMetadata":{"title":"Build with AI","description":"Connect Claude Code, Cursor, Codex, Windsurf, VS Code or Claude.ai to the Soroswap docs MCP (https://docs.soroswap.finance/mcp, no auth), install the skill, and give your agent the rules for quote, build, sign and send.","icon":"robot","href":"/api/build-with-ai"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Connect Claude Code, Cursor, Codex, Windsurf, VS Code or Claude.ai to the Soroswap docs MCP (\", _jsx(_components.a, {\n href: \"https://docs.soroswap.finance/mcp\",\n children: \"https://docs.soroswap.finance/mcp\"\n }), \", no auth), install the skill, and give your agent the rules for quote, build, sign and send.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tab,Table,Tabs,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`An agent that integrates Soroswap needs three things: the docs, the rules of the API, and a way\nto check its work. This page gives it all three. Everything here is free and read-only unless\nit says otherwise.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Resource`}),_jsx(_components.th,{children:`URL`}),_jsx(_components.th,{children:`Use it for`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Docs MCP`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://docs.soroswap.finance/mcp`})}),_jsx(_components.td,{children:`Search and read these docs and the OpenAPI from your editor. No auth`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`llms.txt`})}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://docs.soroswap.finance/llms.txt`,children:`docs.soroswap.finance/llms.txt`})}),_jsx(_components.td,{children:`One-fetch index of every page, with the API essentials at the top`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`llms-full.txt`})}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://docs.soroswap.finance/llms-full.txt`,children:`docs.soroswap.finance/llms-full.txt`})}),_jsx(_components.td,{children:`Every page in one file, for a RAG pipeline or a long context`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Markdown of any page`}),_jsxs(_components.td,{children:[`Append `,_jsx(_components.code,{children:`.md`}),` to its URL, for example `,_jsx(_components.a,{href:`https://docs.soroswap.finance/api/quickstart.md`,children:`/api/quickstart.md`})]}),_jsxs(_components.td,{children:[`Small, exact fetches. `,_jsx(_components.code,{children:`Accept: text/markdown`}),` works too`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`OpenAPI`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://api.soroswap.finance/api-json`,children:`api.soroswap.finance/api-json`})}),_jsx(_components.td,{children:`Request and response schemas, for code generation`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Skill`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://docs.soroswap.finance/skill.md`,children:`docs.soroswap.finance/skill.md`})}),_jsx(_components.td,{children:`What the API does, the intent router, errors and gotchas, in one file`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`connect-the-docs-mcp`,children:`Connect the docs MCP`}),`\n`,_jsx(_components.p,{children:`The docs MCP is read-only: it searches and reads documentation, it does not call the API.`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Claude Code`,id:`claude-code`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`claude`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --transport`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` http`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` soroswap-docs`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://docs.soroswap.finance/mcp`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Check it with `,_jsx(_components.code,{children:`claude mcp list`}),`. To share it with your team, put it in the project’s\n`,_jsx(_components.code,{children:`.mcp.json`}),` instead:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"mcpServers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"soroswap-docs\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"http\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://docs.soroswap.finance/mcp\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),_jsxs(Tab,{title:`Cursor`,id:`cursor`,children:[_jsxs(_components.p,{children:[`Add it to `,_jsx(_components.code,{children:`.cursor/mcp.json`}),` in your project, or to `,_jsx(_components.code,{children:`~/.cursor/mcp.json`}),` for every project:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"mcpServers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"soroswap-docs\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://docs.soroswap.finance/mcp\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsxs(_components.p,{children:[`Every page of these docs also has a `,_jsx(_components.strong,{children:`Connect to Cursor`}),` entry in its page menu.`]})]}),_jsxs(Tab,{title:`Windsurf`,id:`windsurf`,children:[_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Windsurf: Configure MCP Servers`}),` from the command palette and add it to\n`,_jsx(_components.code,{children:`mcp_config.json`}),`. Windsurf uses `,_jsx(_components.code,{children:`serverUrl`}),`, not `,_jsx(_components.code,{children:`url`}),`:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"mcpServers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"soroswap-docs\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"serverUrl\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://docs.soroswap.finance/mcp\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),_jsxs(Tab,{title:`Codex`,id:`codex`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`codex`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` soroswap-docs`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://docs.soroswap.finance/mcp`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Or in `,_jsx(_components.code,{children:`~/.codex/config.toml`}),`:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`toml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`toml`,children:_jsxs(_components.code,{language:`toml`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`mcp_servers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`soroswap-docs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://docs.soroswap.finance/mcp\"`})]}),`\n`]})})})]}),_jsxs(Tab,{title:`VS Code`,id:`vs-code`,children:[_jsxs(_components.p,{children:[`Add it to `,_jsx(_components.code,{children:`.vscode/mcp.json`}),`:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"servers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"soroswap-docs\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"http\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://docs.soroswap.finance/mcp\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsxs(_components.p,{children:[`Every page of these docs also has a `,_jsx(_components.strong,{children:`Connect to VS Code`}),` entry in its page menu.`]})]}),_jsx(Tab,{title:`Claude.ai`,id:`claude-ai`,children:_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Open `,_jsx(_components.a,{href:`https://claude.ai/settings/connectors`,children:`Settings, Connectors`}),` and choose `,_jsx(_components.strong,{children:`Add custom connector`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Name it `,_jsx(_components.strong,{children:`Soroswap Docs`}),` and set the URL to `,_jsx(_components.code,{children:`https://docs.soroswap.finance/mcp`}),`.`]}),`\n`,_jsx(_components.li,{children:`In a chat, enable it from the tools menu.`}),`\n`]})})]}),`\n`,_jsx(_components.p,{children:`Any other MCP client connects to the same URL over Streamable HTTP.`}),`\n`,_jsx(Heading,{level:`2`,id:`install-the-skill`,children:`Install the skill`}),`\n`,_jsx(_components.p,{children:`The skill teaches a local agent (Claude Code, Codex, Cursor) when to use which endpoint, the\nerrors to expect and the Stellar gotchas, so it writes a correct integration on the first try.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` skills`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://docs.soroswap.finance`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`It installs `,_jsx(_components.a,{href:`https://docs.soroswap.finance/skill.md`,children:`skill.md`}),`, the skill these docs publish. It\ntells the agent that a page it fetched from these docs wins over what the skill remembers.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Rolling out.`}),` The sections below describe the next tools for agents. They are not live yet:\nuntil each one ships, its command fails. Use the docs MCP and the skill above in the meantime.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`the-skills-repository`,children:`The skills repository`}),`\n`,_jsx(_components.p,{children:`A set of focused skills (API integration, calling the aggregator from a contract, AMM\nliquidity), with runnable examples, installable in one command:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` skills`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` soroswap/agent-skills`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`let-the-agent-call-the-api-the-trading-mcp`,children:`Let the agent call the API: the trading MCP`}),`\n`,_jsxs(_components.p,{children:[`The trading MCP lets an agent quote, build and submit swaps through the Aggregator API. It runs\ninside the API at `,_jsx(_components.code,{children:`https://api.soroswap.finance/mcp`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`It never signs.`}),` Tools that build a transaction return unsigned XDR. Your wallet or your\nsigner signs it, and only then can the agent submit it.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Your key passes through.`}),` Send the same `,_jsx(_components.code,{children:`Authorization: Bearer sk_...`}),` header the REST API\ntakes. The MCP uses it for that request and does not store it.`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`claude`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --transport`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` http`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` soroswap`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.soroswap.finance/mcp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SOROSWAP_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`In Cursor, VS Code or Windsurf, add the same URL with a `,_jsx(_components.code,{children:`headers`}),` object:\n`,_jsx(_components.code,{children:`\"headers\": { \"Authorization\": \"Bearer sk_...\" }`}),`. In Codex, set\n`,_jsx(_components.code,{children:`bearer_token_env_var = \"SOROSWAP_API_KEY\"`}),` under `,_jsx(_components.code,{children:`[mcp_servers.soroswap]`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`let-the-agent-use-a-terminal-the-cli`,children:`Let the agent use a terminal: the CLI`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`@soroswap/sdk`}),` package ships a `,_jsx(_components.code,{children:`soroswap`}),` command for agents with a shell and for bots: no\nprompts, JSON output, and signing as a separate step.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -p`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @soroswap/sdk`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` soroswap`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --help`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`rules-for-your-repository’s-agent`,children:`Rules for your repository’s agent`}),`\n`,_jsxs(_components.p,{children:[`Paste this into the `,_jsx(_components.code,{children:`AGENTS.md`}),` or `,_jsx(_components.code,{children:`CLAUDE.md`}),` of the repository where you integrate Soroswap.\nIt keeps the agent on the rules that matter even when it has not read these docs.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`21`,language:`markdown`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`markdown`,children:_jsxs(_components.code,{language:`markdown`,numberOfLines:`21`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`## Soroswap Aggregator API`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Docs: https://docs.soroswap.finance (append .md to any page). Index: https://docs.soroswap.finance/llms.txt`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Base URL: https://api.soroswap.finance. Always send ?network=mainnet or ?network=testnet;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` leaving it out means mainnet.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Auth: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#CE9178`},children:\"`Authorization: Bearer $SOROSWAP_API_KEY`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (starts with sk_). Server side only, never in`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` frontend code. A missing or bad key returns 403, not 401.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Flow: POST /quote -> POST /quote/build with the quote unchanged and `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#CE9178`},children:\"`from`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` -> user signs ->`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` POST /send (or your own RPC). Always quote before you build, and build right before signing:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` a Soroban XDR is valid for 180 seconds.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Submit the built XDR as is. Do not re-simulate it or call prepareTransaction on it.`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Assets are contract addresses (C...), never CODE:ISSUER. Amounts are integer strings in the`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` asset's smallest unit: XLM, USDC and every classic asset have 7 decimals, so 1 USDC = \"10000000\".`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Read decimals from the asset list for Soroban tokens.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#CE9178`},children:\" `protocols`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` must list the venues: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"soroswap\",\"aqua\",\"sushi\",\"comet\",\"sdex\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]. Leave out sdex`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` when you execute from a contract or a smart wallet.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Branch on the quote's `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#CE9178`},children:\"`platform`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (aggregator, router, sdex) before executing.`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` 428 CREATE_TRUSTLINE: sign and submit actionData.xdr, then build again. 409: quote again.`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` 429: wait Retry-After. 503: retry with backoff. Never retry a 400 unchanged.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Test on testnet first (?network=testnet, Friendbot, https://faucet.soroswap.finance).`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Never submit to mainnet without the user's explicit confirmation.`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`prompts-and-the-calls-they-should-produce`,children:`Prompts and the calls they should produce`}),`\n`,_jsx(_components.p,{children:`A correct agent turns each prompt into the calls on its right. We use this table as our own eval:\neach prompt runs in a fresh session with only the docs MCP and the skill installed, and passes\nwhen the agent makes these calls, in this order, with the right units.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Prompt`}),_jsx(_components.th,{children:`Expected sequence`}),_jsx(_components.th,{children:`Must not`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`”Swap 100 USDC to XLM for `,_jsx(_components.code,{children:`G...`}),`”`]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`POST /quote`}),` (`,_jsx(_components.code,{children:`assetIn`}),` USDC `,_jsx(_components.code,{children:`C...`}),`, `,_jsx(_components.code,{children:`amount: \"1000000000\"`}),`, `,_jsx(_components.code,{children:`EXACT_IN`}),`, all venues) → `,_jsx(_components.code,{children:`POST /quote/build`}),` (`,_jsx(_components.code,{children:`quote`}),`, `,_jsx(_components.code,{children:`from`}),`) → sign → `,_jsx(_components.code,{children:`POST /send`})]}),_jsxs(_components.td,{children:[`Send `,_jsx(_components.code,{children:`\"100\"`}),` or `,_jsx(_components.code,{children:`100.0`}),` as the amount`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Buy exactly 50 USDC with XLM”`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`POST /quote`}),` (`,_jsx(_components.code,{children:`tradeType: \"EXACT_OUT\"`}),`, `,_jsx(_components.code,{children:`amount: \"500000000\"`}),`) → `,_jsx(_components.code,{children:`/quote/build`}),` → sign → `,_jsx(_components.code,{children:`/send`})]}),_jsxs(_components.td,{children:[`Quote `,_jsx(_components.code,{children:`EXACT_IN`}),` and hope`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”How much XLM do I get for 10 USDC?”`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`POST /quote`}),` with no wallet, report `,_jsx(_components.code,{children:`amountOut`}),` ÷ 10^7`]}),_jsx(_components.td,{children:`Build or ask for a signature`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”What is XLM worth in USD?”`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /price?network=mainnet\u0026asset=CAS3...\u0026referenceCurrency=USD`})}),_jsxs(_components.td,{children:[`Divide `,_jsx(_components.code,{children:`price`}),` by 10^7`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`”Show the balances of `,_jsx(_components.code,{children:`G...`}),`”`]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`GET /balances/{address}?network=mainnet`}),`, report `,_jsx(_components.code,{children:`amount`}),` / `,_jsx(_components.code,{children:`available`})]}),_jsxs(_components.td,{children:[`Read `,_jsx(_components.code,{children:`rawAmount`}),` as whole units`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Swap XLM to EURC for a wallet that never held EURC”`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`/quote`}),` → `,_jsx(_components.code,{children:`/quote/build`}),` returns `,_jsx(_components.strong,{children:`428`}),` → sign and submit `,_jsx(_components.code,{children:`actionData.xdr`}),` → `,_jsx(_components.code,{children:`/quote/build`}),` again → sign → `,_jsx(_components.code,{children:`/send`})]}),_jsx(_components.td,{children:`Treat the 428 as a failure`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Let a user with no XLM receive USDC”`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`/quote`}),` with `,_jsx(_components.code,{children:`gaslessTrustline: \"create\"`}),` and `,_jsx(_components.code,{children:`sdex`}),` in `,_jsx(_components.code,{children:`protocols`}),` → `,_jsx(_components.code,{children:`/quote/build`}),` with `,_jsx(_components.code,{children:`sponsor`}),` → user and sponsor sign → `,_jsx(_components.code,{children:`/send`})]}),_jsx(_components.td,{children:`Use it when the user already has the trustline`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Which venues can you route through?”`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /protocols?network=mainnet`})}),_jsx(_components.td,{children:`Hard-code a list`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Charge my users 0.5% on swaps”`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`GET /partner`}),` → `,_jsx(_components.code,{children:`PUT /partner/rate`}),` with `,_jsx(_components.code,{children:`{\"partnerBps\": 50}`}),` (the account must already be a partner, see `,_jsx(_components.a,{href:`/api/fees`,children:`Fees`}),`)`]}),_jsxs(_components.td,{children:[`Put `,_jsx(_components.code,{children:`feeBps`}),` in the quote body, which is ignored`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Execute the best route from my Soroban contract”`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`/quote`}),` without `,_jsx(_components.code,{children:`sdex`}),` → pass `,_jsx(_components.code,{children:`rawTrade.distribution`}),` to the aggregator’s `,_jsx(_components.code,{children:`swap_exact_in`})]}),_jsxs(_components.td,{children:[`Call `,_jsx(_components.code,{children:`/quote/build`}),` with a `,_jsx(_components.code,{children:`C...`}),` address`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Test a swap on testnet”`}),_jsxs(_components.td,{children:[`Friendbot → `,_jsx(_components.code,{children:`/quote?network=testnet`}),` with `,_jsx(_components.code,{children:`protocols: [\"soroswap\"]`}),` and testnet addresses → `,_jsx(_components.code,{children:`/quote/build`}),` → sign → `,_jsx(_components.code,{children:`/send?network=testnet`})]}),_jsx(_components.td,{children:`Reuse mainnet contract addresses`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Add liquidity to the XLM/USDC pool”`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`GET /pools/{tokenA}/{tokenB}?network=mainnet\u0026protocol=soroswap`}),` for the ratio → `,_jsx(_components.code,{children:`POST /liquidity/add`}),` → sign → `,_jsx(_components.code,{children:`/send`})]}),_jsxs(_components.td,{children:[`Pick `,_jsx(_components.code,{children:`amountB`}),` off the pool ratio`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`when-an-agent-gets-something-wrong`,children:`When an agent gets something wrong`}),`\n`,_jsxs(_components.p,{children:[`Most first-try failures come from units, asset addresses, an expired build or a missing\ntrustline. `,_jsx(_components.a,{href:`/api/stellar-gotchas`,children:`Stellar gotchas`}),` lists each one with the exact error, and\n`,_jsx(_components.a,{href:`/api/errors`,children:`Errors`}),` says which ones to retry. If these docs led your agent astray, tell us\nfrom the docs MCP (it has a feedback tool) or on `,_jsx(_components.a,{href:`https://discord.gg/A2rQ3cm9XG`,children:`Discord`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Build with AI","description":"Connect Claude Code, Cursor, Codex, Windsurf, VS Code or Claude.ai to the Soroswap docs MCP (https://docs.soroswap.finance/mcp, no auth), install the skill, and give your agent the rules for quote, build, sign and send.","icon":"robot","href":"/api/build-with-ai"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Connect the docs MCP","slug":"connect-the-docs-mcp","depth":2,"children":[]},{"title":"Install the skill","slug":"install-the-skill","depth":2,"children":[{"title":"The skills repository","slug":"the-skills-repository","depth":3,"children":[]}]},{"title":"Let the agent call the API: the trading MCP","slug":"let-the-agent-call-the-api-the-trading-mcp","depth":2,"children":[]},{"title":"Let the agent use a terminal: the CLI","slug":"let-the-agent-use-a-terminal-the-cli","depth":2,"children":[]},{"title":"Rules for your repository’s agent","slug":"rules-for-your-repository’s-agent","depth":2,"children":[]},{"title":"Prompts and the calls they should produce","slug":"prompts-and-the-calls-they-should-produce","depth":2,"children":[]},{"title":"When an agent gets something wrong","slug":"when-an-agent-gets-something-wrong","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/soroswap/8cf4cc027d03ca5b/analytics.js"],"subdomain":"soroswap","siteName":"Soroswap Finance","title":"Build with AI - Soroswap Finance","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-25T21:06:00.627Z","originalFileLocation":"api/build-with-ai.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Connect Claude Code, Cursor, Codex, Windsurf, VS Code or Claude.ai to the Soroswap docs MCP (https://docs.soroswap.finance/mcp, no auth), install the skill, and give your agent the rules for quote, build, sign and send.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Soroswap Finance\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/soroswap/fuylThFPBoCQikOJ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/soroswap/fuylThFPBoCQikOJ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/soroswap/fuylThFPBoCQikOJ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/soroswap/fuylThFPBoCQikOJ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/soroswap/fuylThFPBoCQikOJ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/soroswap/fuylThFPBoCQikOJ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/soroswap/fuylThFPBoCQikOJ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/soroswap/fuylThFPBoCQikOJ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/soroswap/fuylThFPBoCQikOJ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Build with AI - Soroswap Finance\">\u003cmeta data-mint-head property=\"og:description\" content=\"Connect Claude Code, Cursor, Codex, Windsurf, VS Code or Claude.ai to the Soroswap docs MCP (https://docs.soroswap.finance/mcp, no auth), install the skill, and give your agent the rules for quote, build, sign and send.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Soroswap Finance\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.soroswap.finance/api/build-with-ai\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://soroswap.mintlify.app/_mintlify/api/og/v2?division=Get+started\u0026amp;title=Build+with+AI\u0026amp;description=Connect+Claude+Code%2C+Cursor%2C+Codex%2C+Windsurf%2C+VS+Code+or+Claude.ai+to+the+Soroswap+docs+MCP+%28https%3A%2F%2Fdocs.soroswap.finance%2Fmcp%2C+no+auth%29%2C+install+the+skill%2C+and\u0026amp;theme=1f7f3f9d39c67ea609340814\u0026amp;signature=1edf88bf436ff9cefd13e001d2f3f8d3b508c238f3b9820618ea574aebc1cc60\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Build with AI - Soroswap Finance\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Connect Claude Code, Cursor, Codex, Windsurf, VS Code or Claude.ai to the Soroswap docs MCP (https://docs.soroswap.finance/mcp, no auth), install the skill, and give your agent the rules for quote, build, sign and send.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://soroswap.mintlify.app/_mintlify/api/og/v2?division=Get+started\u0026amp;title=Build+with+AI\u0026amp;description=Connect+Claude+Code%2C+Cursor%2C+Codex%2C+Windsurf%2C+VS+Code+or+Claude.ai+to+the+Soroswap+docs+MCP+%28https%3A%2F%2Fdocs.soroswap.finance%2Fmcp%2C+no+auth%29%2C+install+the+skill%2C+and\u0026amp;theme=1f7f3f9d39c67ea609340814\u0026amp;signature=1edf88bf436ff9cefd13e001d2f3f8d3b508c238f3b9820618ea574aebc1cc60\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/soroswap/fuylThFPBoCQikOJ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Soroswap Finance\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#8866DD\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.soroswap.finance/api/build-with-ai\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/build-with-ai.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.soroswap.finance/#organization\",\"name\":\"Soroswap Finance\",\"url\":\"https://docs.soroswap.finance\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/soroswap/1xzCGA5zGx88_Gb9/logo/light.svg?fit=max\u0026auto=format\u0026n=1xzCGA5zGx88_Gb9\u0026q=85\u0026s=167296c66e3d90415a7f2aa982f7843b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.soroswap.finance#website\",\"name\":\"Soroswap Finance\",\"url\":\"https://docs.soroswap.finance\",\"publisher\":{\"@id\":\"https://docs.soroswap.finance/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.soroswap.finance/api/build-with-ai#webpage\",\"url\":\"https://docs.soroswap.finance/api/build-with-ai\",\"name\":\"Build with AI\",\"description\":\"Connect Claude Code, Cursor, Codex, Windsurf, VS Code or Claude.ai to the Soroswap docs MCP (https://docs.soroswap.finance/mcp, no auth), install the skill, and give your agent the rules for quote, build, sign and send.\",\"dateModified\":\"2026-10-25T21:06:00.627Z\",\"isPartOf\":{\"@id\":\"https://docs.soroswap.finance#website\"},\"breadcrumb\":{\"@id\":\"https://docs.soroswap.finance/api/build-with-ai#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.soroswap.finance/api/build-with-ai#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Get started\",\"item\":\"https://docs.soroswap.finance/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Build with AI\",\"item\":\"https://docs.soroswap.finance/api/build-with-ai\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.soroswap.finance/api/build-with-ai#article\",\"headline\":\"Build with AI\",\"name\":\"Build with AI\",\"description\":\"Connect Claude Code, Cursor, Codex, Windsurf, VS Code or Claude.ai to the Soroswap docs MCP (https://docs.soroswap.finance/mcp, no auth), install the skill, and give your agent the rules for quote, build, sign and send.\",\"url\":\"https://docs.soroswap.finance/api/build-with-ai\",\"mainEntityOfPage\":{\"@id\":\"https://docs.soroswap.finance/api/build-with-ai#webpage\"},\"dateModified\":\"2026-10-25T21:06:00.627Z\",\"publisher\":{\"@id\":\"https://docs.soroswap.finance/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.soroswap.finance#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Soroswap Finance\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Soroswap Finance","nav":{"global":{"anchors":[{"anchor":"Dune Dashboard","icon":"chart-line","href":"https://dune.com/paltalabs/soroswap"},{"anchor":"GitHub","icon":"github","href":"https://github.com/soroswap"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/A2rQ3cm9XG"}]},"tabs":[{"tab":"Aggregator API","groups":[{"group":"Get started","pages":[{"title":"The Swap Aggregator for Stellar","description":"The Soroswap Aggregator API at https://api.soroswap.finance quotes Soroswap, Aquarius, SushiSwap V3, Comet and SDEX, splits each trade for the best price and returns a transaction to sign. Bearer sk_ key; the free plan allows 1 request/s.","icon":"bolt","href":""},{"title":"Build with AI","icon":"robot","href":"/api/build-with-ai"},{"title":"Quickstart","description":"Mainnet in four calls: POST /quote (C... asset addresses, amount as an integer string in stroops), POST /quote/build with the unchanged quote and from, sign, POST /send. Also the API key, testnet, and API-built versus contract execution.","icon":"rocket","href":"/api/quickstart"},{"title":"Supported venues","href":"/aggregator/supported-amms"}]},{"group":"Guides","pages":[{"title":"Soroswap Integration Guide for Beginners","href":"/api/beginner-guide"},{"title":"Routing through SDEX","icon":"book-open","href":"/api/sdex"},{"title":"Gasless Trustline","icon":"bolt","href":"/api/gasless-trustline"}]},{"group":"Execute from your own contract","pages":[{"title":"Cross-Contract Integration","href":"/aggregator/technical-reference/cross-contract-integration"},{"title":"Aggregator v3","href":"/aggregator/technical-reference/contracts/aggregator-v3"},{"title":"Audits","href":"/aggregator/audits"},{"title":"Disclaimer","href":"/aggregator/disclaimer"}]},{"group":"Monetize","pages":[{"title":"Fees and revenue share","icon":"coins","href":"/api/fees"}]},{"group":"Production","pages":[{"title":"Plans and rate limits","icon":"gauge","href":"/api/plans"},{"title":"Errors","icon":"triangle-exclamation","href":"/api/errors"},{"title":"Going to production","icon":"list-check","href":"/api/going-to-production"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/quote/protocols"}]},{"tab":"Soroswap AMM","pages":[{"title":"Soroswap AMM","href":"/amm"}]},{"tab":"Learn","pages":[{"title":"Learn","href":"/what-is-soroswap"}]}]},"title":"Build with AI - Soroswap Finance","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":[],"chunks":[]}