{"_id":"@8dx/8dx-mcp-server","_rev":"3-3b75eb6d63faca95f4942c76691dd049","name":"@8dx/8dx-mcp-server","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@8dx/8dx-mcp-server","version":"0.1.0","keywords":["8dx","mcp","model-context-protocol","dex","defi","ai-agents"],"author":{"name":"Planet 9"},"license":"MIT","_id":"@8dx/8dx-mcp-server@0.1.0","maintainers":[{"name":"ingvarrior","email":"jaysonfrost6@gmail.com"},{"name":"8dx-service","email":"service@8dx.io"},{"name":"planet9-cc","email":"8dx@8dx.io"}],"homepage":"https://github.com/8DX-io/8dx-mcp-server#readme","bugs":{"url":"https://github.com/8DX-io/8dx-mcp-server/issues"},"bin":{"8dx-mcp-server":"dist/index.js"},"dist":{"shasum":"cd98c60737ea7360abf1c7756e3ee7a220239a9c","tarball":"https://registry.npmjs.org/@8dx/8dx-mcp-server/-/8dx-mcp-server-0.1.0.tgz","fileCount":30,"integrity":"sha512-01p5IJvqNhD0YBPM28S21EAEWVpAIr0js8aq/HZP52z/kT7/inAP4D9dyIodAufv2VJYhHvU09M9Jcd2J7PpUA==","signatures":[{"sig":"MEYCIQDF7SotZuRj/DAG3KKBHg9VmDDx+Tvge/Ga7GLqKkT0GAIhAOmjH5FG63OEFOFIch5Wk6hNQ+MOwChGAEu37Dnf11lv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41731},"type":"module","engines":{"node":">=20"},"gitHead":"bad5911aa759f04f8bf594e211b7a17fe7d44a31","scripts":{"dev":"tsx src/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","start":"node dist/index.js","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","smoke:stdio":"node scripts/smoke-stdio.mjs","format:check":"prettier --check .","prepublishOnly":"npm run lint && npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"ingvarrior","email":"jaysonfrost6@gmail.com"},"repository":{"url":"git+https://github.com/8DX-io/8dx-mcp-server.git","type":"git"},"_npmVersion":"10.8.1","description":"MCP server that exposes 8DX DEX aggregator REST endpoints as AI agent tools.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"9.39.1","vitest":"3.2.4","prettier":"3.7.0","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","typescript-eslint":"8.46.4"},"_npmOperationalInternal":{"tmp":"tmp/8dx-mcp-server_0.1.0_1778853561229_0.5057881083754134","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@8dx/8dx-mcp-server","version":"0.1.1","keywords":["8dx","mcp","model-context-protocol","dex","defi","ai-agents"],"author":{"name":"Planet 9"},"license":"MIT","_id":"@8dx/8dx-mcp-server@0.1.1","maintainers":[{"name":"ingvarrior","email":"jaysonfrost6@gmail.com"},{"name":"8dx-service","email":"service@8dx.io"},{"name":"planet9-cc","email":"8dx@8dx.io"}],"homepage":"https://github.com/8DX-io/8dx-mcp-server#readme","bugs":{"url":"https://github.com/8DX-io/8dx-mcp-server/issues"},"bin":{"8dx-mcp-server":"dist/index.js"},"dist":{"shasum":"7019672d8a13260157f3b315d9549dfc6191d659","tarball":"https://registry.npmjs.org/@8dx/8dx-mcp-server/-/8dx-mcp-server-0.1.1.tgz","fileCount":30,"integrity":"sha512-qVvA/lGXiGtebRZRfCY22QdeW7TSLXb1x0mbffzrkFVbwKskz11JZ7c16kVai/yrxLqqKHPyFUqoz+WUl9Fj3Q==","signatures":[{"sig":"MEUCIQDtiBZHfSTqAIfW9Ut5XN4V9TA1aOJDH71wVz4Raow+LQIgD/AvCpbkulMAmk/eXscIsXMeT8HCwq+kmrIZAJkvB8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41635},"type":"module","engines":{"node":">=20"},"gitHead":"7b6d381596a4a220358a433a8109e30f62c5b244","scripts":{"dev":"tsx src/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","start":"node dist/index.js","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","smoke:stdio":"node scripts/smoke-stdio.mjs","format:check":"prettier --check .","prepublishOnly":"npm run lint && npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"ingvarrior","email":"jaysonfrost6@gmail.com"},"repository":{"url":"git+https://github.com/8DX-io/8dx-mcp-server.git","type":"git"},"_npmVersion":"10.8.1","description":"MCP server that exposes 8DX DEX aggregator REST endpoints as AI agent tools.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"9.39.1","vitest":"3.2.4","prettier":"3.7.0","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","typescript-eslint":"8.46.4"},"_npmOperationalInternal":{"tmp":"tmp/8dx-mcp-server_0.1.1_1779112591210_0.44040055932303046","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@8dx/8dx-mcp-server","version":"0.1.2","description":"MCP server that exposes 8DX DEX aggregator REST endpoints as AI agent tools.","type":"module","license":"MIT","author":{"name":"Planet 9"},"homepage":"https://github.com/8DX-io/8dx-mcp-server#readme","repository":{"type":"git","url":"git+https://github.com/8DX-io/8dx-mcp-server.git"},"bugs":{"url":"https://github.com/8DX-io/8dx-mcp-server/issues"},"keywords":["8dx","mcp","model-context-protocol","dex","defi","ai-agents"],"bin":{"8dx-mcp-server":"dist/index.js"},"engines":{"node":">=20"},"scripts":{"build":"tsc -p tsconfig.build.json","dev":"tsx src/index.ts","format":"prettier --write .","format:check":"prettier --check .","lint":"eslint .","prepublishOnly":"npm run lint && npm run typecheck && npm test && npm run build","smoke:agent":"node scripts/smoke-agent-prompts.mjs","smoke:stdio":"node scripts/smoke-stdio.mjs","start":"node dist/index.js","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","@walletconnect/sign-client":"^2.23.9","viem":"^2.50.4","zod":"^4.4.3"},"devDependencies":{"@eslint/js":"9.39.1","@types/node":"24.10.1","eslint":"9.39.1","prettier":"3.7.0","tsx":"4.21.0","typescript":"5.9.3","typescript-eslint":"8.46.4","vitest":"3.2.4"},"_id":"@8dx/8dx-mcp-server@0.1.2","gitHead":"49a130a4a3065bb1c49150ca0bb60be178db06bb","_nodeVersion":"20.16.0","_npmVersion":"10.8.1","dist":{"integrity":"sha512-a8M6BBEYLZ6OusBzlVrRQ836F6zuiOQIF86C1ucHDuXPbnBdHdJG4k6uHLxmFRFqN9CrYLi/j8o6I++P4GQONA==","shasum":"03d1a6a6bf768705c39de4debaf682e3af7c1d9e","tarball":"https://registry.npmjs.org/@8dx/8dx-mcp-server/-/8dx-mcp-server-0.1.2.tgz","fileCount":36,"unpackedSize":105365,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCQt/6B3IttSemRTySp8LNPT9ekl083ia5UanD7g86xtwIgHs47K5rLtxgfsM539/Qbgn2nXUXT8fLruZcmrdXQN20="}]},"_npmUser":{"name":"ingvarrior","email":"jaysonfrost6@gmail.com"},"directories":{},"maintainers":[{"name":"ingvarrior","email":"jaysonfrost6@gmail.com"},{"name":"8dx-service","email":"service@8dx.io"},{"name":"planet9-cc","email":"8dx@8dx.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/8dx-mcp-server_0.1.2_1779457344534_0.4115089508599028"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-15T13:59:21.159Z","modified":"2026-05-22T13:42:24.819Z","0.1.0":"2026-05-15T13:59:21.380Z","0.1.1":"2026-05-18T13:56:31.363Z","0.1.2":"2026-05-22T13:42:24.685Z"},"bugs":{"url":"https://github.com/8DX-io/8dx-mcp-server/issues"},"author":{"name":"Planet 9"},"license":"MIT","homepage":"https://github.com/8DX-io/8dx-mcp-server#readme","keywords":["8dx","mcp","model-context-protocol","dex","defi","ai-agents"],"repository":{"type":"git","url":"git+https://github.com/8DX-io/8dx-mcp-server.git"},"description":"MCP server that exposes 8DX DEX aggregator REST endpoints as AI agent tools.","maintainers":[{"name":"ingvarrior","email":"jaysonfrost6@gmail.com"},{"name":"8dx-service","email":"service@8dx.io"},{"name":"planet9-cc","email":"8dx@8dx.io"}],"readme":"# 8DX MCP Server\n\nMCP server that exposes 8DX DEX aggregator REST endpoints as tools for AI agents.\n\nThe server is a thin TypeScript wrapper around the 8DX REST API plus safe AI-flow helpers.\nBy default it does not hold keys, sign, or custody funds. It can create WalletConnect\nrequests so the user's own wallet signs and broadcasts after approval; the MCP-side local\nsigner remains opt-in and disabled unless explicitly configured.\n\n## Tools\n\nSupported `blockchain` values for quote, swap, permit, and limit-order tools:\n`ethereum`, `bsc`, and `arbitrum`.\n\n### AI wallet session\n\nThese tools help an AI agent keep conversational context for terminal or Telegram-style\nflows. The session is local in memory and stores only public wallet metadata.\n\n| Tool                         | Description                                                                                                     |\n| ---------------------------- | --------------------------------------------------------------------------------------------------------------- |\n| `eightdx_login_wallet`       | Records a public wallet address, blockchain, optional wallet app, and optional client surface for this MCP run. |\n| `eightdx_get_wallet_session` | Reads the current local wallet session, if any.                                                                 |\n| `eightdx_logout_wallet`      | Clears the local wallet session. This does not revoke token approvals or cancel on-chain permissions.           |\n\n### Wallet execution\n\nThese tools let an AI client offer a direct wallet path. WalletConnect is the preferred\nproduction path: the user's wallet signs and broadcasts after showing its own confirmation UI.\nThe local signer is disabled unless environment variables explicitly enable it.\n\n| Tool                                      | Description                                                                                                |\n| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------- |\n| `eightdx_walletconnect_create_session`    | Creates a WalletConnect session and returns QR/raw URI, copied URI, and mobile direct-connection options.  |\n| `eightdx_walletconnect_get_session`       | Reads the current WalletConnect session and connected account, optionally waiting for a pending approval.  |\n| `eightdx_walletconnect_disconnect`        | Disconnects the active WalletConnect session.                                                              |\n| `eightdx_wallet_send_transaction`         | Requests `eth_sendTransaction` through the connected wallet. Requires `confirmedByUser: true`.             |\n| `eightdx_local_signer_status`             | Shows whether the opt-in MCP-side signer is enabled and which address/chains are configured.               |\n| `eightdx_local_sign_and_send_transaction` | Signs and broadcasts with the opt-in local signer. Requires env configuration and `confirmedByUser: true`. |\n\n### Token discovery\n\n| Tool                                                    | Description                                                                                              |\n| ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |\n| `eightdx_search_tokens`<br><sub>`GET /api/tokens`</sub> | Searches 8DX token metadata so agents can resolve prompts like \"BTC\", \"bitcoin\", \"USDC\", or token names. |\n\n### Quotes and swaps\n\n| Tool                                                                      | Description                                                                                                              |\n| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `eightdx_health`<br><sub>`GET /api/health`</sub>                          | Checks whether the 8DX API is reachable and responding normally.                                                         |\n| `eightdx_get_quote`<br><sub>`GET /api/{blockchain}/quote`</sub>           | Performs a read-only quote lookup for a token pair and `amountIn` or `amountInWei`.                                      |\n| `eightdx_preview_market_swap`<br><sub>`GET /api/{blockchain}/quote`</sub> | Returns quote data plus a 30-second refresh hint, selected slippage/deadline, route-link metadata, and signing guidance. |\n| `eightdx_get_wallet_links`                                                | Builds an 8DX web URL and MetaMask Mobile dapp deeplink for wallet handoff.                                              |\n| `eightdx_create_swap`<br><sub>`POST /api/{blockchain}/swap`</sub>         | Returns swap calldata for a previously quoted path. This tool does not sign, custody funds, or broadcast by itself.      |\n\n### Permit helpers\n\n| Tool                                                                              | Description                                                                                            |\n| --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |\n| `eightdx_get_permit_address`<br><sub>`GET /api/{blockchain}/permit/address`</sub> | Reads the permit contract address used by the selected blockchain.                                     |\n| `eightdx_get_permit_data`<br><sub>`GET /api/{blockchain}/permit/data`</sub>       | Returns permit data that a wallet or agent can inspect and sign externally. The server never signs it. |\n\n### Limit orders\n\n| Tool                                                                                                   | Description                                                                                     |\n| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |\n| `eightdx_create_limit_order`<br><sub>`POST /api/{blockchain}/order`</sub>                              | Submits an order payload that has already been signed outside the MCP server.                   |\n| `eightdx_get_limit_orders_by_maker`<br><sub>`GET /api/{blockchain}/orders/byMaker/{maker}`</sub>       | Reads active limit orders for a maker address.                                                  |\n| `eightdx_get_limit_order_history`<br><sub>`GET /api/{blockchain}/orders/byMaker/history/{maker}`</sub> | Reads historical limit orders for a maker address.                                              |\n| `eightdx_get_order_status`<br><sub>`GET /api/{blockchain}/orders/{orderHash}`</sub>                    | Reads one order by hash and returns scanner links for filled transaction hashes when available. |\n| `eightdx_cancel_limit_order`<br><sub>`POST /api/{blockchain}/orders/cancel`</sub>                      | Submits a cancel payload that has already been signed outside the MCP server.                   |\n\n### Explorer links\n\n| Tool                          | Description                                                                                                            |\n| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------- |\n| `eightdx_build_explorer_link` | Builds Etherscan, BscScan, or Arbiscan links for transactions, addresses, and tokens. Explains off-chain order hashes. |\n\n## Prompts\n\nThe server also exposes MCP prompt templates that help host AI agents turn natural\nlanguage into safe tool sequences:\n\n| Prompt                         | Purpose                                                                        |\n| ------------------------------ | ------------------------------------------------------------------------------ |\n| `eightdx_trading_agent`        | General operating instructions for safe 8DX trading flows.                     |\n| `eightdx_market_swap_scenario` | Checklist for prompts like \"обменяй мне 1 биткоин по рынку\".                   |\n| `eightdx_limit_order_scenario` | Checklist for limit orders, signed order payloads, status, fills, and history. |\n\n## AI trading flow\n\nRecommended WalletConnect-first market-swap flow for an AI client:\n\n1. Resolve or ask for the target chain before creating a WalletConnect session. If\n   the user names tokens in natural language, call `eightdx_search_tokens`. If\n   results are ambiguous, ask which token/address to use before quoting.\n2. If the request is missing the output token, amount, slippage, or deadline, ask\n   a follow-up question. For example, \"обменяй мне 1 биткоин по рынку\" is missing\n   the token the user wants to receive. Market swap deadlines are relative\n   seconds from now; use `600` for 10 minutes, not a Unix timestamp.\n3. Call `eightdx_get_wallet_session` and `eightdx_walletconnect_get_session`.\n4. Call `eightdx_preview_market_swap` as soon as the chain, tokens, amount,\n   slippage, and deadline are known. If no wallet is connected yet, omit\n   `dstAddress`. Show the quote and `routeLink.url` as an optional prefilled 8DX\n   web page for users who prefer the 8DX UI; direct MCP execution can continue\n   without opening that page.\n5. If WalletConnect is unavailable in the current host, explain that direct\n   wallet confirmation is unavailable there. Call\n   `eightdx_preview_market_swap` to generate a fresh quote and route metadata,\n   then offer `routeLink.url`, `walletLinks.webUrl`, or\n   `walletLinks.metamaskMobileDappUrl` only as fallback web handoff links. Do not\n   call `eightdx_create_swap` or `eightdx_wallet_send_transaction` in this\n   fallback branch.\n6. If WalletConnect is available but not connected and the user wants direct MCP\n   execution, call\n   `eightdx_walletconnect_create_session` for the selected chain and show all\n   returned `connectionOptions`, including WalletConnect QR, copied URI, and\n   mobile deeplink choices. Ask the user to connect in their wallet, then call\n   `eightdx_walletconnect_get_session` again.\n7. After WalletConnect connects, call `eightdx_login_wallet` with the connected\n   public account, chain, surface, and wallet app when known. For normal\n   self-swaps, this connected account is both `fromAddress` and `dstAddress`.\n8. Refresh the quote with `eightdx_preview_market_swap` and `dstAddress` set to the connected\n   wallet and show the quote, route, price impact, slippage, deadline, and\n   `refreshAfterSeconds: 30`. Also show `routeLink.url` as an optional\n   prefilled 8DX web page for users who prefer the 8DX UI; direct MCP execution\n   can continue without opening that page.\n9. Refresh the preview if the user waits longer than 30 seconds before confirming.\n10. Ask for explicit confirmation of the fresh quote and swap parameters. If the\n   user explicitly pre-authorizes refreshed quotes for the same swap intent, the\n   agent may refresh stale quotes and continue without another chat\n   confirmation; the wallet UI must still require final transaction approval.\n   Then call `eightdx_create_swap` with the confirmed quoted path, slippage,\n   deadline, `fromAddress`, and `dstAddress`.\n11. Show the returned `to`, `data`, `value`, chain, sender, and recipient. Then\n    call `eightdx_wallet_send_transaction` with `confirmedByUser: true`; the\n    connected wallet signs and broadcasts only after the user approves in the\n    wallet UI.\n12. Use `eightdx_local_sign_and_send_transaction` only when\n    `eightdx_local_signer_status` says enabled and the user explicitly asked the\n    MCP server to sign and send.\n13. After a transaction hash is returned, call `eightdx_build_explorer_link` so\n    the terminal or Telegram bot can display a scanner link.\n\nRecommended limit-order flow:\n\n1. Prepare and sign the limit-order typed data outside this server.\n2. Submit the signed payload with `eightdx_create_limit_order`.\n3. Poll `eightdx_get_order_status` or read `eightdx_get_limit_order_history` for result,\n   filters, and fill transaction hashes.\n\nTelegram and terminal UIs should orchestrate these tools. This package does not run a\nTelegram bot, but it exposes the MCP tools needed for the bot or AI host to manage wallet\nconnection, quote refresh, transaction confirmation, status, and history.\n\n## Install\n\n```bash\nnpm install -g @8dx/8dx-mcp-server\n```\n\nOr run it directly:\n\n```bash\nnpx -y @8dx/8dx-mcp-server\n```\n\n## Configuration\n\n| Environment variable                         | Default                            | Description                                                                   |\n| -------------------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------- |\n| `EIGHTDX_API_BASE_URL`                       | `https://swap.ggp.gg`              | 8DX REST API base URL.                                                        |\n| `EIGHTDX_REQUEST_TIMEOUT_MS`                 | `30000`                            | Request timeout in milliseconds.                                              |\n| `EIGHTDX_WALLETCONNECT_PROJECT_ID`           | 8DX default project                | Optional WalletConnect project override. WalletConnect works out of the box.  |\n| `EIGHTDX_WALLETCONNECT_RELAY_URL`            | unset                              | Optional WalletConnect relay override.                                        |\n| `EIGHTDX_WALLETCONNECT_METADATA_NAME`        | `8DX MCP`                          | WalletConnect app name shown in wallets.                                      |\n| `EIGHTDX_WALLETCONNECT_METADATA_DESCRIPTION` | `8DX MCP server wallet connection` | WalletConnect app description shown in wallets.                               |\n| `EIGHTDX_WALLETCONNECT_METADATA_URL`         | `https://8dx.io`                   | WalletConnect app URL shown in wallets.                                       |\n| `EIGHTDX_WALLETCONNECT_METADATA_ICONS`       | unset                              | Comma-separated icon URLs for WalletConnect metadata.                         |\n| `EIGHTDX_ENABLE_LOCAL_SIGNER`                | `false`                            | Enables MCP-side transaction signing only when set to `true`.                 |\n| `EIGHTDX_SIGNER_PRIVATE_KEY`                 | unset                              | Private key for the opt-in local signer. Never use this in an untrusted host. |\n| `EIGHTDX_RPC_URL`                            | unset                              | Default Ethereum RPC URL for the local signer.                                |\n| `EIGHTDX_ETHEREUM_RPC_URL`                   | unset                              | Ethereum RPC URL for the local signer. Overrides `EIGHTDX_RPC_URL`.           |\n| `EIGHTDX_BSC_RPC_URL`                        | unset                              | BNB Smart Chain RPC URL for the local signer.                                 |\n| `EIGHTDX_ARBITRUM_RPC_URL`                   | unset                              | Arbitrum RPC URL for the local signer.                                        |\n\nAll outgoing 8DX REST API requests include:\n\n```http\nX-Source: 8dx-mcp/0.1.0\n```\n\nThis lets the 8DX backend distinguish MCP traffic from direct API usage.\n\n## Claude Desktop\n\nAdd this to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"8dx\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@8dx/8dx-mcp-server\"],\n      \"env\": {\n        \"EIGHTDX_API_BASE_URL\": \"https://swap.ggp.gg\"\n      }\n    }\n  }\n}\n```\n\n## Claude Code\n\n```bash\nclaude mcp add 8dx --transport stdio -- npx -y @8dx/8dx-mcp-server\n```\n\n## OpenAI Codex\n\nCodex CLI can register this server as a stdio MCP server with `codex mcp add`.\n\n### Local development\n\nUse this while developing the server before it is published to npm.\n\nBuild the server first:\n\n```bash\ncd /absolute/path/to/8dx-mcp-server\nnpm install\nnpm run build\n```\n\nThen add the local server to Codex:\n\n```bash\ncodex mcp add 8dx-local \\\n  --env EIGHTDX_API_BASE_URL=https://swap.ggp.gg \\\n  --env EIGHTDX_REQUEST_TIMEOUT_MS=30000 \\\n  -- node /absolute/path/to/8dx-mcp-server/dist/index.js\n```\n\nConfirm that Codex can see the server:\n\n```bash\ncodex mcp list\ncodex mcp get 8dx-local\n```\n\n### Published package\n\nAfter the package is published to npm, use `npx` instead of the local `node` path:\n\n```bash\ncodex mcp add 8dx \\\n  --env EIGHTDX_API_BASE_URL=https://swap.ggp.gg \\\n  --env EIGHTDX_REQUEST_TIMEOUT_MS=30000 \\\n  -- npx -y @8dx/8dx-mcp-server\n```\n\n## Cursor\n\nCursor supports project-level and global MCP configuration:\n\n- Project-level: create `.cursor/mcp.json` in the project root.\n- Global: create `~/.cursor/mcp.json`.\n\n### Local development\n\nUse this while developing the server before it is published to npm.\n\nBuild the server first:\n\n```bash\ncd /absolute/path/to/8dx-mcp-server\nnpm install\nnpm run build\n```\n\nThen create or update `.cursor/mcp.json` in the project where you want to use the 8DX tools:\n\n```json\n{\n  \"mcpServers\": {\n    \"8dx-local\": {\n      \"type\": \"stdio\",\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/8dx-mcp-server/dist/index.js\"],\n      \"env\": {\n        \"EIGHTDX_API_BASE_URL\": \"https://swap.ggp.gg\",\n        \"EIGHTDX_REQUEST_TIMEOUT_MS\": \"30000\"\n      }\n    }\n  }\n}\n```\n\nRestart Cursor, open Cursor Settings, go to MCP, and confirm that `8dx-local` is enabled.\n\nTry these prompts in Cursor chat:\n\n```text\nCall the 8DX health tool.\n```\n\n```text\nUse 8DX to get a quote on ethereum from WETH to USDC.\n```\n\nFor quote testing, pass exact token identifiers and amount format accepted by the 8DX API.\n\n### Published package\n\nAfter the package is published to npm, use `npx` instead of the local `node` path:\n\n```json\n{\n  \"mcpServers\": {\n    \"8dx\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@8dx/8dx-mcp-server\"],\n      \"env\": {\n        \"EIGHTDX_API_BASE_URL\": \"https://swap.ggp.gg\",\n        \"EIGHTDX_REQUEST_TIMEOUT_MS\": \"30000\"\n      }\n    }\n  }\n}\n```\n\nIf Cursor does not show the tools, run `npm run build` again, restart Cursor, and check that the\nabsolute path in `args` points to an existing `dist/index.js` file.\n\nSee `examples/` for ready-to-copy local MCP config templates.\n\n## Development\n\n```bash\nnpm install\nnpm test\nnpm run typecheck\nnpm run build\nnpm run smoke:stdio\nnpm run smoke:agent\nnpm run dev\n```\n\n## Safety\n\nThis MCP server does not provide financial advice. Agents and users must inspect all swap\ncalldata, permit data, signatures, transaction fields, and order payloads before using them\nwith a wallet or broadcasting anything on-chain. Direct execution tools require\n`confirmedByUser: true`; WalletConnect still relies on the user's wallet confirmation UI, and the\nlocal signer should only be enabled in a trusted environment.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}