{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "tool": {
    "slug": "gemini-exchange",
    "name": "Gemini Exchange API",
    "vendor": "Gemini Trust Company, LLC",
    "vendorUrl": "https://developer.gemini.com",
    "kind": "http-api",
    "category": "crypto-exchanges",
    "summary": "Gemini's exchange API for spot, margin, perpetuals, prediction markets and staking, through REST, WebSocket and FIX, with API key roles or OAuth, plus an official MCP server and SDKs from its developer-platform repository.",
    "url": "https://www.anchorterminal.com/tools/gemini-exchange",
    "markdownUrl": "https://www.anchorterminal.com/tools/gemini-exchange.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/gemini-exchange.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/gemini-exchange.json",
    "dns": "gemini-exchange.grade.anchorterminal.com",
    "repo": "https://github.com/gemini/developer-platform",
    "license": "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",
    "transports": [
      "stdio"
    ],
    "packages": [
      {
        "registry": "npm",
        "name": "@gemini-markets/sdk"
      }
    ],
    "auth": "mixed",
    "authNotes": "API key and secret made at exchange.gemini.com/settings/api after a browser signup with identity checks, sent as X-GEMINI-APIKEY, X-GEMINI-PAYLOAD (base64 JSON with a nonce) and X-GEMINI-SIGNATURE (HMAC-SHA384). Keys carry one role, Trader by default, Fund Manager for withdrawals and transfers, Auditor read-only, Administrator for master keys only, and a `master-` key reaches subaccounts. A key can require a heartbeat that cancels its session's orders after 30 seconds of silence. OAuth 2.0 (authorisation code, PKCE S256 for public clients, 24-hour access tokens, single-use refresh tokens, RFC 7009 revocation) is open in the sandbox at once and reviewed by Gemini before production. No IP allow-list was found in the docs (https://developer.gemini.com/roles, https://developer.gemini.com/authentication/api-key, https://developer.gemini.com/authentication/oauth, checked 2026-11-03).",
    "pricing": "usage",
    "pricingNotes": "The API itself costs nothing. Trades pay the API fee schedule, effective 1 September 2026, 0.600% maker and 1.200% taker at the base tier (under $10,000 of 30-day volume), falling to 0.000% maker and 0.020% taker above $250M. Stablecoin pairs 0.00% maker and 0.01% taker. Derivatives from 0.02% maker and 0.07% taker, charged in GUSD. Liquidations 0.5%. The sandbox at api.sandbox.gemini.com credits each new account with test funds and needs no card (https://www.gemini.com/fees/api-fee-schedule, https://developer.gemini.com/get-started/sandbox, checked 2026-11-03).",
    "priceSummary": "0.6% fee",
    "where": "local",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in the developer docs, llms.txt, agents.md, the OpenAPI catalogue or the fee schedule (checked 2026-11-03). Trading fees are taken from the account; onboarding is a browser signup.",
      "endpoints": []
    },
    "toolCount": 87,
    "popularity": {
      "githubStars": 8,
      "npmWeekly": 99,
      "pypiWeekly": null,
      "asOf": "2026-11-03"
    },
    "docsUrl": "https://developer.gemini.com",
    "llmsTxt": "https://developer.gemini.com/llms.txt",
    "openapi": "https://developer.gemini.com/specs/openapi/rest.yaml",
    "capabilities": [
      "exchange.market-data",
      "exchange.spot-trading",
      "exchange.derivatives",
      "exchange.balances",
      "exchange.transfers",
      "exchange.staking",
      "market.crypto"
    ],
    "tags": [
      "official",
      "hosted",
      "api-key",
      "oauth",
      "mcp",
      "llms-txt",
      "openapi",
      "sandbox",
      "status-page",
      "bug-bounty",
      "typescript",
      "go",
      "usage-priced"
    ],
    "lastRelease": "2026-10-28",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 74.6,
      "grade": "BB",
      "agentReady": true,
      "rank": 70,
      "ranked": true,
      "rankOf": 1349,
      "categoryRank": 1,
      "methodology": "0.7",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 79,
        "maintenance": 88,
        "payments": 40,
        "reliability": 73,
        "schema": 88,
        "security": 78,
        "transparency": 75
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 73,
          "points": 14.6,
          "reason": "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.",
          "checked": "2026-11-03"
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 88,
          "points": 14.3,
          "reason": "OpenAPI 3 for REST (specs/openapi/rest.yaml), AsyncAPI for WebSocket, a prediction-markets OpenAPI file and a specs/index.json catalogue; the MCP server's tools take zod schemas published as JSON Schema (25). llms.txt, llms-full.txt, agents.md, an agent card and an agent skills index (10). Endpoint pages state purpose, the Build an agent guide says what to establish before acting and when to stop, and MCP tool descriptions tell the model when to confirm; the docs don't say when not to use an endpoint (15 of 20). Typed inputs with enums for order types, options and sessions, required fields marked, decimals as strings since 7 July 2026 (12 of 15). Examples throughout, samples in three languages, and an error-codes page with 53 named reasons and their HTTP statuses (14 of 15). A revision history dated from 2015 to 28 October 2026 and versioned paths (v1, v2), but the upcoming-changes page reads \"TBD\" (12 of 15). 25 + 10 + 15 + 12 + 14 + 12 = 88.",
          "checked": "2026-11-03"
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 79,
          "points": 12.84,
          "reason": "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.",
          "checked": "2026-11-03"
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 78,
          "points": 13.65,
          "reason": "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.",
          "checked": "2026-11-03"
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 40,
          "points": 5,
          "reason": "No machine payment protocol (0). The API fee schedule is public per tier without login, 0.6% maker and 1.2% taker at the base tier (20). The API is free to call, public market data needs no key, and the sandbox credits test funds with no card (20). A person must sign up in a browser with identity checks, mint a key or approve an OAuth grant, and production OAuth apps wait for Gemini's review (0). 0 + 20 + 20 + 0 = 40.",
          "checked": "2026-11-03"
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 88,
          "points": 7.7,
          "reason": "Read as a closed hosted service with an open repository. The revision history's latest entry is 28 October 2026 and the repository was pushed on 5 October (30). Thirteen dated entries between 2 September and 28 October 2026 (20). The nine open items on the repository are all pull requests with replies, Dependabot included, and the docs name trading@gemini.com for developer support; no public issue tracker was tested (15 of 25). Not in the official MCP registry, but current official SDKs, TypeScript 0.1.1 of 23 September and Go 0.1.0 of 29 August 2026 (15). CI workflows validate and publish both SDKs and the MCP server has tests; dependencies are current (8 of 10). 30 + 20 + 15 + 15 + 8 = 88.",
          "checked": "2026-11-03"
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 75,
          "points": 6.56,
          "note": "editorial 54, provenance 95",
          "reason": "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.",
          "checked": "2026-11-03"
        }
      ],
      "assessment": {
        "date": "2026-11-03",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "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.",
          "maintenance": "Read as a closed hosted service with an open repository. The revision history's latest entry is 28 October 2026 and the repository was pushed on 5 October (30). Thirteen dated entries between 2 September and 28 October 2026 (20). The nine open items on the repository are all pull requests with replies, Dependabot included, and the docs name trading@gemini.com for developer support; no public issue tracker was tested (15 of 25). Not in the official MCP registry, but current official SDKs, TypeScript 0.1.1 of 23 September and Go 0.1.0 of 29 August 2026 (15). CI workflows validate and publish both SDKs and the MCP server has tests; dependencies are current (8 of 10). 30 + 20 + 15 + 15 + 8 = 88.",
          "payments": "No machine payment protocol (0). The API fee schedule is public per tier without login, 0.6% maker and 1.2% taker at the base tier (20). The API is free to call, public market data needs no key, and the sandbox credits test funds with no card (20). A person must sign up in a browser with identity checks, mint a key or approve an OAuth grant, and production OAuth apps wait for Gemini's review (0). 0 + 20 + 20 + 0 = 40.",
          "reliability": "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.",
          "schema": "OpenAPI 3 for REST (specs/openapi/rest.yaml), AsyncAPI for WebSocket, a prediction-markets OpenAPI file and a specs/index.json catalogue; the MCP server's tools take zod schemas published as JSON Schema (25). llms.txt, llms-full.txt, agents.md, an agent card and an agent skills index (10). Endpoint pages state purpose, the Build an agent guide says what to establish before acting and when to stop, and MCP tool descriptions tell the model when to confirm; the docs don't say when not to use an endpoint (15 of 20). Typed inputs with enums for order types, options and sessions, required fields marked, decimals as strings since 7 July 2026 (12 of 15). Examples throughout, samples in three languages, and an error-codes page with 53 named reasons and their HTTP statuses (14 of 15). A revision history dated from 2015 to 28 October 2026 and versioned paths (v1, v2), but the upcoming-changes page reads \"TBD\" (12 of 15). 25 + 10 + 15 + 12 + 14 + 12 = 88.",
          "security": "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.",
          "transparency": "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."
        },
        "sources": [
          {
            "what": "robots.txt (www.gemini.com with Crawl-delay 600, developer.gemini.com, status.gemini.com, support.gemini.com)",
            "url": "https://www.gemini.com/robots.txt",
            "seen": "2026-11-03"
          },
          {
            "what": "developer site llms.txt",
            "url": "https://developer.gemini.com/llms.txt",
            "seen": "2026-11-03"
          },
          {
            "what": "agents.md",
            "url": "https://developer.gemini.com/agents.md",
            "seen": "2026-11-03"
          },
          {
            "what": "agent card",
            "url": "https://developer.gemini.com/.well-known/agent-card.json",
            "seen": "2026-11-03"
          },
          {
            "what": "developer tools page (MCP server, skills, SDKs)",
            "url": "https://developer.gemini.com/tools",
            "seen": "2026-11-03"
          },
          {
            "what": "Build an agent guide",
            "url": "https://developer.gemini.com/build/agent",
            "seen": "2026-11-03"
          },
          {
            "what": "API key roles",
            "url": "https://developer.gemini.com/roles",
            "seen": "2026-11-03"
          },
          {
            "what": "API key authentication",
            "url": "https://developer.gemini.com/authentication/api-key",
            "seen": "2026-11-03"
          },
          {
            "what": "OAuth",
            "url": "https://developer.gemini.com/authentication/oauth",
            "seen": "2026-11-03"
          },
          {
            "what": "rate limits",
            "url": "https://developer.gemini.com/rate-limit",
            "seen": "2026-11-03"
          },
          {
            "what": "sandbox",
            "url": "https://developer.gemini.com/get-started/sandbox",
            "seen": "2026-11-03"
          },
          {
            "what": "error codes",
            "url": "https://developer.gemini.com/error-codes",
            "seen": "2026-11-03"
          },
          {
            "what": "client order id",
            "url": "https://developer.gemini.com/client-order-id",
            "seen": "2026-11-03"
          },
          {
            "what": "API specifications catalogue",
            "url": "https://developer.gemini.com/api-specifications",
            "seen": "2026-11-03"
          },
          {
            "what": "revision history",
            "url": "https://developer.gemini.com/changelog/revision-history",
            "seen": "2026-11-03"
          },
          {
            "what": "upcoming changes (TBD)",
            "url": "https://developer.gemini.com/changelog/upcoming-changes",
            "seen": "2026-11-03"
          },
          {
            "what": "developer-platform repository, shallow clone (MCP server source, mcp-plugin manifest, SDK tags, CI)",
            "url": "https://github.com/gemini/developer-platform",
            "seen": "2026-11-03"
          },
          {
            "what": "repository metadata and open items",
            "url": "https://api.github.com/repos/gemini/developer-platform",
            "seen": "2026-11-03"
          },
          {
            "what": "npm @gemini-markets/sdk latest and weekly downloads",
            "url": "https://registry.npmjs.org/@gemini-markets%2fsdk/latest",
            "seen": "2026-11-03"
          },
          {
            "what": "hosted MCP endpoint, plain GET (no complete response, twice)",
            "url": "https://api.gemini.com/mcp",
            "seen": "2026-11-03"
          },
          {
            "what": "official MCP registry search",
            "url": "https://registry.modelcontextprotocol.io/v0/servers?search=gemini",
            "seen": "2026-11-03"
          },
          {
            "what": "status history feed",
            "url": "https://status.gemini.com/history.atom",
            "seen": "2026-11-03"
          },
          {
            "what": "API fee schedule",
            "url": "https://www.gemini.com/fees/api-fee-schedule",
            "seen": "2026-11-03"
          },
          {
            "what": "user agreement",
            "url": "https://www.gemini.com/legal/user-agreement",
            "seen": "2026-11-03"
          },
          {
            "what": "privacy policy",
            "url": "https://www.gemini.com/legal/privacy-policy",
            "seen": "2026-11-03"
          },
          {
            "what": "areas of availability",
            "url": "https://www.gemini.com/areas-of-availability",
            "seen": "2026-11-03"
          },
          {
            "what": "about page (leadership)",
            "url": "https://www.gemini.com/about",
            "seen": "2026-11-03"
          },
          {
            "what": "security.txt",
            "url": "https://www.gemini.com/.well-known/security.txt",
            "seen": "2026-11-03"
          },
          {
            "what": "SEC submissions for Gemini Space Station, Inc.",
            "url": "https://data.sec.gov/submissions/CIK0002055592.json",
            "seen": "2026-11-03"
          },
          {
            "what": "RDAP for gemini.com",
            "url": "https://rdap.verisign.com/com/v1/domain/gemini.com",
            "seen": "2026-11-03"
          }
        ],
        "openQuestions": [
          "Kind http-api. The developer site leads with REST, WebSocket and FIX and the OpenAPI catalogue; the MCP server is one package in the developer-platform repository and the docs' tools page describes it in a paragraph.",
          "The MCP server is official, local stdio, 87 tools in the source (13 of them for a native-OS alerts daemon). The repository's mcp-plugin manifest points at a hosted https://api.gemini.com/mcp that no docs page names and that answered no complete response to a plain GET twice; recorded as the repository's claim, not scored as a remote server. No session was opened.",
          "unchecked: the support article on supported countries (support.gemini.com answered 403), so countries come from gemini.com/areas-of-availability, which still lists the UK, EEA countries and Australia beside notices that those accounts closed on 6 April 2026. Recorded as an inconsistency, not deducted.",
          "unchecked: whether SOC 2 or ISO 27001 reports exist (gemini.com's trust pages were not read, to respect the site's Crawl-delay of 600 seconds), the live MCP tools/list, and the second half of the revision history page.",
          "Judgement call, not a deduction. The revision history records decimal fields changing from numbers to strings (7 July 2026), `Balance._timestamp` changing type (10 August 2026) and the removal of /v1/feepromos (10 September 2026). No notice period is stated and we could not tell whether these broke existing callers without warning.",
          "Process note. www.gemini.com/robots.txt sets Crawl-delay 600. Seven pages on that host were read within about an hour, before the delay was weighed; no further gemini.com pages were fetched after that.",
          "firstReleased is 5 October 2015, the revision history's first entry (\"Initial REST API documentation\"). lastRelease is 28 October 2026, the latest revision-history entry.",
          "The user agreement names no clause on API use, bots or automated trading, and no separate API terms of service were found on gemini.com or developer.gemini.com.",
          "Our own products. It doesn't do LocalGhost's or letme's job; it trades one exchange account."
        ]
      },
      "negative": 0,
      "verdict": "Gemini publishes an OpenAPI and AsyncAPI contract, API key roles that keep withdrawals off a trading key, a funded sandbox, and an official MCP server whose tools carry read-only and destructive annotations and a confirm gate. Client order ids are not checked for duplicates, there is no SLA, and UK, EEA and Australian accounts closed in April 2026.",
      "bestFor": "An agent trading spot, perpetuals or prediction markets for a US customer with a role-limited key and a sandbox to rehearse on.",
      "strengths": [
        "Key roles enforce least privilege, since Trader cannot withdraw, Fund Manager cannot trade, Auditor is read-only, and a 403 `MissingRole` names the role an endpoint needs",
        "Official MCP server with readOnlyHint and destructiveHint on every tool, a `confirm: true` gate on funds-moving tools, untrusted-output framing and redaction of free-text fields",
        "OpenAPI 3 and AsyncAPI files, llms.txt, llms-full.txt, agents.md, an agent card and an error-codes page with 53 named reasons",
        "A sandbox with the same REST, WebSocket and FIX surfaces, test balances on signup and a documented 2FA bypass for automated tests",
        "Fee schedule published per tier without login, and a Statuspage feed with component-level incidents"
      ],
      "weaknesses": [
        "Client order ids are only recommended to be unique and no duplicate rejection is documented, so a retried order can execute twice",
        "No Retry-After, backoff guidance or SLA; 429 continues until the rate drops, and the upcoming-changes page reads \"TBD\"",
        "The MCP server lists 87 tools with no toolset or read-only subset switch, which costs context on every session",
        "The hosted MCP address in the repository's plugin manifest is on no docs page and gave no complete answer to a GET",
        "Accounts in the United Kingdom, the EEA and Australia closed on 6 April 2026, and the availability page still lists those countries"
      ],
      "agentNotes": [
        "Create a Trader key for order flow and a separate Fund Manager key only if withdrawals are in scope; never combine them, and keep the secret out of prompts and logs",
        "Set a `client_order_id` per order and look it up with `get_order_status` before resending after a timeout, because Gemini does not reject duplicates",
        "Start on api.sandbox.gemini.com with the same code; sandbox apps register at once, production OAuth apps wait for Gemini's review",
        "Stay under 1 public and 5 private requests a second; a 429 keeps answering 429 until the rate falls, with no Retry-After to read",
        "Check the person's country against the availability page first; UK, EEA and Australian accounts were closed on 6 April 2026"
      ],
      "metrics": {
        "kind": "remote",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "medium",
          "grade": "BB",
          "methodology": "0.7",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 74.6
        }
      ],
      "editorialScores": {
        "ergonomics": 79,
        "maintenance": 88,
        "payments": 40,
        "reliability": 73,
        "schema": 88,
        "security": 78,
        "transparency": 54
      },
      "provenanceScore": 95,
      "checked": {
        "categories": {
          "ergonomics": "2026-11-03",
          "maintenance": "2026-11-03",
          "payments": "2026-11-03",
          "reliability": "2026-11-03",
          "schema": "2026-11-03",
          "security": "2026-11-03",
          "transparency": "2026-11-03"
        },
        "last": "2026-11-03",
        "oldest": "2026-11-03",
        "stale": false,
        "staleAfterDays": 90
      },
      "scoreHistory": [
        {
          "date": "2026-11-03",
          "grade": "BB",
          "kind": "listed",
          "method": "0.7",
          "score": 74.6
        }
      ]
    },
    "connect": {
      "install": "npm install @gemini-markets/sdk",
      "http": "curl https://api.gemini.com/v1/pubticker/btcusd",
      "claudeCode": "claude mcp add gemini -s user -e GEMINI_API_KEY=your_key -e GEMINI_API_SECRET=your_secret -- node /absolute/path/to/mcp-server/dist/index.js",
      "config": {
        "mcpServers": {
          "gemini": {
            "args": [
              "/absolute/path/to/mcp-server/dist/index.js"
            ],
            "command": "node",
            "env": {
              "GEMINI_ACCOUNT": "primary",
              "GEMINI_API_KEY": "your_api_key_here",
              "GEMINI_API_SECRET": "your_api_secret_here",
              "GEMINI_WS_URL": "wss://ws.gemini.com"
            }
          }
        }
      }
    },
    "letme": {
      "capability": "https://letme.dev/exchange.market-data",
      "tool": "https://letme.dev/gemini-exchange"
    },
    "notable": [
      "Gemini runs an official MCP server, `gemini-mcp` 1.0.1 in packages/mcp-server of github.com/gemini/developer-platform (Apache-2.0), a stdio server built from source with `npm run build` and run with `node dist/index.js`. Its source defines 87 tools prefixed `gemini_` (market data 13, orders 9, funds 11, account 7, margin 7, staking 5, prediction markets 19, streams 3, alerts 13), where the README says 40+ and the docs tools page lists the categories (https://github.com/gemini/developer-platform/tree/main/packages/mcp-server, https://developer.gemini.com/tools)",
      "Every MCP tool is published with readOnlyHint or destructiveHint, and tools that move funds or cancel orders refuse to run without `confirm: true`. Tool output is wrapped in `\u003ctool-output server=\"gemini-mcp\"\u003e` markers the server instructions call untrusted data, control characters and bidi overrides are stripped, and free-text fields such as transfer memos and address labels are replaced with `[redacted: ...]` (packages/mcp-server/src/tools/index.ts, server.ts and redact.ts, read 2026-11-03)",
      "The repository's packages/mcp-plugin manifest points at a hosted server, `https://api.gemini.com/mcp` over Streamable HTTP. No docs page names that address, the agent card and agents.md don't either, and a plain GET on 3 November 2026 twice returned no complete response, so the hosted route is recorded as the repository's claim (packages/mcp-plugin/mcp.json)",
      "Not in the official MCP registry. A search for gemini on 3 November 2026 returned 30 entries, all about Google's Gemini models or unrelated; third-party servers for the exchange exist, such as pipeworx-io/mcp-gemini-crypto, which proxy public market data (https://registry.modelcontextprotocol.io/v0/servers?search=gemini)",
      "The developer site serves llms.txt, llms-full.txt, agents.md, an agent card and an agent skills index, a Build an agent guide that tells agents to restate the product, instrument, action and account and confirm before any mutating call, and a specs catalogue with an OpenAPI 3 file for REST and an AsyncAPI file for WebSocket (https://developer.gemini.com/build/agent, https://developer.gemini.com/api-specifications)",
      "Rate limits are 120 requests a minute on public endpoints and 600 a minute on private ones, with a burst of five queued requests and then HTTP 429 until the rate falls, plus per-subaccount limits of one request per 5 seconds on transfers and one per 2 seconds on deposit addresses. No Retry-After header or backoff guidance is documented (https://developer.gemini.com/rate-limit)",
      "A client order id of 1 to 36 characters is recommended per session and echoed back, but Gemini only recommends uniqueness and documents no duplicate rejection, so a retried order can double (https://developer.gemini.com/client-order-id)",
      "The sandbox at exchange.sandbox.gemini.com, api.sandbox.gemini.com and wss://ws.sandbox.gemini.com gives each new account $100,000, 1,000 BTC and other test balances, runs bots against the book, and lets automated tests bypass 2FA with a `GEMINI-SANDBOX-2FA=true` header and code 9999999 (https://developer.gemini.com/get-started/sandbox)",
      "Gemini's areas-of-availability page lists the United States (all states), 12 other countries and territories in North America, 6 in South America, 33 in Europe, Israel, Singapore, Turkey, Australia, Egypt, Ghana and South Africa, and says all customer accounts in the United Kingdom, the European Economic Area and Australia close effective 6 April 2026, while still listing those countries (https://www.gemini.com/areas-of-availability, checked 2026-11-03)",
      "The revision history runs from 5 October 2015 to 28 October 2026 and records the removal of the deprecated /v1/feepromos endpoint on 10 September 2026, decimal fields changing from numbers to strings on 7 July 2026 and `Balance._timestamp` changing type on 10 August 2026. The upcoming-changes page says only \"TBD\" (https://developer.gemini.com/changelog/revision-history)",
      "The user agreement (19 February 2026) names Gemini Trust Company, LLC for Idaho, Louisiana, New York, Ohio and Texas residents and Gemini Moonbase, LLC for the other states, and has no clause on API use, bots or automated trading. The copyright line names Gemini Space Station, LLC; the SEC lists Gemini Space Station, Inc. (CIK 2055592, Nasdaq GEMI) (https://www.gemini.com/legal/user-agreement, https://data.sec.gov/submissions/CIK0002055592.json)",
      "status.gemini.com's feed for 10 September to 3 November 2026 lists 25 entries, most of them scheduled trading or FIX upgrades of 15 to 60 minutes with possible order timeouts, deposit delays on single networks, and incorrect perpetual index prices for about 3.5 hours on 15 and 16 October; nothing in the feed is dated between 5 August and 9 September (https://status.gemini.com/history.atom)"
    ],
    "area": "payments",
    "details": [
      {
        "label": "Surface listed",
        "value": "The hosted REST API at api.gemini.com (v1 and v2) as an agent calls it, read from developer.gemini.com, its specs catalogue, llms.txt and agents.md, the gemini/developer-platform repository (shallow clone), status.gemini.com, gemini.com's fee, legal and availability pages and the SEC on 3 November 2026. No account was made, no key minted and no MCP session opened"
      },
      {
        "label": "MCP server",
        "value": "Official. `gemini-mcp` 1.0.1 in packages/mcp-server of github.com/gemini/developer-platform, stdio, built from source (not on npm), 87 tools in the source where the README says 40+, authenticated by GEMINI_API_KEY and GEMINI_API_SECRET in the client config (public market tools need no key). Not in the official MCP registry. The repository's mcp-plugin manifest names a hosted `https://api.gemini.com/mcp` that no docs page mentions and that answered no complete response to a GET"
      },
      {
        "label": "Key permissions",
        "value": "One role per key, Trader (default; balances, orders, addresses, history), Fund Manager (withdrawals, approved addresses, bank methods, transfers between accounts; no orders), Auditor (read-only, cannot be combined), Administrator (master keys; create and view accounts). Approved (whitelisted) withdrawal addresses are managed by Fund Manager. Keys are revoked in API Settings. No IP allow-list documented"
      },
      {
        "label": "Rate limits",
        "value": "120 requests a minute public, 600 a minute private, five queued burst requests then HTTP 429 until the rate falls; transfers 1 per 5 seconds and deposit addresses 1 per 2 seconds per subaccount. No Retry-After or backoff guidance. WebSocket limits not documented"
      },
      {
        "label": "Sandbox",
        "value": "exchange.sandbox.gemini.com, api.sandbox.gemini.com, wss://ws.sandbox.gemini.com and docs.sandbox.gemini.com. New accounts get $100,000, 1,000 BTC, 20,000 ETH, BCH, ZEC and LTC; bots trade the book; only Bitcoin testnet deposits and withdrawals; 2FA bypass with the GEMINI-SANDBOX-2FA header and code 9999999"
      },
      {
        "label": "Countries served",
        "value": "The availability page lists the United States and its territories, the Bahamas, Bermuda, BVI, Cayman Islands, Costa Rica, Dominican Republic, Jamaica, Mexico, Panama, St Lucia, St Vincent, Argentina, Brazil, Chile, Ecuador, Peru, Uruguay, 33 European countries, Israel, Singapore, Turkey, Australia, Egypt, Ghana and South Africa, with notices that UK, EEA and Australian accounts closed effective 6 April 2026. The support article on countries answered 403"
      },
      {
        "label": "Fees at the lowest tier",
        "value": "0.600% maker and 1.200% taker on spot under $10,000 of 30-day volume, API fee schedule effective 1 September 2026; derivatives 0.02% maker and 0.07% taker; stablecoin pairs 0.00% and 0.01%"
      },
      {
        "label": "FIX and WebSocket",
        "value": "FIX order entry, market data and drop copy with a dictionary and third-party (on-behalf-of) support, documented under /trading/fix. WebSocket at wss://ws.gemini.com with market data and authenticated order-event streams, described by an AsyncAPI file; legacy v1 and v2 WebSocket APIs are docs-only"
      },
      {
        "label": "Terms on automated trading",
        "value": "The user agreement of 19 February 2026 has no clause on API use, bots or automated trading. No separate API terms were found. The developer site's Build an agent guide sets expectations for agents (least privilege, preview, confirmation at execution)"
      },
      {
        "label": "Errors and idempotency",
        "value": "JSON `{result, reason, message}` with 53 reasons (InsufficientFunds 406, RateLimit 429, MissingRole 403, Maintenance 503). client_order_id is optional, recommended, 1 to 36 characters, not checked for duplicates. A key with Requires Heartbeat cancels its session's orders after 30 seconds without a request"
      },
      {
        "label": "SDKs",
        "value": "TypeScript `@gemini-markets/sdk` 0.1.1 (23 September 2026; HMAC, OAuth PKCE, REST and WebSocket, 106 operations across 10 namespaces per the docs) and a Go SDK 0.1.0 (29 August 2026), both Apache-2.0 in the developer-platform repository, plus Python, TypeScript and Go samples and three Claude Code skills"
      },
      {
        "label": "Legal entity",
        "value": "Gemini Trust Company, LLC (NMLS 1518126, New York) for exchange services, Gemini Moonbase, LLC for most US states' user agreement, with UK, Irish, Maltese, Singaporean and Australian affiliates named in the privacy policy. The parent Gemini Space Station, Inc. is a Nevada corporation listed on Nasdaq as GEMI"
      }
    ],
    "unitPrices": [
      {
        "item": "Spot maker fee, base tier (under $10,000 of 30-day volume)",
        "unit": "pct",
        "usd": 0.6,
        "note": "API fee schedule effective 1 September 2026"
      },
      {
        "item": "Spot taker fee, base tier",
        "unit": "pct",
        "usd": 1.2,
        "note": "falls to 0.02% above $250M of 30-day volume"
      },
      {
        "item": "Derivatives taker fee, base tier",
        "unit": "pct",
        "usd": 0.07,
        "note": "maker 0.02%, charged in GUSD"
      }
    ],
    "provenance": {
      "legalEntity": "Gemini Trust Company, LLC",
      "domain": "gemini.com",
      "domainRegistered": "1994-02-14",
      "endpointOnVendorDomain": true,
      "terms": "https://www.gemini.com/legal/user-agreement",
      "privacy": "https://www.gemini.com/legal/privacy-policy",
      "statusPage": "https://status.gemini.com",
      "changelog": "https://developer.gemini.com/changelog/revision-history",
      "securityTxt": "valid",
      "checked": "2026-11-03",
      "notes": [
        "The user agreement page of 19 February 2026 names Gemini Trust Company, LLC and Gemini Moonbase, LLC by state of residence; the privacy policy of 11 May 2026 lists the affiliates by region. The SEC's submissions record names the parent Gemini Space Station, Inc., Nasdaq GEMI.",
        "RDAP gives gemini.com a registration date of 14 February 1994.",
        "https://www.gemini.com/.well-known/security.txt is a PGP-signed file with Contact psirt@gemini.com, a bug bounty policy with payouts from $150 to $20,000 and a sandbox-only scope, but no Expires line.",
        "www.gemini.com/robots.txt allows the pages read and sets Crawl-delay 600; developer.gemini.com and status.gemini.com allow all (the status site disallows /api/ and /embed/, so the history feed was read, not the incidents API). support.gemini.com answered 403 to an article fetch.",
        "status.gemini.com is a Statuspage site with an Atom history feed."
      ],
      "score": 95,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Gemini Trust Company, LLC",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "gemini.com, registered 1994-02-14 (32 years)",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "gemini.com",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "published, but our reader couldn't read it",
          "points": 7,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 7 of the 8 things a reader expects, and has 1 clause that costs points",
          "points": 7.3,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Status page",
          "value": "status.gemini.com",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "valid",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "People named",
          "value": "3 named with their role, none with a public profile",
          "points": 7,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Support route",
          "value": "a support address, help pages, a community",
          "points": 5,
          "max": 5,
          "state": "ok"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://www.gemini.com/legal/user-agreement",
          "state": "unreadable",
          "reason": "the page answered with a browser check, not the document",
          "readAt": "2026-11-03",
          "points": 7,
          "max": 10
        },
        {
          "kind": "privacy",
          "url": "https://www.gemini.com/legal/privacy-policy",
          "state": "read",
          "readAt": "2026-11-03",
          "words": 5207,
          "points": 7.3,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": false
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": true,
              "quote": "The Business and Commercial Purposes for Which We Collect and Use Your Personal Information"
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": true,
              "quote": "We retain your Personal Information for as long as is reasonably necessary to provide services to you, for our legitimate business purposes, and to comply with our legal and regulatory obligations."
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "This Privacy Policy does not apply to third party websites, products, or services, even if we provide links to them or they link to us."
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": true,
              "quote": "We may disclose Personal Information in the event of a proposed or consummated merger, acquisition, reorganization, asset sale, or similar corporate transaction, or in the event of a bankruptcy or dissolution."
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": true,
              "quote": "For any of your privacy rights and choices, please see Section 13 Jurisdiction Specific Disclosures."
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": true,
              "quote": "You may also contact our Data Protection Officer in relation to the processing of your personal data by emailing DPO@gemini.com.",
              "says": "DPO@gemini.com"
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": true,
              "quote": "We rely primarily on the European Commission’s Standard Contractual Clauses to facilitate international transfers of Personal Information to third countries, including from Gemini’s European operations to Gemini Trust Company, LLC in the United States.",
              "says": "Relies on standard contractual clauses"
            }
          ],
          "toKnow": [
            {
              "key": "training",
              "label": "Says it may use customer content to train or improve models, and no opt-out was found",
              "found": true,
              "quote": "We may use anonymized Personal Information to train AI models for internal use only.",
              "costsPoints": true
            },
            {
              "key": "privacy.sells",
              "label": "Says it sells personal data or shares it for advertising",
              "found": true,
              "quote": "Marketing and Advertising Partners. We may share your Personal Information to third parties for marketing and advertising purposes, including social media platforms, third party advertising networks, and other parties that assist us in serving and optimizing our advertisements."
            }
          ]
        }
      ]
    },
    "humans": {
      "slug": "gemini-exchange",
      "checked": "2026-11-03",
      "company": "Gemini",
      "people": [
        {
          "name": "Tyler Winklevoss",
          "role": "Chief Executive Officer, Gemini",
          "page": "/people/tyler-winklevoss/"
        },
        {
          "name": "Cameron Winklevoss",
          "role": "President, Gemini",
          "page": "/people/cameron-winklevoss/"
        },
        {
          "name": "Chris Mariadason",
          "role": "Chief Compliance Officer, Gemini",
          "page": "/people/chris-mariadason/"
        }
      ],
      "peopleNote": "Gemini's about page, read 3 November 2026, lists its executives, Cameron Winklevoss (President), Tyler Winklevoss (Chief Executive Officer), Chris Mariadason (Chief Compliance Officer), Jeff Tiller (VP and Chief of Staff), Danijela Stojanovic (Interim CFO) and Kate Freedman (Interim General Counsel). No page we read calls anyone a founder, so the founder flag is left off; press reports describe the Winklevoss twins as the founders, which a later pass can confirm from the S-1. The exchange is run by Gemini Trust Company, LLC; the SEC's submissions record (CIK 2055592) names the parent Gemini Space Station, Inc., Nasdaq GEMI, with an S-1 of 24 July 2025, a 424B4 prospectus of 11 September 2025 and a first 10-Q of 10 November 2025, so the company is public and no shareholders are listed. investors.gemini.com refused our reader (403 on robots.txt) and was not read. No social accounts are attached to individuals because none is linked from a Gemini page we read.",
      "companySocial": {
        "linkedin": "https://www.linkedin.com/company/geminitrust/",
        "x": "https://x.com/gemini",
        "github": "https://github.com/gemini"
      },
      "support": {
        "emails": [
          "trading@gemini.com",
          "psirt@gemini.com"
        ],
        "urls": [
          "https://support.gemini.com/",
          "https://support.gemini.com/hc/requests/new",
          "https://status.gemini.com/"
        ],
        "community": [
          {
            "label": "r/Gemini",
            "url": "https://www.reddit.com/r/Gemini/",
            "kind": "forum"
          },
          {
            "label": "developer-platform issues",
            "url": "https://github.com/gemini/developer-platform/issues",
            "kind": "github"
          }
        ],
        "contactEmails": [
          "trading@gemini.com"
        ],
        "contactUrls": [
          "https://support.gemini.com/hc/requests/new"
        ]
      },
      "sources": [
        "https://www.gemini.com/about",
        "https://www.gemini.com/legal/user-agreement",
        "https://www.gemini.com/legal/privacy-policy",
        "https://www.gemini.com/.well-known/security.txt",
        "https://developer.gemini.com/authentication/oauth",
        "https://developer.gemini.com/get-started/sandbox",
        "https://github.com/gemini/developer-platform",
        "https://data.sec.gov/submissions/CIK0002055592.json"
      ],
      "ownership": {
        "status": "public",
        "exchange": "Nasdaq",
        "ticker": "GEMI",
        "checked": "2026-11-03",
        "sources": [
          "https://data.sec.gov/submissions/CIK0002055592.json",
          "https://www.gemini.com/about"
        ]
      }
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/gemini-exchange.json",
    "live": {
      "slug": "gemini-exchange",
      "vendorStatus": {
        "page": "https://status.gemini.com",
        "indicator": "none",
        "summary": "All Systems Operational",
        "checkedAt": "2026-11-04T20:05:13.096728861Z"
      },
      "securityTxt": {
        "url": "https://gemini.com/.well-known/security.txt",
        "state": "valid",
        "checkedAt": "2026-11-04T15:53:25.749980755Z"
      },
      "updatedAt": "2026-11-04T20:05:13.096728861Z"
    }
  }
}
