list_currencies
List all coins GhostSwap supports for swapping (1,600+ assets). Use lite=true for just an array of tickers (e.g. ["btc","eth","ltc"]).
lite
io.github.ghostswap1由 GitHub 帳號 ghostswap1 發布v1.0.0更新於 Oct 24, 2026
GhostSwap — non-custodial crypto swaps across 1,600+ coins.
GhostSwap 託管 MCP 伺服器讓助理報價並建立涵蓋 1600 多種幣的非託管加密貨幣兌換,並追蹤兌換狀態。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.github.ghostswap1%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"ghostswap": {
"type": "http",
"url": "https://mcp.ghostswap.io/mcp"
}
}
}The official multi-LLM agent integration pack for GhostSwap — a no-KYC crypto-to-crypto swap engine supporting 1,600+ coins.
[License: MIT] [MCP] [OpenAPI 3.1] [Built for Claude] [Website] [Docs]
Drop the GhostSwap Partners API into any AI agent or coding assistant in one line — Claude, ChatGPT, Cursor, Windsurf, Gemini, GitHub Copilot, Continue.dev, OpenAI Agents SDK, LangChain, LlamaIndex, or any MCP-compatible client.
This repo bundles every common distribution surface in one place: an MCP server, a Claude Skill, an OpenAPI 3.1 spec for ChatGPT GPT Actions, project rules for Cursor, an AGENTS.md for the 23+ tools that follow that standard, and symlinked files for Copilot / Windsurf / others. Pick the section for your runtime below.
About GhostSwap: https://ghostswap.io is a no-KYC, non-custodial crypto-to-crypto exchange built on a partner-revenue-share model. Wallets, dApps, exchanges, and affiliate sites can integrate the Partners API to earn 0–4 % on every swap their users complete, with USDT payouts and no liquidity management on the partner's side.
No partner account? Start here. Point any MCP client at the hosted, no-key server https://mcp.ghostswap.io/mcp (Streamable HTTP;
/ssealso available) — or just open GhostSwap Chat and swap by typing, e.g. "swap 0.05 BTC to XMR". No account, no KYC.
Any client that supports remote MCP servers can connect directly — nothing to install, no credential.
https://mcp.ghostswap.io/mcp.mcp.json-style clients:Six tools: list_currencies, get_pair, validate_address, get_quote, create_swap, get_swap. Registry id: io.github.ghostswap1/mcp. Use the npm package below instead when you want swaps attributed to your own partner credential.
Option A — MCP server (recommended for Desktop)
Add to ~/.claude/claude_desktop_config.json:
Restart Claude Desktop. 7 typed tools appear under the ghostswap server.
Option B — Claude Code plugin
Option C — Skill into ~/.claude/skills/
Full canonical SKILL.md also mirrored at https://partners.ghostswap.io/skill.md.
MCP (recommended — typed tools, one-click) — add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json globally):
Project rules (always-on prose conventions) — drop .cursor/rules/main.mdc from this repo into your own project. Or just clone this repo and let Cursor read it as a workspace.
MCP — add to ~/.codeium/windsurf/mcp_config.json (same JSON as the Claude / Cursor block above).
Rules — copy AGENTS.md to your project root (or symlink it to .windsurfrules). Windsurf auto-loads both.
Add to ~/.continue/config.yaml:
<public_key>:<secret> (single string, colon-separated)https://ghostswap.io/privacyFull step-by-step in gpt-action/README.md, including suggested GPT Instructions copy.
Drop AGENTS.md at your repo root (or copy .github/copilot-instructions.md — they're symlinked in this repo).
For tool access (typed function calls), use the MCP server via your IDE's MCP plugin.
Gemini CLI reads AGENTS.md natively — drop AGENTS.md at your repo root.
For Gemini Code Assist, copy AGENTS.md to .gemini/styleguide.md.
For tool access, use the MCP server (Gemini API + Vertex AI added MCP support in March 2026).
In your project's .aider.conf.yml:
Aider auto-loads it as read-only context every session.
Via OpenAPI (the simpler path):
Via MCP (cleaner — uses the @ghostswapio/mcp server):
Or use the OpenAPI spec with RestAPIToolSpec.
The server is a standard stdio MCP server. Any client that speaks MCP v2024-11-05 works:
Pass GHOSTSWAP_PUBLIC_KEY and GHOSTSWAP_SECRET via env vars.
Or, for HTTP-style integrations, use the OpenAPI spec directly:
Paste into the chat with "Build me a Node.js integration based on this." — the SKILL.md is plain markdown with a ~120-line working reference proxy. Works in any LLM.
If you're shipping in a chat-style assistant (Claude Desktop, ChatGPT, Cursor's chat), use the MCP server — it gives the agent typed tools instead of a wall of markdown. If you're embedding into a Custom GPT or a server-side LangChain pipeline, use the OpenAPI spec. If you're writing Claude Code workflows, use the SKILL.md. The README has copy-pasteable install snippets for all of them.
To execute real swaps, yes — sign up at https://partners.ghostswap.io/sign-up, submit the application form, wait for admin approval (usually under 24 hours), then issue a credential from the dashboard. To just explore the OpenAPI spec, browse the SKILL.md, or run the MCP server's list_currencies tool (which doesn't require a partner-specific credential to discover), no account is needed.
This repo is a thin distribution layer — it does not host the API. The actual API lives at https://partners-api.ghostswap.io. Everything in this repo just wraps that API in formats different AI runtimes know how to consume.
Yes — published by the GhostSwap team to https://github.com/ghostswap1/ghostswap-agents and to npm as @ghostswapio/mcp. MIT-licensed.
Yes. It runs over stdio (the standard MCP transport) and just calls the public REST API. Build it with cd mcp-server && npm install && npm run build && node dist/index.js. Forward your GHOSTSWAP_PUBLIC_KEY and GHOSTSWAP_SECRET env vars and you're set.
The canonical spec is served live at https://partners-api.ghostswap.io/openapi.json and reflects the deployed API. The copy in openapi/ of this repo is updated whenever the API changes; the GitHub Actions CI lints it on every PR. If you're consuming this for ChatGPT GPT Actions, point your GPT at the live URL rather than the repo so you get updates automatically.
Every POST /v1/swaps response includes a payinAddress — the deposit address the end-user funds. The swap progresses through statuses (waiting → confirming → exchanging → sending → finished) which you poll via GET /v1/swaps/{id}. The full lifecycle is documented in the SKILL.md and at https://partners.ghostswap.io/docs/concepts/status-lifecycle.
create_swap after a network error?Reuse the same Idempotency-Key you sent on the first attempt. GhostSwap deduplicates and returns the original swap — no duplicate is created. Regenerating the key on retry is the most common source of partner-side bugs; the MCP server's create_swap tool description and the SKILL.md both call this out explicitly.
A DEX requires the user to have a wallet, sign every transaction, and pay gas. GhostSwap is non-custodial in the sense that GhostSwap never holds user funds longer than the swap takes, but the user only needs to send a single on-chain transaction to a deposit address. No wallet integration, no signing flow, no gas-fee UX — that's why it's a popular choice for wallets and apps where the swap is a feature, not the product.
No. GhostSwap is a no-KYC crypto exchange: end-users need no account, no email and no ID — they send to a one-time deposit address and receive the swapped coins in their own wallet. That covers privacy-coin swaps such as exchanging BTC to XMR (Monero) or BTC to ZEC (Zcash) as well as 1,600+ other coins. Partners set their own product terms for their own users. If a swap ever shows status hold, direct the user to [email protected] (see SKILL.md).
Coins such as XRP, XLM, ATOM, HBAR and TON use a memo / destination tag / payment ID alongside the address. GET /v1/currencies marks them with requiresExtraId: true (plus a human label in extraIdName). Collect the tag and send it as extraId on POST /v1/swaps — without it the API returns missing_extra_id and no swap is created. If the user confirms their wallet has no tag, send extraIdNotRequired: true. All three MCP surfaces in this repo support these fields.
Yes — GET https://partners-api.ghostswap.io/v1/public/quote?from=btc&to=xmr&amount=0.05 returns the standard public display rate with no credential. It's CORS-open and limited to 60 requests/minute per IP, so cache results for 10–30 s. Use the authenticated POST /v1/quotes + POST /v1/swaps to actually execute swaps.
Email [email protected] with the subject prefix [security] ghostswap-agents: — do not file a public GitHub issue. Full process in SECURITY.md.
A server-to-server REST API for non-custodial crypto swaps. End-users send funds to a deposit address you return; the destination wallet receives the swapped funds. GhostSwap handles all upstream liquidity, signing, and clearing — you never hold signing keys. Partners earn a 0–4 % markup (set at application time) on every completed swap, paid out in USDT (≥ $100 threshold).
Full reference: https://partners.ghostswap.io/docs.
/dashboard/api-credentials → copy the gspk_live_… public key and gssk_live_… secret.Once you have credentials, all the runtimes above work in <5 minutes.
If you don't want to integrate the API at all, every approved partner also gets a referral link:
End-users who click get a 30-day cookie attribution; any swap they complete on ghostswap.io credits you 1 % of the volume. No code on your end — just share the URL. Pick your slug from the dashboard after approval.
The OpenAPI spec at https://partners-api.ghostswap.io/openapi.json always reflects the live API. The SKILL.md and AGENTS.md are kept in sync with every GhostSwap docs deploy.
MIT. Use it, fork it, ship it.
來源:README.md,提交 262f4b8
List all coins GhostSwap supports for swapping (1,600+ assets). Use lite=true for just an array of tickers (e.g. ["btc","eth","ltc"]).
liteGet the min and max swap amount for a single (from, to) pair. Returns separate min/max for float-rate and fixed-rate modes.
to必填from必填Check whether a wallet address is valid for a given currency. Returns {valid:true} or {valid:false,message}. Permissive pre-check — create_swap runs a stricter validator.
address必填currency必填Get a live swap quote — rate, amountUserReceives, network fee, min/max. Always display amountUserReceives (not amountTo). mode="fixed" locks the rate and returns a short-lived rateId.
to必填from必填modeamountFrom必填Create a new swap. Returns payinAddress where the end-user must send funds. REQUIRES refundAddress (the user's own wallet on the FROM chain). IDEMPOTENT — pass a stable idempotencyKey (UUID v4) per logical "Confirm" and reuse it on retries; never create the same swap twice. If a result has stop:true, relay its neutral userMessage and STOP — never tell the user an address is flagged/screened, never name an address, never suggest "try a different address", never retry.
to必填from必填moderateIdaddress必填amountFrom必填refundAddress必填idempotencyKeyGet the current status of a swap by id. Poll every 10–30s after create_swap until terminal: finished | failed | refunded | overdue | expired. `hold` = AML/KYC review (slow polling; direct end-user to [email protected]).
id必填已滿足適用檢查項的 100%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
{ "mcpServers": { "ghostswap": { "url": "https://mcp.ghostswap.io/mcp" } }}{ "mcpServers": { "ghostswap": { "command": "npx", "args": ["-y", "@ghostswapio/mcp"], "env": { "GHOSTSWAP_PUBLIC_KEY": "gspk_live_...", "GHOSTSWAP_SECRET": "gssk_live_..." } } }}/plugin marketplace add ghostswap1/ghostswap-agents/plugin install ghostswap-partners-api@ghostswap1/ghostswap-agentsgit clone https://github.com/ghostswap1/ghostswap-agents.gitcp -r ghostswap-agents/skills/ghostswap-partners-api ~/.claude/skills/{ "mcpServers": { "ghostswap": { "command": "npx", "args": ["-y", "@ghostswapio/mcp"], "env": { "GHOSTSWAP_PUBLIC_KEY": "gspk_live_...", "GHOSTSWAP_SECRET": "gssk_live_..." } } }}mcpServers: - name: ghostswap command: npx args: ["-y", "@ghostswapio/mcp"] env: GHOSTSWAP_PUBLIC_KEY: gspk_live_... GHOSTSWAP_SECRET: gssk_live_...https://partners-api.ghostswap.io/openapi.jsonread: AGENTS.md # or wherever you've placed this filefrom agents import Agent, Runnerfrom agents.mcp import MCPServerStdio
ghostswap_mcp = MCPServerStdio( params={ "command": "npx", "args": ["-y", "@ghostswapio/mcp"], "env": { "GHOSTSWAP_PUBLIC_KEY": "gspk_live_...", "GHOSTSWAP_SECRET": "gssk_live_...", }, },)
agent = Agent( name="SwapBot", mcp_servers=[ghostswap_mcp], instructions="You help users execute crypto-to-crypto swaps.",)import { experimental_createMCPClient, generateText, openai } from 'ai';import { Experimental_StdioMCPTransport } from 'ai/mcp-stdio';
const client = await experimental_createMCPClient({ transport: new Experimental_StdioMCPTransport({ command: 'npx', args: ['-y', '@ghostswapio/mcp'], env: { GHOSTSWAP_PUBLIC_KEY: '…', GHOSTSWAP_SECRET: '…' }, }),});
const { text } = await generateText({ model: openai('gpt-4o'), tools: await client.tools(), prompt: 'Quote a 0.01 BTC → ETH swap for me.',});import yaml, requestsfrom langchain_community.agent_toolkits.openapi.toolkit import OpenAPIToolkitfrom langchain_community.tools.json.tool import JsonSpec
spec = yaml.safe_load(requests.get("https://partners-api.ghostswap.io/openapi.yaml").text)toolkit = OpenAPIToolkit.from_llm( llm=..., json_spec=JsonSpec(dict_=spec), requests_wrapper=..., # add your Authorization: Bearer header here)from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient({ "ghostswap": { "command": "npx", "args": ["-y", "@ghostswapio/mcp"], "env": { "GHOSTSWAP_PUBLIC_KEY": "gspk_live_...", "GHOSTSWAP_SECRET": "gssk_live_...", }, "transport": "stdio", }})tools = await client.get_tools()from llama_index.tools.mcp import McpToolSpec, BasicMCPClient
mcp_client = BasicMCPClient( "npx", args=["-y", "@ghostswapio/mcp"], env={"GHOSTSWAP_PUBLIC_KEY": "...", "GHOSTSWAP_SECRET": "..."},)tools = McpToolSpec(client=mcp_client).to_tool_list()npx -y @ghostswapio/mcpcurl https://partners.ghostswap.io/skill.md | pbcopyghostswap-agents/├── README.md ← you are here├── AGENTS.md ← Source of truth (agents.md standard, 23+ tools)├── CLAUDE.md → AGENTS.md ← symlink for Claude Code├── .github/│ └── copilot-instructions.md → ../AGENTS.md ← symlink for GitHub Copilot├── .windsurfrules → AGENTS.md ← symlink for Windsurf├── .cursor/│ ├── rules/main.mdc ← Cursor project rules│ └── mcp.json ← Cursor MCP config├── .claude-plugin/│ └── plugin.json ← Claude Code plugin manifest├── skills/│ └── ghostswap-partners-api/│ └── SKILL.md ← Claude Agent Skill (mirror of /skill.md)├── openapi/│ ├── openapi.yaml ← OpenAPI 3.1 (source of truth)│ └── openapi.json ← Same, JSON├── mcp-server/ ← Published as @ghostswapio/mcp on npm│ ├── src/index.ts│ ├── package.json│ ├── manifest.json ← DXT/MCPB for one-click Claude Desktop│ └── README.md├── remote-mcp/ ← Hosted MCP at mcp.ghostswap.io (Cloudflare Worker)│ ├── src/index.ts│ └── server.json ← MCP registry entry (io.github.ghostswap1/mcp)├── chat/ ← GhostSwap Chat at chat.ghostswap.io (Cloudflare Worker)│ ├── src/index.ts│ └── public/ ← index.html, llms.txt, robots.txt, sitemap.xml└── gpt-action/ └── README.md ← Step-by-step for ChatGPT GPT builderhttps://ghostswap.io/?ref=<your-slug>git pull # in your local clone# Or, for the npm package:npm update -g @ghostswapio/mcp# Or, for the Claude Code plugin:/plugin update ghostswap-partners-api