{
  "data": {
    "a": {
      "slug": "bitfinex",
      "name": "Bitfinex API",
      "vendor": "iFinex Inc.",
      "vendorUrl": "https://www.bitfinex.com",
      "kind": "http-api",
      "category": "crypto-exchanges",
      "summary": "Bitfinex's v2 API for spot, margin, derivatives and peer-to-peer funding, with balances, deposits and withdrawals, through REST and WebSocket with scoped API keys, paper-trading sub-accounts and official Node, Python, Go and Ruby clients.",
      "url": "https://www.anchorterminal.com/tools/bitfinex",
      "markdownUrl": "https://www.anchorterminal.com/tools/bitfinex.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/bitfinex.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/bitfinex.json",
      "dns": "bitfinex.grade.anchorterminal.com",
      "repo": "https://github.com/bitfinexcom/bitfinex-api-node",
      "license": "Proprietary hosted API under Bitfinex's API Terms of Service, which our reader couldn't load. The official client libraries (Node, Python, Go, Ruby) are MIT or Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "bitfinex-api-node"
        },
        {
          "registry": "pypi",
          "name": "bitfinex-api-py"
        }
      ],
      "auth": "api-key",
      "authNotes": "API key and secret made at setting.bitfinex.com/api after a browser signup, with 2FA and an email confirmation, shown once. Each key carries read and write permissions per scope (account, history, orders, positions, funding, settings, wallets, withdraw, ui_withdraw, bfxpay), readable back from `POST /v2/auth/r/permissions`, and keys are revoked from the same page; a strictly increasing nonce per key. Bitfinex's support article on keys says a key can be bound to up to 20 IP addresses, per the search result's text, since the article itself answered 403 (https://docs.bitfinex.com/docs/requirements-and-limitations, https://docs.bitfinex.com/reference/key-permissions, checked 2026-11-03).",
      "pricing": "usage",
      "pricingNotes": "The API itself costs nothing. The fees page read on 3 November 2026 shows zero maker and zero taker fees for exchange, margin and derivatives order execution with no volume tiers, margin funding lender fees of 15% of interest (18% when the offer is hidden) with up to 5% off for LEO holders, a 5% takeover fee, free crypto deposits and bank wire 0.1% (minimum 60 for deposits, 100 for withdrawals, USD or EUR). Paper trading on a sub-account needs no money (https://www.bitfinex.com/fees, checked 2026-11-03).",
      "priceSummary": "0% fee",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API docs, llms.txt or fees page (checked 2026-11-03). Fees are taken from the account; onboarding is a browser signup.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 480,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://docs.bitfinex.com",
      "llmsTxt": "https://docs.bitfinex.com/llms.txt",
      "capabilities": [
        "exchange.market-data",
        "exchange.spot-trading",
        "exchange.derivatives",
        "exchange.balances",
        "exchange.transfers",
        "exchange.staking",
        "market.crypto"
      ],
      "tags": [
        "official",
        "hosted",
        "api-key",
        "llms-txt",
        "sandbox",
        "status-page",
        "javascript",
        "python",
        "go",
        "ruby",
        "usage-priced"
      ],
      "lastRelease": "2026-07-18",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.4,
        "grade": "C",
        "agentReady": false,
        "rank": 687,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 10,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 61,
          "maintenance": 41,
          "payments": 40,
          "reliability": 85,
          "schema": 48,
          "security": 62,
          "transparency": 49
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "Bitfinex gives an agent scoped keys with a separate withdraw permission, paper-trading sub-accounts on the production API, llms.txt and official clients in four languages. There is no official MCP server, responses are positional arrays with empty error bodies, rate limits run 10 to 90 a minute per IP, and the terms, API terms and privacy statement could not be read.",
        "bestFor": "An agent trading spot, margin or derivatives, or lending on the funding market, with scoped keys, official clients and paper trading.",
        "strengths": [
          "Per-scope read and write permissions on each key, including a separate `withdraw` scope, readable back from the permissions endpoint",
          "Paper trading on a sub-account against test symbols on the same production API, with no money at risk",
          "llms.txt with a Markdown twin of every docs page, and official Node, Python, Go and Ruby clients",
          "Rate limits, connection limits and the `ERR_RATE_LIMIT` response documented with numbers",
          "A Statuspage history going back to 2021 and a fees page without login"
        ],
        "weaknesses": [
          "No official MCP server, OpenAPI file or AsyncAPI file; the registry's Bitfinex servers are third parties proxying public market data",
          "Responses are positional arrays and authenticated errors answer 400 with an empty object, so an agent must map indexes and guess causes",
          "Rate limits of 10 to 90 requests a minute per IP with a 60-second block and no Retry-After",
          "The Exchange Terms, API Terms of Service, privacy statement and support articles could not be read, so the bot clauses, retention and restricted countries are unchecked",
          "The docs changelog stops at October 2024 and the v1 deprecation has no date"
        ],
        "agentNotes": [
          "Mint a key with read on the scopes the task needs and write only on `orders`; never grant `withdraw` to a trading key, and bind the key to known IPs",
          "Use one key per client process, since each key keeps its own strictly increasing nonce and a reused nonce is rejected",
          "Rehearse on a paper-trading sub-account with the TEST symbols before touching real balances; the sub-account cannot be converted later",
          "Plan requests against the per-endpoint limit of 10 to 90 a minute per IP; `ERR_RATE_LIMIT` blocks the IP for 60 seconds with no Retry-After",
          "Map each response by position from the docs' field tables and set a `cid` on orders, because responses are arrays and a 400 carries no reason"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.4
          }
        ],
        "editorialScores": {
          "ergonomics": 61,
          "maintenance": 41,
          "payments": 40,
          "reliability": 85,
          "schema": 48,
          "security": 62,
          "transparency": 13
        },
        "provenanceScore": 85,
        "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
        }
      },
      "connect": {
        "install": "npm install bitfinex-api-node",
        "http": "curl https://api-pub.bitfinex.com/v2/ticker/tBTCUSD"
      },
      "letme": {
        "capability": "https://letme.dev/exchange.market-data",
        "tool": "https://letme.dev/bitfinex"
      },
      "area": "payments",
      "unitPrices": [
        {
          "item": "Exchange maker fee, as shown on 3 November 2026",
          "unit": "pct",
          "usd": 0,
          "note": "no tiers or date shown; reads as a promotion"
        },
        {
          "item": "Exchange taker fee, as shown on 3 November 2026",
          "unit": "pct",
          "usd": 0,
          "note": "no tiers or date shown; reads as a promotion"
        },
        {
          "item": "Margin funding lender fee on interest earned",
          "unit": "pct",
          "usd": 15,
          "note": "18% when the offer is hidden, up to 5% off for LEO holders"
        }
      ],
      "provenance": {
        "legalEntity": "iFinex Inc.",
        "domain": "bitfinex.com",
        "domainRegistered": "2012-10-11",
        "endpointOnVendorDomain": true,
        "terms": "https://www.bitfinex.com/legal/exchange/terms/",
        "privacy": "https://www.bitfinex.com/legal/privacy/",
        "statusPage": "https://bitfinex.statuspage.io",
        "changelog": "https://docs.bitfinex.com/docs/changelog",
        "securityTxt": "none",
        "checked": "2026-11-03",
        "notes": [
          "iFinex Inc. is named only in the copyright line of bitfinex.com; the Exchange Terms, API Terms of Service and privacy statement pages draw their text by script and loaded only navigation, so the contracting entity and its jurisdiction are unconfirmed.",
          "RDAP gives bitfinex.com a registration date of 11 October 2012.",
          "https://www.bitfinex.com/.well-known/security.txt returns 404.",
          "www.bitfinex.com/robots.txt allows the pages read; docs.bitfinex.com allows all and points to llms.txt; bitfinex.statuspage.io disallows /api/ and /embed/, so the history feed was read. support.bitfinex.com's robots.txt allows articles but the articles answered 403.",
          "The docs changelog's latest entry is 16 October 2024; the API clients carry the recent releases."
        ],
        "score": 85
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/bitfinex.json",
      "live": {
        "slug": "bitfinex",
        "vendorStatus": {
          "page": "https://bitfinex.statuspage.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-04T19:31:04.844086591Z"
        },
        "securityTxt": {
          "url": "https://bitfinex.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:53:26.210646703Z"
        },
        "updatedAt": "2026-11-04T19:31:04.844086591Z"
      }
    },
    "answer": "Gemini Exchange API scores 74.6 (BB) on agent readiness against Bitfinex API's 58.4 (C), and leads in 5 of 7 scored categories. Bitfinex API leads on reliability.",
    "b": {
      "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"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "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
        }
      },
      "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"
      },
      "area": "payments",
      "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
      },
      "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-04T19:31:36.16016617Z"
        },
        "securityTxt": {
          "url": "https://gemini.com/.well-known/security.txt",
          "state": "valid",
          "checkedAt": "2026-11-04T15:53:25.749980755Z"
        },
        "updatedAt": "2026-11-04T19:31:36.16016617Z"
      }
    },
    "edges": [
      {
        "by": 47,
        "category": "maintenance",
        "leads": "gemini-exchange",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Read as a closed service with open clients. The last dated change we could read is bitfinex-api-node 9.1.0 on 18 July 2026, 108 days before the check; the docs changelog stops in October 2024 (10). Not three dated releases in the last 90 days (0). The bitfinexcom organisation pushes often (bfx-report on 3 November 2026) and the clients have issue trackers, but support articles answered 403 and no reply times were read (10 of 25). Official clients current in four languages, Node 9.1.0 of July 2026 and Python 4.0.0 of October 2025; not in the MCP registry (15). The Node client has a dependency history of security fixes (its last GitHub release notes name two) and no CI was read (6 of 10). 10 + 0 + 10 + 15 + 6 = 41.",
          "b": "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."
        },
        "scores": {
          "a": 41,
          "b": 88
        }
      },
      {
        "by": 40,
        "category": "schema",
        "leads": "gemini-exchange",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No OpenAPI or AsyncAPI file was found on docs.bitfinex.com, in llms.txt or in the client repositories (0). llms.txt and a .md twin of every docs page (10). Each reference page states the endpoint's purpose and fields, and the introduction says when to use api-pub against api, but nothing says when not to use an endpoint (14 of 20). Responses are positional arrays described in field tables, inputs are typed in prose with some enumerations (wallet names, order types) and required fields marked; the withdrawal CODE field is work in progress (7 of 15). Signed-request recipes in five languages, but authenticated errors are documented as 400 with an empty object and there is no error reference (9 of 15). Version v2 in the path and a dated changelog, whose last entry is October 2024 and whose v1 deprecation has no date (8 of 15). 0 + 10 + 14 + 7 + 9 + 8 = 48.",
          "b": "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."
        },
        "scores": {
          "a": 48,
          "b": 88
        }
      },
      {
        "by": 26,
        "category": "transparency",
        "leads": "gemini-exchange",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "The editorial half. A closed service whose Exchange Terms and API Terms of Service loaded only navigation, so the licence terms are unknown; the clients are MIT and Apache-2.0 (8 of 30). The privacy statement loaded only navigation, so retention and data handling are unchecked (0 of 30). The docs say v1 will be deprecated \"at some point in the future\" with no date, and the Python client's 4.0.0 removed endpoints with a release note (5 of 20). Subprocessors and data locations are in the unread privacy statement (0). 8 + 0 + 5 + 0 = 13.",
          "b": "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."
        },
        "scores": {
          "a": 49,
          "b": 75
        }
      },
      {
        "by": 18,
        "category": "ergonomics",
        "leads": "gemini-exchange",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Graded on the REST API. Limits on trades, candles and book depth, and `pub:list` config endpoints keep responses small, but positional arrays make every field a lookup (14 of 25). `start`, `end`, `limit` and `sort` on history endpoints and per-symbol variants (16 of 20). `ERR_RATE_LIMIT` is actionable; authenticated 400s return `{}` and withdrawal status strings may change, so an agent cannot branch on causes (8 of 20). A client id on orders, order multi-op and cancel-multiple, but no idempotency key and no retry contract (8 of 20). Few required parameters and official clients in Node, Python, Go and Ruby (15). 14 + 16 + 8 + 8 + 15 = 61.",
          "b": "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."
        },
        "scores": {
          "a": 61,
          "b": 79
        }
      },
      {
        "by": 16,
        "category": "security",
        "leads": "gemini-exchange",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Revocable keys with per-scope read and write flags, a permissions endpoint, 2FA and email confirmation at creation, strictly increasing nonces, and IP binding to 20 addresses per the support article's search text (the article answered 403); no key expiry (24 of 30). `withdraw` and `ui_withdraw` are separate scopes and read-only keys are possible, but the support text says keys from email-and-password accounts start with every permission enabled and no confirmation step is documented for API withdrawals (14 of 20). The API returns exchange data, not third-party text (10). Login history and an account changelog (audit) endpoint are documented (10 of 15). No security.txt, no readable disclosure policy and no certification page readable (4 of 20). 24 + 14 + 10 + 10 + 4 = 62.",
          "b": "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."
        },
        "scores": {
          "a": 62,
          "b": 78
        }
      },
      {
        "by": 12,
        "category": "reliability",
        "leads": "bitfinex",
        "name": "Reliability",
        "reasons": {
          "a": "Read with the hosted lines on the v2 API at api.bitfinex.com. bitfinex.statuspage.io is a Statuspage site with history back to May 2021 (20). Its feed has no entry between 25 March 2026 and 3 November 2026, so the last 90 days are clean on the record; the feed logs platform-wide outages only (a 14-hour maintenance in March 2026, a 3-hour outage in August 2025), so smaller incidents may go unrecorded. Judgement call (30). Rate limits with numbers, 10 to 90 a minute per IP and the WebSocket connection limits (15). `ERR_RATE_LIMIT` and the 60-second block are documented, with no Retry-After; orders take a `cid` but no idempotency key or retry guidance was found (10 of 15). No SLA found (0). Generally available (10). 20 + 30 + 15 + 10 + 0 + 10 = 85.",
          "b": "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."
        },
        "scores": {
          "a": 85,
          "b": 73
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "iFinex Inc.",
        "b": "Gemini Trust Company, LLC",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "stdio",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary hosted API under Bitfinex's API Terms of Service, which our reader couldn't load. The official client libraries (Node, Python, Go, Ruby) are MIT or Apache-2.0",
        "b": "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",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "87",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-07-18",
        "b": "2026-10-28",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "couldn't be read",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "480 stars",
        "b": "8 stars, 99 npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Gemini Exchange API scores 74.6 (BB) on agent readiness against Bitfinex API's 58.4 (C), and leads in 5 of 7 scored categories. Bitfinex API leads on reliability.",
        "question": "Which is better for AI agents, Bitfinex API or Gemini Exchange API?"
      },
      {
        "answer": "Bitfinex API needs an API key. Gemini Exchange API takes an API key or an OAuth sign-in.",
        "question": "Do Bitfinex API and Gemini Exchange API need an API key?"
      },
      {
        "answer": "No hosted endpoint is listed for Bitfinex API. Gemini Exchange API runs on your own machine, with no hosted endpoint listed.",
        "question": "Can an agent call Bitfinex API and Gemini Exchange API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 85 against 73"
        ],
        "also": null,
        "goodFor": "An agent trading spot, margin or derivatives, or lending on the funding market, with scoped keys, official clients and paper trading.",
        "slug": "bitfinex",
        "watchFor": "No official MCP server, OpenAPI file or AsyncAPI file; the registry's Bitfinex servers are third parties proxying public market data"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 88 against 48",
          "Agent ergonomics, 79 against 61",
          "Security \u0026 auth, 78 against 62",
          "Maintenance \u0026 community, 88 against 41",
          "Transparency \u0026 trust, 75 against 49"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "Runs on your own machine"
        ],
        "goodFor": "An agent trading spot, perpetuals or prediction markets for a US customer with a role-limited key and a sandbox to rehearse on.",
        "slug": "gemini-exchange",
        "watchFor": "Client order ids are only recommended to be unique and no duplicate rejection is documented, so a retried order can execute twice"
      }
    ],
    "history": null,
    "job": {
      "capability": "exchange.market-data",
      "name": "Exchange market data"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-bitget.json",
        "title": "Bitfinex API vs Bitget",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-bitget"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-bithumb.json",
        "title": "Bitfinex API vs Bithumb Open API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-bithumb"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-bitstamp.json",
        "title": "Bitfinex API vs Bitstamp API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-bitstamp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-bybit.json",
        "title": "Bitfinex API vs Bybit",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-bybit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-advanced-trade.json",
        "title": "Bitfinex API vs Coinbase Advanced Trade API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-advanced-trade"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-mcp.json",
        "title": "Bitfinex API vs Coinbase MCP server (Coinbase for Agents)",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-crypto-com-exchange.json",
        "title": "Bitfinex API vs Crypto.com Exchange API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-crypto-com-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-deribit.json",
        "title": "Bitfinex API vs Deribit",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-deribit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-dydx.json",
        "title": "Bitfinex API vs dYdX",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-gate-io.json",
        "title": "Bitfinex API vs Gate",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-gate-io"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-htx.json",
        "title": "Bitfinex API vs HTX trading API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-htx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-hyperliquid.json",
        "title": "Bitfinex API vs Hyperliquid",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-hyperliquid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-kraken.json",
        "title": "Bitfinex API vs Kraken API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-kraken"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-kucoin.json",
        "title": "Bitfinex API vs KuCoin",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-kucoin"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-mexc.json",
        "title": "Bitfinex API vs MEXC API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-mexc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-okx.json",
        "title": "Bitfinex API vs OKX API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-okx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-uniswap.json",
        "title": "Bitfinex API vs Uniswap Trading API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-uniswap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitfinex-vs-upbit.json",
        "title": "Bitfinex API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/bitfinex-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitget-vs-gemini-exchange.json",
        "title": "Bitget vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/bitget-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bithumb-vs-gemini-exchange.json",
        "title": "Bithumb Open API vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/bithumb-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitstamp-vs-gemini-exchange.json",
        "title": "Bitstamp API vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/bitstamp-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bybit-vs-gemini-exchange.json",
        "title": "Bybit vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/bybit-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crypto-com-exchange-vs-gemini-exchange.json",
        "title": "Crypto.com Exchange API vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/crypto-com-exchange-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gate-io-vs-gemini-exchange.json",
        "title": "Gate vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/gate-io-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-exchange-vs-htx.json",
        "title": "Gemini Exchange API vs HTX trading API",
        "url": "https://www.anchorterminal.com/compare/gemini-exchange-vs-htx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-exchange-vs-hyperliquid.json",
        "title": "Gemini Exchange API vs Hyperliquid",
        "url": "https://www.anchorterminal.com/compare/gemini-exchange-vs-hyperliquid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-exchange-vs-kraken.json",
        "title": "Gemini Exchange API vs Kraken API",
        "url": "https://www.anchorterminal.com/compare/gemini-exchange-vs-kraken"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-exchange-vs-kucoin.json",
        "title": "Gemini Exchange API vs KuCoin",
        "url": "https://www.anchorterminal.com/compare/gemini-exchange-vs-kucoin"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-exchange-vs-mexc.json",
        "title": "Gemini Exchange API vs MEXC API",
        "url": "https://www.anchorterminal.com/compare/gemini-exchange-vs-mexc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-exchange-vs-okx.json",
        "title": "Gemini Exchange API vs OKX API",
        "url": "https://www.anchorterminal.com/compare/gemini-exchange-vs-okx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-exchange-vs-uniswap.json",
        "title": "Gemini Exchange API vs Uniswap Trading API",
        "url": "https://www.anchorterminal.com/compare/gemini-exchange-vs-uniswap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-exchange-vs-upbit.json",
        "title": "Gemini Exchange API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/gemini-exchange-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/binance-vs-bitfinex.json",
        "title": "Binance API vs Bitfinex API",
        "url": "https://www.anchorterminal.com/compare/binance-vs-bitfinex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/binance-vs-gemini-exchange.json",
        "title": "Binance API vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/binance-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-gemini-exchange.json",
        "title": "Coinbase Advanced Trade API vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/coinbase-mcp-vs-gemini-exchange.json",
        "title": "Coinbase MCP server (Coinbase for Agents) vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/coinbase-mcp-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deribit-vs-gemini-exchange.json",
        "title": "Deribit vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/deribit-vs-gemini-exchange"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-gemini-exchange.json",
        "title": "dYdX vs Gemini Exchange API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-gemini-exchange"
      }
    ],
    "panel": null,
    "scores": [
      {
        "bitfinex": 85,
        "by": 12,
        "edge": "bitfinex",
        "gemini-exchange": 73,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "bitfinex": 48,
        "by": 40,
        "edge": "gemini-exchange",
        "gemini-exchange": 88,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "bitfinex": 61,
        "by": 18,
        "edge": "gemini-exchange",
        "gemini-exchange": 79,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "bitfinex": 62,
        "by": 16,
        "edge": "gemini-exchange",
        "gemini-exchange": 78,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "bitfinex": 40,
        "by": 0,
        "edge": "",
        "gemini-exchange": 40,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "bitfinex": 41,
        "by": 47,
        "edge": "gemini-exchange",
        "gemini-exchange": 88,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "bitfinex": 49,
        "by": 26,
        "edge": "gemini-exchange",
        "gemini-exchange": 75,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Gemini Exchange API scores 74.6 (BB) on agent readiness against Bitfinex API's 58.4 (C), and leads in 5 of 7 scored categories. Bitfinex API leads on reliability. Both do exchange market data.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "bitfinex": "Bitfinex gives an agent scoped keys with a separate withdraw permission, paper-trading sub-accounts on the production API, llms.txt and official clients in four languages. There is no official MCP server, responses are positional arrays with empty error bodies, rate limits run 10 to 90 a minute per IP, and the terms, API terms and privacy statement could not be read.",
      "gemini-exchange": "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/bitfinex-vs-gemini-exchange",
    "json": "https://www.anchorterminal.com/compare/bitfinex-vs-gemini-exchange.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/bitfinex-vs-gemini-exchange.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/bitfinex-vs-gemini-exchange.min.md"
  },
  "markdown": "Gemini Exchange API scores 74.6 (BB) on agent readiness against Bitfinex API's 58.4 (C), and leads in 5 of 7 scored categories. Bitfinex API leads on reliability. Both do exchange market data.\n\n- Bitfinex API: grade C, 58.4/100, rank #687 of 1349. Markdown https://www.anchorterminal.com/tools/bitfinex.md · JSON https://www.anchorterminal.com/api/v1/tools/bitfinex.json\n- Gemini Exchange API: grade BB, 74.6/100, rank #70 of 1349. Markdown https://www.anchorterminal.com/tools/gemini-exchange.md · JSON https://www.anchorterminal.com/api/v1/tools/gemini-exchange.json\n- Best crypto exchange APIs and MCP servers for AI agents: https://www.anchorterminal.com/best/crypto-exchanges/index.md\n- All 210 exchanges comparisons: https://www.anchorterminal.com/compare/crypto-exchanges/index.md\n\n## Which one, for what\n\n### Bitfinex API (C)\n\nGood for: An agent trading spot, margin or derivatives, or lending on the funding market, with scoped keys, official clients and paper trading.\n\nAhead on:\n- Reliability, 85 against 73\n\nWatch for: No official MCP server, OpenAPI file or AsyncAPI file; the registry's Bitfinex servers are third parties proxying public market data\n\n### Gemini Exchange API (BB)\n\nGood for: An agent trading spot, perpetuals or prediction markets for a US customer with a role-limited key and a sandbox to rehearse on.\n\nAhead on:\n- Schema \u0026 documentation, 88 against 48\n- Agent ergonomics, 79 against 61\n- Security \u0026 auth, 78 against 62\n- Maintenance \u0026 community, 88 against 41\n- Transparency \u0026 trust, 75 against 49\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- Runs on your own machine\n\nWatch for: Client order ids are only recommended to be unique and no duplicate rejection is documented, so a retried order can execute twice\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Gemini Exchange API +47\n\n- Bitfinex API (41): Read as a closed service with open clients. The last dated change we could read is bitfinex-api-node 9.1.0 on 18 July 2026, 108 days before the check; the docs changelog stops in October 2024 (10). Not three dated releases in the last 90 days (0). The bitfinexcom organisation pushes often (bfx-report on 3 November 2026) and the clients have issue trackers, but support articles answered 403 and no reply times were read (10 of 25). Official clients current in four languages, Node 9.1.0 of July 2026 and Python 4.0.0 of October 2025; not in the MCP registry (15). The Node client has a dependency history of security fixes (its last GitHub release notes name two) and no CI was read (6 of 10). 10 + 0 + 10 + 15 + 6 = 41.\n- Gemini Exchange API (88): 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.\n\n### Schema \u0026 documentation: Gemini Exchange API +40\n\n- Bitfinex API (48): No OpenAPI or AsyncAPI file was found on docs.bitfinex.com, in llms.txt or in the client repositories (0). llms.txt and a .md twin of every docs page (10). Each reference page states the endpoint's purpose and fields, and the introduction says when to use api-pub against api, but nothing says when not to use an endpoint (14 of 20). Responses are positional arrays described in field tables, inputs are typed in prose with some enumerations (wallet names, order types) and required fields marked; the withdrawal CODE field is work in progress (7 of 15). Signed-request recipes in five languages, but authenticated errors are documented as 400 with an empty object and there is no error reference (9 of 15). Version v2 in the path and a dated changelog, whose last entry is October 2024 and whose v1 deprecation has no date (8 of 15). 0 + 10 + 14 + 7 + 9 + 8 = 48.\n- Gemini Exchange API (88): 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.\n\n### Transparency \u0026 trust: Gemini Exchange API +26\n\n- Bitfinex API (49): The editorial half. A closed service whose Exchange Terms and API Terms of Service loaded only navigation, so the licence terms are unknown; the clients are MIT and Apache-2.0 (8 of 30). The privacy statement loaded only navigation, so retention and data handling are unchecked (0 of 30). The docs say v1 will be deprecated \"at some point in the future\" with no date, and the Python client's 4.0.0 removed endpoints with a release note (5 of 20). Subprocessors and data locations are in the unread privacy statement (0). 8 + 0 + 5 + 0 = 13.\n- 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.\n\n### Agent ergonomics: Gemini Exchange API +18\n\n- Bitfinex API (61): Graded on the REST API. Limits on trades, candles and book depth, and `pub:list` config endpoints keep responses small, but positional arrays make every field a lookup (14 of 25). `start`, `end`, `limit` and `sort` on history endpoints and per-symbol variants (16 of 20). `ERR_RATE_LIMIT` is actionable; authenticated 400s return `{}` and withdrawal status strings may change, so an agent cannot branch on causes (8 of 20). A client id on orders, order multi-op and cancel-multiple, but no idempotency key and no retry contract (8 of 20). Few required parameters and official clients in Node, Python, Go and Ruby (15). 14 + 16 + 8 + 8 + 15 = 61.\n- 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.\n\n### Security \u0026 auth: Gemini Exchange API +16\n\n- Bitfinex API (62): Revocable keys with per-scope read and write flags, a permissions endpoint, 2FA and email confirmation at creation, strictly increasing nonces, and IP binding to 20 addresses per the support article's search text (the article answered 403); no key expiry (24 of 30). `withdraw` and `ui_withdraw` are separate scopes and read-only keys are possible, but the support text says keys from email-and-password accounts start with every permission enabled and no confirmation step is documented for API withdrawals (14 of 20). The API returns exchange data, not third-party text (10). Login history and an account changelog (audit) endpoint are documented (10 of 15). No security.txt, no readable disclosure policy and no certification page readable (4 of 20). 24 + 14 + 10 + 10 + 4 = 62.\n- 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.\n\n### Reliability: Bitfinex API +12\n\n- Bitfinex API (85): Read with the hosted lines on the v2 API at api.bitfinex.com. bitfinex.statuspage.io is a Statuspage site with history back to May 2021 (20). Its feed has no entry between 25 March 2026 and 3 November 2026, so the last 90 days are clean on the record; the feed logs platform-wide outages only (a 14-hour maintenance in March 2026, a 3-hour outage in August 2025), so smaller incidents may go unrecorded. Judgement call (30). Rate limits with numbers, 10 to 90 a minute per IP and the WebSocket connection limits (15). `ERR_RATE_LIMIT` and the 60-second block are documented, with no Retry-After; orders take a `cid` but no idempotency key or retry guidance was found (10 of 15). No SLA found (0). Generally available (10). 20 + 30 + 15 + 10 + 0 + 10 = 85.\n- 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.\n\n## Score by category\n\n| Category | Weight | Bitfinex API | Gemini Exchange API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 85 | 73 | Bitfinex API +12 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 48 | 88 | Gemini Exchange API +40 |\n| Agent ergonomics | 13% (16.2 this run) | 61 | 79 | Gemini Exchange API +18 |\n| Security \u0026 auth | 14% (17.5 this run) | 62 | 78 | Gemini Exchange API +16 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 40 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 41 | 88 | Gemini Exchange API +47 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 49 | 75 | Gemini Exchange API +26 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **58.4 · C** | **74.6 · BB** | |\n\n## Facts side by side\n\n| Fact | Bitfinex API | Gemini Exchange API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | iFinex Inc. | Gemini Trust Company, LLC |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  | stdio |\n| Auth | API key | OAuth or key |\n| Pricing | Pay per use | Pay per use |\n| x402 | no | no |\n| Licence | Proprietary hosted API under Bitfinex's API Terms of Service, which our reader couldn't load. The official client libraries (Node, Python, Go, Ruby) are MIT or Apache-2.0 | 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 |\n| Tools exposed | none | 87 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| Last release | 2026-07-18 | 2026-10-28 |\n| Terms last updated | couldn't be read | couldn't be read |\n| Privacy policy last updated | couldn't be read | no date given |\n| Customer content may train models | couldn't be read | yes |\n| Terms restrict automated access | couldn't be read | couldn't be read |\n| Terms restrict benchmarking | couldn't be read | couldn't be read |\n| Terms or service can change without notice | couldn't be read | couldn't be read |\n| Arbitration or class-action waiver | couldn't be read | couldn't be read |\n| Popularity | 480 stars | 8 stars, 99 npm/wk |\n\n## Verdicts\n\n**Bitfinex API.** Bitfinex gives an agent scoped keys with a separate withdraw permission, paper-trading sub-accounts on the production API, llms.txt and official clients in four languages. There is no official MCP server, responses are positional arrays with empty error bodies, rate limits run 10 to 90 a minute per IP, and the terms, API terms and privacy statement could not be read.\n\n**Gemini Exchange API.** 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.\n\n## Before you call either\n\n### Bitfinex API\n\n1. Mint a key with read on the scopes the task needs and write only on `orders`; never grant `withdraw` to a trading key, and bind the key to known IPs\n2. Use one key per client process, since each key keeps its own strictly increasing nonce and a reused nonce is rejected\n3. Rehearse on a paper-trading sub-account with the TEST symbols before touching real balances; the sub-account cannot be converted later\n4. Plan requests against the per-endpoint limit of 10 to 90 a minute per IP; `ERR_RATE_LIMIT` blocks the IP for 60 seconds with no Retry-After\n5. Map each response by position from the docs' field tables and set a `cid` on orders, because responses are arrays and a 400 carries no reason\n\n### Gemini Exchange API\n\n1. 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\n2. 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\n3. Start on api.sandbox.gemini.com with the same code; sandbox apps register at once, production OAuth apps wait for Gemini's review\n4. 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\n5. Check the person's country against the availability page first; UK, EEA and Australian accounts were closed on 6 April 2026\n\n## Questions\n\n### Which is better for AI agents, Bitfinex API or Gemini Exchange API?\n\nGemini Exchange API scores 74.6 (BB) on agent readiness against Bitfinex API's 58.4 (C), and leads in 5 of 7 scored categories. Bitfinex API leads on reliability.\n\n### Do Bitfinex API and Gemini Exchange API need an API key?\n\nBitfinex API needs an API key. Gemini Exchange API takes an API key or an OAuth sign-in.\n\n### Can an agent call Bitfinex API and Gemini Exchange API without installing anything?\n\nNo hosted endpoint is listed for Bitfinex API. Gemini Exchange API runs on your own machine, with no hosted endpoint listed.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/bitfinex-vs-gemini-exchange.json, and with the fewest tokens: https://www.anchorterminal.com/compare/bitfinex-vs-gemini-exchange.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"bitfinex\", \"b\": \"gemini-exchange\"}`. From a terminal: `anchor compare bitfinex gemini-exchange`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/bitfinex.json and https://www.anchorterminal.com/api/v1/tools/gemini-exchange.json\n\n## Other comparisons with Bitfinex API or Gemini Exchange API\n\n- [Bitfinex API vs Bitget](https://www.anchorterminal.com/compare/bitfinex-vs-bitget.md)\n- [Bitfinex API vs Bithumb Open API](https://www.anchorterminal.com/compare/bitfinex-vs-bithumb.md)\n- [Bitfinex API vs Bitstamp API](https://www.anchorterminal.com/compare/bitfinex-vs-bitstamp.md)\n- [Bitfinex API vs Bybit](https://www.anchorterminal.com/compare/bitfinex-vs-bybit.md)\n- [Bitfinex API vs Coinbase Advanced Trade API](https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-advanced-trade.md)\n- [Bitfinex API vs Coinbase MCP server (Coinbase for Agents)](https://www.anchorterminal.com/compare/bitfinex-vs-coinbase-mcp.md)\n- [Bitfinex API vs Crypto.com Exchange API](https://www.anchorterminal.com/compare/bitfinex-vs-crypto-com-exchange.md)\n- [Bitfinex API vs Deribit](https://www.anchorterminal.com/compare/bitfinex-vs-deribit.md)\n- [Bitfinex API vs dYdX](https://www.anchorterminal.com/compare/bitfinex-vs-dydx.md)\n- [Bitfinex API vs Gate](https://www.anchorterminal.com/compare/bitfinex-vs-gate-io.md)\n- [Bitfinex API vs HTX trading API](https://www.anchorterminal.com/compare/bitfinex-vs-htx.md)\n- [Bitfinex API vs Hyperliquid](https://www.anchorterminal.com/compare/bitfinex-vs-hyperliquid.md)\n- [Bitfinex API vs Kraken API](https://www.anchorterminal.com/compare/bitfinex-vs-kraken.md)\n- [Bitfinex API vs KuCoin](https://www.anchorterminal.com/compare/bitfinex-vs-kucoin.md)\n- [Bitfinex API vs MEXC API](https://www.anchorterminal.com/compare/bitfinex-vs-mexc.md)\n- [Bitfinex API vs OKX API](https://www.anchorterminal.com/compare/bitfinex-vs-okx.md)\n- [Bitfinex API vs Uniswap Trading API](https://www.anchorterminal.com/compare/bitfinex-vs-uniswap.md)\n- [Bitfinex API vs Upbit Open API](https://www.anchorterminal.com/compare/bitfinex-vs-upbit.md)\n- [Bitget vs Gemini Exchange API](https://www.anchorterminal.com/compare/bitget-vs-gemini-exchange.md)\n- [Bithumb Open API vs Gemini Exchange API](https://www.anchorterminal.com/compare/bithumb-vs-gemini-exchange.md)\n- [Bitstamp API vs Gemini Exchange API](https://www.anchorterminal.com/compare/bitstamp-vs-gemini-exchange.md)\n- [Bybit vs Gemini Exchange API](https://www.anchorterminal.com/compare/bybit-vs-gemini-exchange.md)\n- [Crypto.com Exchange API vs Gemini Exchange API](https://www.anchorterminal.com/compare/crypto-com-exchange-vs-gemini-exchange.md)\n- [Gate vs Gemini Exchange API](https://www.anchorterminal.com/compare/gate-io-vs-gemini-exchange.md)\n- [Gemini Exchange API vs HTX trading API](https://www.anchorterminal.com/compare/gemini-exchange-vs-htx.md)\n- [Gemini Exchange API vs Hyperliquid](https://www.anchorterminal.com/compare/gemini-exchange-vs-hyperliquid.md)\n- [Gemini Exchange API vs Kraken API](https://www.anchorterminal.com/compare/gemini-exchange-vs-kraken.md)\n- [Gemini Exchange API vs KuCoin](https://www.anchorterminal.com/compare/gemini-exchange-vs-kucoin.md)\n- [Gemini Exchange API vs MEXC API](https://www.anchorterminal.com/compare/gemini-exchange-vs-mexc.md)\n- [Gemini Exchange API vs OKX API](https://www.anchorterminal.com/compare/gemini-exchange-vs-okx.md)\n- [Gemini Exchange API vs Uniswap Trading API](https://www.anchorterminal.com/compare/gemini-exchange-vs-uniswap.md)\n- [Gemini Exchange API vs Upbit Open API](https://www.anchorterminal.com/compare/gemini-exchange-vs-upbit.md)\n- [Binance API vs Bitfinex API](https://www.anchorterminal.com/compare/binance-vs-bitfinex.md)\n- [Binance API vs Gemini Exchange API](https://www.anchorterminal.com/compare/binance-vs-gemini-exchange.md)\n- [Coinbase Advanced Trade API vs Gemini Exchange API](https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-gemini-exchange.md)\n- [Coinbase MCP server (Coinbase for Agents) vs Gemini Exchange API](https://www.anchorterminal.com/compare/coinbase-mcp-vs-gemini-exchange.md)\n- [Deribit vs Gemini Exchange API](https://www.anchorterminal.com/compare/deribit-vs-gemini-exchange.md)\n- [dYdX vs Gemini Exchange API](https://www.anchorterminal.com/compare/dydx-vs-gemini-exchange.md)\n",
  "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"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Bitfinex API vs Gemini Exchange API",
        "url": ""
      }
    ],
    "description": "Gemini Exchange scores 74.6 (BB) to Bitfinex's 58.4 (C) for exchange market data. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Bitfinex API C 58.4",
      "Gemini Exchange API BB 74.6",
      "scores"
    ],
    "h1": "Bitfinex API vs Gemini Exchange API",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/bitfinex-vs-gemini-exchange",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Bitfinex vs Gemini Exchange for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-03",
    "url": "https://www.anchorterminal.com/compare/bitfinex-vs-gemini-exchange"
  },
  "tokens": {
    "markdown": 5550,
    "slim": 3180
  },
  "version": 1
}
