# Gemini Exchange API vs Uniswap Trading API (slim)

> Gemini Exchange scores 74.6 (BB) to Uniswap Trading's 63.3 (B) for exchange market data. Prices, MCP, x402, uptime and agent notes side by side.

- Full: https://www.anchorterminal.com/compare/gemini-exchange-vs-uniswap.md (~4,650 tokens) · this version ~2,280 tokens · JSON https://www.anchorterminal.com/compare/gemini-exchange-vs-uniswap.json · canonical https://www.anchorterminal.com/compare/gemini-exchange-vs-uniswap
- Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · MCP: https://www.anchorterminal.com/mcp · Updated: 2026-11-03
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)

Gemini Exchange API scores 74.6 (BB) on agent readiness against Uniswap Trading API's 63.3 (B), and leads in 4 of 7 scored categories. Both do exchange market data.

- Gemini Exchange API: BB 74.6, rank #70 of 1349 · https://www.anchorterminal.com/tools/gemini-exchange.min.md
- Uniswap Trading API: B 63.3, rank #446 of 1349 · https://www.anchorterminal.com/tools/uniswap.min.md
- Gemini Exchange API, good for An agent trading spot, perpetuals or prediction markets for a US customer with a role-limited key and a sandbox to rehearse on. Ahead on Reliability, 73 against 42; Agent ergonomics, 79 against 72; Security & auth, 78 against 63; Transparency & trust, 75 against 55. Also Agent-ready, a grade of BB or better; Runs on your own machine.
- Uniswap Trading API, good for An agent swapping or bridging tokens from its own wallet on 21 EVM chains, or managing liquidity positions, with routing done for it. Also Free to start without a card.

| Category | Gemini Exchange API | Uniswap Trading API |
| --- | --- | --- |
| Reliability (16%) | 73 | 42 |
| Performance (10%) | pending | pending |
| Schema & documentation (13%) | 88 | 90 |
| Agent ergonomics (13%) | 79 | 72 |
| Security & auth (14%) | 78 | 63 |
| Payments & pricing (10%) | 40 | 40 |
| Task success (10%) | pending | pending |
| Maintenance & community (7%) | 88 | 88 |
| Transparency & trust (7%) | 75 | 55 |

| Fact (where they differ) | Gemini Exchange API | Uniswap Trading API |
| --- | --- | --- |
| Vendor | Gemini Trust Company, LLC | Uniswap Labs |
| Transports | stdio |  |
| Auth | OAuth or key | API key |
| Pricing | Pay per use | Free |
| Licence | Proprietary hosted API under Gemini's user agreement. The developer-platform repository (MCP server, TypeScript and Go SDKs, samples and skills) is Apache-2.0 | The Trading API is a proprietary hosted service under Uniswap Labs' API Terms of Use, which we couldn't read; the SDKs and the uniswap-ai skills are MIT. Swaps execute on the open-source Uniswap protocol contracts on chain |
| Tools exposed | 87 | 0 |
| Read-only variant documented | yes | no |
| Last release | 2026-10-28 | 2026-10-22 |
| Privacy policy last updated | no date given | no document linked |
| Customer content may train models | yes | couldn't be read |
| Popularity | 8 stars, 99 npm/wk | 236 stars, 154k npm/wk |

Why the edge:
- Reliability, Gemini Exchange API +31: Gemini Exchange API 73 (Read with the hosted lines on the REST API at api.gemini.com. status.gemini.com is a Statuspage site with component history (20). Its Atom feed for 10 September to 3 November 2026 holds 25 entries, mostly scheduled trading and FIX upgrades of 15 to 60 minutes with possible order timeouts, single-network deposit delays, and incorrect perpetual index prices for about 3.5 hours on 15 and 16 October; a 3-hour scheduled eOTC window was planned and outside the core API. Minor only (20). Rate limits with numbers, 120 a minute public and 600 private plus per-endpoint limits (15). 429 is documented but with no Retry-After or backoff guidance, and client order ids are recommended without duplicate rejection, so retries are not safe by contract; the heartbeat cancel is a safety net rather than idempotency (8 of 15). No SLA found (0). Generally available (10). 20 + 20 + 15 + 8 + 0 + 10 = 73.); Uniswap Trading API 42 (Read with the hosted lines on the Trading API. status.uniswap.org redirects to the swap app and the docs link no status page (0). No readable history (5). Rate limit documented as 6 requests a second per key (15). The errors page says to pause all requests from the key on 429, retry 500 and 503 with backoff and refresh quotes after 30 seconds; swaps are signed transactions, so idempotency rests on the chain nonce (12 of 15). No SLA (0). The API is generally available; Guidestar routing is a beta notice (10). 0 + 5 + 15 + 12 + 0 + 10 = 42.)
- Transparency & trust, Gemini Exchange API +20: Gemini Exchange API 75 (The editorial half. A closed service under a user agreement that names its entities by state, with the MCP server and SDKs open under Apache-2.0 (18 of 30). The privacy policy of 11 May 2026 names entities and processing countries, ties retention to need without numbers and names provider categories only, with no DPA or subprocessor list found (16 of 30). The revision history records removals and type changes with dates, but the upcoming-changes page is "TBD" and no notice period is stated (8 of 20). Processing countries are named (US, Ireland, UK, Malta, Singapore, Australia) and providers by category, with no named subprocessors (12 of 20). 18 + 16 + 8 + 12 = 54.); Uniswap Trading API 55 (The editorial half. The API is closed under API Terms of Use that answered 403; the SDKs and uniswap-ai are MIT and the protocol contracts are open source (15 of 30). No privacy policy read (app.uniswap.org draws by script) and nothing in the docs on retention of quotes or wallet addresses (0 of 30). A published sunset policy of at least 30 days, ideally 60, with dated notices such as the Universal Router 2.0 and 2.1.1 sunset of 21 October 2026 (20). No subprocessors or data locations (0 of 20). Total 35.)
- Security & auth, Gemini Exchange API +15: Gemini Exchange API 78 (Revocable API keys with one role each (Trader, Fund Manager, Auditor, Administrator), HMAC-SHA384 signing with a nonce, and OAuth 2.0 with scopes, PKCE S256, single-use refresh tokens and RFC 7009 revocation; no IP allow-list documented and no key expiry (28 of 30). Auditor is read-only, a Trader key cannot withdraw, approved withdrawal addresses are a Fund Manager action, and the MCP server refuses funds-moving tools without `confirm: true` (18 of 20). The MCP server wraps every response in untrusted-output markers, strips control and bidi characters and redacts memos, labels and agreement text; the REST docs say nothing on the subject (13 of 15). Order and transfer history are readable, but no per-key audit log or API access log was found (5 of 15). security.txt with a PGP contact and a bug bounty paying $150 to $20,000, scoped to the sandbox hosts; no certification was read and no public advisory process was found (14 of 20). 28 + 18 + 13 + 5 + 14 = 78.); Uniswap Trading API 63 (A single `x-api-key` header, no scopes, no IP allow-list; revocation and rotation happen in a dashboard robots.txt disallows, so unchecked; nothing in a URL (18 of 30). The API never holds keys or funds, every value transfer needs the caller's signature on `permitData` and the transaction, and the swapper sets slippage (16 of 20). The API returns routes and token lists, not untrusted content (10). The dashboard presumably shows key usage; not read, and no per-call log is documented (5 of 15). security.txt on app.uniswap.org with a Cantina bounty and security@uniswap.org, protocol audits in the docs; no SOC 2 or disclosure timeline read (14 of 20). Total 63.)
- Agent ergonomics, Gemini Exchange API +7: Gemini Exchange API 79 (Graded on the REST API, with the MCP server noted. Order book depth, trade and candle counts can be limited and symbols filtered; the MCP server lists 87 tools with no toolset or read-only subset switch, so a session that loads it pays for all of them (18 of 25). Timestamps, `limit_trades`, `since` and per-symbol filters on history, pagination on prediction-market lists (16 of 20). Errors carry a reason and message an agent can branch on, such as InsufficientFunds, MarketNotOpen and MissingRole, though some messages only say to retry later (16 of 20). client_order_id is echoed back but not checked for duplicates, cancel-all-session-orders and the heartbeat limit damage; the MCP server publishes readOnlyHint and destructiveHint on every tool and gates destructive ones on `confirm: true` (14 of 20). Few required parameters, sensible defaults, and official TypeScript and Go SDKs (15). 18 + 16 + 16 + 14 + 15 = 79.); Uniswap Trading API 72 (An API, read for response sizing. Quotes and calldata are compact and `/tokens` takes a limit; the quote can carry the swap calldata to save a call (20 of 25). `GET /orders` and `GET /swaps` poll status by id, `/swappable_tokens` and `/tokens` filter by chain and sort, with little pagination elsewhere (12 of 20). Stable `errorCode` values with a `detail` string and a `requestId`, and the docs say which codes to retry (18 of 20). No idempotency key; a swap is a signed transaction whose nonce prevents a double spend, and the docs warn about nonce collisions with pending transactions (12 of 20). Few required fields on `/quote`, defaults for slippage and urgency, but no official client library for the API and signing needs ethers.js, viem or web3.js (10 of 15). Total 72.)
