{
  "data": {
    "a": {
      "slug": "dydx",
      "name": "dYdX",
      "vendor": "dYdX Trading Inc.",
      "vendorUrl": "https://www.dydx.xyz",
      "kind": "http-api",
      "category": "crypto-exchanges",
      "summary": "dYdX is a perpetuals exchange on its own Cosmos chain. Agents read markets and accounts from the indexer REST and WebSocket API at indexer.dydx.trade and place orders as signed chain transactions through the official TypeScript, Python and Rust clients.",
      "url": "https://www.anchorterminal.com/tools/dydx",
      "markdownUrl": "https://www.anchorterminal.com/tools/dydx.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/dydx.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/dydx.json",
      "dns": "dydx.grade.anchorterminal.com",
      "repo": "https://github.com/dydxprotocol/v4-clients",
      "license": "The clients are AGPL-3.0 with a use condition tied to the v4 Terms of Use; the chain software (dydxprotocol/v4-chain) carries a custom licence GitHub cannot classify. The hosted indexer at indexer.dydx.trade and the front end are run by third parties, not dYdX Trading Inc.",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "@dydxprotocol/v4-client-js"
        },
        {
          "registry": "pypi",
          "name": "dydx-v4-client"
        }
      ],
      "auth": "mixed",
      "authNotes": "Indexer reads need no credential. Orders, cancels and transfers are chain messages signed with the account's key (a mnemonic or private key in the clients). Permissioned keys let an owner add an authenticator that lets another key act within limits, composed from SignatureVerification, MessageFilter (for example only /dydxprotocol.clob.MsgPlaceOrder), SubaccountFilter and ClobPairIdFilter under AllOf or AnyOf, and removed with remove_authenticator. The dydx.trade interface generates an API wallet with default permission to trade all cross-margin pairs and shows its private key once (https://docs.dydx.xyz/concepts/trading/authenticators, checked 2026-11-03).",
      "pricing": "usage",
      "pricingNotes": "The indexer and clients have no charge. Trading fees at the lowest tier (under $1 million of 30-day volume) are 5.0 bps taker and 1.0 bps maker, set by governance, uniform across markets, with gas on each transaction; fees flow to validators and stakers (https://docs.dydx.xyz/concepts/trading/rewards, checked 2026-11-03).",
      "priceSummary": "0.05% fee",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs or clients (checked 2026-11-03). Accounts are funded with USDC through Noble or an onboarding partner.",
        "endpoints": []
      },
      "toolCount": 0,
      "popularity": {
        "githubStars": 119,
        "npmWeekly": 86394,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://docs.dydx.xyz/",
      "llmsTxt": "https://docs.dydx.xyz/llms.txt",
      "capabilities": [
        "exchange.derivatives",
        "exchange.market-data",
        "exchange.balances",
        "exchange.transfers",
        "exchange.staking",
        "market.crypto",
        "wallet.onchain"
      ],
      "tags": [
        "official",
        "hosted",
        "open-source",
        "llms-txt",
        "typescript",
        "python",
        "rust",
        "sandbox",
        "usage-priced",
        "status-page",
        "bug-bounty",
        "no-key",
        "rest"
      ],
      "lastRelease": "2026-10-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 69.5,
        "grade": "B",
        "agentReady": false,
        "rank": 222,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 3,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 66,
          "maintenance": 83,
          "payments": 60,
          "reliability": 83,
          "schema": 58,
          "security": 78,
          "transparency": 50
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "dYdX gives an agent keyless indexer reads, permissioned keys limited by message type, subaccount and market, a Statuspage with a clean 90 days, published fees and a testnet with a faucet. There is no official MCP server or OpenAPI file, orders are chain transactions signed by the clients, and no one entity operates the hosted endpoints.",
        "bestFor": "An agent trading perpetuals from its own Cosmos wallet or through a permissioned key on an owner's account, outside the US, Canada and UK.",
        "strengths": [
          "Permissioned keys limit a delegated key to chosen message types, subaccounts and markets, exclude withdrawals and transfers, and are removed with `remove_authenticator`",
          "status.dydx.trade lists Indexer, Chain, Order Gateway and Client Libraries components, with only maintenance windows and one partner deposit delay in the last 90 days",
          "Fees public at 5.0 bps taker and 1.0 bps maker at the lowest tier, with rate limits and block limits stated with numbers",
          "Official TypeScript, Python and Rust clients with CI and trusted publishing, and a testnet with a faucet",
          "A Cantina bug bounty up to $1,000,000 sponsored by dYdX Trading Inc. covering the protocol, indexer, web client and client SDKs"
        ],
        "weaknesses": [
          "No official MCP server; the one registry entry is a third party's analytics server",
          "No OpenAPI file for the indexer; error responses are described by HTTP status only, and chain rejections surface as transaction results",
          "No 429 handling or Retry-After documented for the indexer; permissioned keys cannot cap position or order size",
          "The hosted indexer and front end are run by unnamed third parties; dYdX Trading Inc. says it runs none of the components",
          "Restricted to persons outside the United States, Canada and the United Kingdom, with geo-blocking left to each integrator"
        ],
        "agentNotes": [
          "Ask the account owner for an authenticator limited to `/dydxprotocol.clob.MsgPlaceOrder` and `MsgCancelOrder` on one subaccount, and keep its private key out of prompts",
          "Set a unique 32-bit `clientId` on every order and look it up on `/v4/orders` after a timeout; short-term orders expire with `goodTilBlock` (at most 20 blocks ahead)",
          "Stay under 2 stateful orders a block and 20 per 100 blocks; failed placements count, so use short-term orders for active trading",
          "Enable permessage-deflate on the indexer WebSocket; since 26 October 2026 connections without compression may be refused with 426",
          "Check `/v4/geo` and the compliance screen before trading for a person, since the terms exclude the United States, Canada and the United Kingdom"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 69.5
          }
        ],
        "editorialScores": {
          "ergonomics": 66,
          "maintenance": 83,
          "payments": 60,
          "reliability": 83,
          "schema": 58,
          "security": 78,
          "transparency": 50
        },
        "provenanceScore": 50,
        "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 @dydxprotocol/v4-client-js",
        "http": "curl https://indexer.dydx.trade/v4/orderbooks/perpetualMarket/ETH-USD"
      },
      "letme": {
        "capability": "https://letme.dev/exchange.derivatives",
        "tool": "https://letme.dev/dydx"
      },
      "area": "payments",
      "unitPrices": [
        {
          "item": "Taker fee, tier 1",
          "unit": "pct",
          "usd": 0.05,
          "note": "5.0 bps of notional; maker 1.0 bps"
        }
      ],
      "provenance": {
        "legalEntity": "dYdX Trading Inc.",
        "domain": "dydx.xyz",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "https://dydx.exchange/v4-terms",
        "privacy": "https://www.dydx.xyz/legal/privacy-policy",
        "statusPage": "https://status.dydx.trade",
        "changelog": "",
        "securityTxt": "unknown",
        "checked": "2026-11-03",
        "notes": [
          "dYdX Trading Inc. is the entity in the v4 Terms of Use (last updated 12 March 2026), the clients' licence and the Cantina bug bounty. dydx.xyz's terms and privacy policy (6 June 2025) name dYdX International Ltd, Cayman Islands, and its footer reads dYdX International Ltd.",
          "The indexer at indexer.dydx.trade is not on dydx.xyz and the docs say dYdX Trading Inc. runs none of the hosted components, so the endpoint is recorded as off the vendor's domain.",
          "RDAP for dydx.trade answered 404 at the Identity Digital and rdap.org services, so the domain age is unchecked; the vendor domain dydx.xyz was not queried.",
          "status.dydx.trade is an Atlassian Statuspage with five components and an RSS history; its robots.txt disallows /api/ and /embed/, so the history was read from /history.rss.",
          "https://dydx.trade/.well-known/security.txt answered the app's HTML page, so security.txt is unknown. No API changelog; protocol upgrades appear as status maintenance entries."
        ],
        "score": 50
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/dydx.json",
      "live": {
        "slug": "dydx",
        "vendorStatus": {
          "page": "https://status.dydx.trade",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-04T21:25:45.353365472Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "dydxprotocol/v4-clients",
            "version": "v4-client-js@3.4.0",
            "released": "2025-12-17",
            "seenAt": "2026-11-04T20:13:31.787772276Z"
          },
          {
            "registry": "npm",
            "name": "@dydxprotocol/v4-client-js",
            "version": "3.6.0",
            "seenAt": "2026-11-04T20:13:31.051904709Z"
          },
          {
            "registry": "pypi",
            "name": "dydx-v4-client",
            "version": "1.1.6",
            "released": "2026-02-12",
            "seenAt": "2026-11-04T20:13:31.571685567Z"
          }
        ],
        "githubStars": 119,
        "npmWeekly": 75463,
        "pypiWeekly": 707,
        "securityTxt": {
          "url": "https://dydx.xyz/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:54:03.349495473Z"
        },
        "updatedAt": "2026-11-04T21:25:45.353365472Z"
      }
    },
    "answer": "dYdX scores 69.5 (B) on agent readiness against Upbit Open API's 54.7 (C), and leads in 3 of 7 scored categories. Upbit Open API leads on schema \u0026 documentation.",
    "b": {
      "slug": "upbit",
      "name": "Upbit Open API",
      "vendor": "Dunamu Inc.",
      "vendorUrl": "https://docs.upbit.com",
      "kind": "http-api",
      "category": "crypto-exchanges",
      "summary": "Upbit, the Korean exchange run by Dunamu, has a REST and WebSocket Open API for KRW, BTC and USDT market data, orders, balances, deposits and withdrawals, with official SDKs, a CLI and agent skills but no MCP server.",
      "url": "https://www.anchorterminal.com/tools/upbit",
      "markdownUrl": "https://www.anchorterminal.com/tools/upbit.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/upbit.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/upbit.json",
      "dns": "upbit.grade.anchorterminal.com",
      "repo": "https://github.com/upbit-official",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "@upbit-official/upbit-cli"
        },
        {
          "registry": "pypi",
          "name": "upbit-sdk"
        }
      ],
      "auth": "api-key",
      "authNotes": "Access and secret keys issued on the PC web site under My Page \u003e Open API Management after identity verification and two-factor authentication. At issuance the person picks the functions the key may use and must register at least one public IPv4 address, since the allow-list is mandatory. Each request carries a JWT signed with HMAC SHA512 over the access key, a fresh nonce and a SHA512 hash of the query, as a Bearer token. A key with withdrawal permission gets a withdrawal safe-lock by default that is lifted only in the mobile app. Up to 10 keys on the main pocket and 5 per sub-pocket; expired keys answer expired_access_key (https://docs.upbit.com/kr/docs/api-key.md, checked 2026-11-03).",
      "pricing": "usage",
      "pricingNotes": "Trading fees per fill. The fee schedule is on upbit.com, whose robots.txt disallows every path for our crawler, so no rate is recorded. Public quotation endpoints need no key and no account (https://upbit.com/robots.txt, checked 2026-11-03).",
      "priceSummary": "Pay per use",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, llms.txt, the SDK licence or the CLI docs (checked 2026-11-03). Fees are taken from each fill.",
        "endpoints": []
      },
      "toolCount": 0,
      "popularity": {
        "githubStars": 91,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://docs.upbit.com/kr/reference/api-overview",
      "llmsTxt": "https://docs.upbit.com/llms.txt",
      "capabilities": [
        "exchange.market-data",
        "exchange.spot-trading",
        "exchange.balances",
        "exchange.transfers",
        "market.crypto"
      ],
      "tags": [
        "hosted",
        "api-key",
        "closed-source",
        "usage-priced",
        "cli",
        "agent-skills",
        "llms-txt",
        "python",
        "typescript",
        "go",
        "no-status-page"
      ],
      "lastRelease": "2026-10-20",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 54.7,
        "grade": "C",
        "agentReady": false,
        "rank": 802,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 14,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 70,
          "maintenance": 83,
          "payments": 15,
          "reliability": 42,
          "schema": 66,
          "security": 59,
          "transparency": 54
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "Upbit's Open API has a mandatory IP allow-list, scoped keys with a default withdrawal lock, per-group rate limits with 429 and 418 signalling, an order-test endpoint, official SDKs, a CLI and agent skills with a CONFIRM gate. There is no MCP server, sandbox or status page, and the fees and terms sit on a host our crawler may not read.",
        "bestFor": "KRW-market trading for agents acting for a verified Korean account, with first-party SDKs, a CLI and skills but no MCP.",
        "strengths": [
          "Keys need a registered public IP, carry only the chosen functions and get a withdrawal safe-lock by default that only the mobile app lifts",
          "Rate limits published per group with numbers, a Remaining-Req header on every response, 429 then 418 with a stated block length",
          "POST /v1/orders/test checks an order and the pair's state at no cost, and the skills run it before a live order",
          "Official Python, TypeScript and Go SDKs at v1.1.0 (20 October 2026), a CLI with JSON output and agent skills that require a typed CONFIRM before any write",
          "Notices carry effective dates, such as the path-format change of 16 November 2026"
        ],
        "weaknesses": [
          "No MCP server; the agent route is the CLI through skills, which need a terminal",
          "No sandbox or testnet beyond the order-test endpoint, and no status page or SLA",
          "Keys can only be issued on the PC web site after Korean identity verification and 2FA, and the exchange serves the Korean market",
          "The fee schedule, user terms and Open API terms are on upbit.com, which disallows every crawler path, so none is recorded first-hand",
          "The SDK licence page says the SDK material is not open source while the GitHub repositories carry Apache-2.0"
        ],
        "agentNotes": [
          "Ask the person for a key with only the functions the task needs and your server's public IPv4 address registered; a private or unregistered IP is refused",
          "Sign every request with a fresh JWT (HS512, new nonce, SHA512 query hash) and branch on error.name, not error.message",
          "Run POST /v1/orders/test before a live order; it costs nothing and shares the 8-a-second order-test group",
          "Read Remaining-Req and keep orders under 12 a second per pocket; on 429 wait for the next second and on 418 wait out the stated block",
          "Leave the withdrawal safe-lock on unless the person lifts it in the app, and send paths with single slashes and no trailing slash before 16 November 2026"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 54.7
          }
        ],
        "editorialScores": {
          "ergonomics": 70,
          "maintenance": 83,
          "payments": 15,
          "reliability": 42,
          "schema": 66,
          "security": 59,
          "transparency": 42
        },
        "provenanceScore": 66,
        "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 -g @upbit-official/upbit-cli",
        "http": "curl 'https://api.upbit.com/v1/ticker?markets=KRW-BTC'"
      },
      "letme": {
        "capability": "https://letme.dev/exchange.market-data",
        "tool": "https://letme.dev/upbit"
      },
      "area": "payments",
      "provenance": {
        "legalEntity": "Dunamu Inc.",
        "domain": "upbit.com",
        "domainRegistered": "2004-01-10",
        "endpointOnVendorDomain": true,
        "terms": "",
        "privacy": "https://docs.upbit.com/kr/page/privacy_policy_v1_5.md",
        "statusPage": "",
        "changelog": "https://docs.upbit.com/kr/changelog",
        "securityTxt": "unknown",
        "checked": "2026-11-03",
        "notes": [
          "Dunamu Inc. is named as the licensor in the Upbit Developer SDK License v1.0 and as the company in the developer centre's privacy policy V1.5 (from 18 May 2026).",
          "upbit.com/robots.txt disallows every path for User-agent * (a second group adds /terms_and_policy and others), allowing only Googlebot, MSNBot, Yeti and Daumoa; sg.upbit.com and www.dunamu.com do the same. The user terms, the Open API terms, the fee schedule and security.txt on those hosts were therefore not fetched; the terms URL is left empty.",
          "docs.upbit.com/robots.txt allows everything but edit, login and api-next paths and points to llms.txt, with Content-Signal ai-train=yes, search=yes, ai-input=yes.",
          "RDAP gives upbit.com a registration date of 10 January 2004.",
          "No status page found; the API has a service-status (wallet status) endpoint and an announcements WebSocket stream."
        ],
        "score": 66
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/upbit.json",
      "live": {
        "slug": "upbit",
        "versions": [
          {
            "registry": "npm",
            "name": "@upbit-official/upbit-cli",
            "version": "1.0.0",
            "seenAt": "2026-11-04T21:03:15.347083898Z"
          },
          {
            "registry": "pypi",
            "name": "upbit-sdk",
            "version": "1.1.0",
            "released": "2026-10-20",
            "seenAt": "2026-11-04T21:03:16.288654002Z"
          }
        ],
        "npmWeekly": 71,
        "pypiWeekly": 122,
        "securityTxt": {
          "url": "https://upbit.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:53:27.560288922Z"
        },
        "updatedAt": "2026-11-04T21:03:16.288654002Z"
      }
    },
    "edges": [
      {
        "by": 45,
        "category": "payments",
        "leads": "dydx",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No machine payment protocol (0). Fees public per tier without login (20). Testnet with a faucet and no card anywhere (20). No signup; an agent with a funded wallet trades, subject to the geographic terms (20). Total 60.",
          "b": "No machine payment protocol (0). The fee schedule is on upbit.com, which disallows every crawler path, so no price is recorded (0 of 20, unchecked). Public quotation endpoints need no key, card or account; trading needs a verified Korean account. Judgement call (15 of 20). A person must sign up, pass identity checks and issue keys on the PC web site (0). 0 + 0 + 15 + 0 = 15."
        },
        "scores": {
          "a": 60,
          "b": 15
        }
      },
      {
        "by": 41,
        "category": "reliability",
        "leads": "dydx",
        "name": "Reliability",
        "reasons": {
          "a": "Read with the hosted lines on the indexer API and the chain endpoints the clients submit to. status.dydx.trade is an Atlassian Statuspage with Frontends, dYdX Chain, Indexer, Order Gateway and Client Libraries components and an RSS history (20). From 1 August to 3 November 2026 the feed has eight items, seven scheduled maintenance windows of 29 minutes to 2 hours (indexer on 9 September, 8 and 15 October, protocol v9.7 on 11 September and v9.8.0 on 12 October, WebSocket compression on 26 and 28 October) and one degraded instant-deposit path through an onboarding partner from 24 to 29 September, outside the trading API. Clean or trivial (30). Rate limits documented with numbers for the indexer, the block limits and the public nodes (15). No 429 shape or Retry-After for the indexer; short-term orders expire by `goodTilBlock` and client IDs let an agent find an order after a timeout (8 of 15). No SLA (0). Mainnet generally available; the Order Entry Gateway is marked testnet-only (10). 20 + 30 + 15 + 8 + 0 + 10 = 83.",
          "b": "Read with the hosted lines. No status page found on docs.upbit.com or in llms.txt; a wallet-status endpoint and an announcements stream stand in (0). No readable incident history (5). Rate limits documented with numbers per group, per IP and per pocket, updated 7 October 2026 (15). 429 then 418 with a stated block length and a Remaining-Req header, an order-test endpoint and a self-match-prevention default; an order identifier for safe retries was not checked (12 of 15). No SLA found (0). Generally available (10). 0 + 5 + 15 + 12 + 0 + 10 = 42."
        },
        "scores": {
          "a": 83,
          "b": 42
        }
      },
      {
        "by": 19,
        "category": "security",
        "leads": "dydx",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Orders are signed by the account key or by a permissioned key the owner adds as an authenticator, limited by message type, subaccount and market with AllOf or AnyOf, and revoked by `remove_authenticator`; no shared secret and nothing in a URL (28 of 30). A key can be confined to placing and cancelling orders on one subaccount with withdrawals and transfers excluded, though not to a position or order size, and the interface's default API wallet trades all cross-margin pairs (16 of 20). The API returns no untrusted content (10). Every action is a chain transaction and the indexer lists fills, orders and transfers per subaccount, and authenticators can be listed; no per-key log (10 of 15). A Cantina bug bounty up to $1,000,000 sponsored by dYdX Trading Inc. over the protocol, indexer, web client and SDKs, an Informal Systems audit; no security.txt and no certification (14 of 20). Total 78.",
          "b": "Keys limited to chosen functions, a mandatory public IPv4 allow-list, a JWT per request with a fresh nonce, keys listed with expiry through the API, and a withdrawal safe-lock on by default (27 of 30). Read-only keys, the default withdrawal lock lifted only in the app, and skills that require a typed CONFIRM before writes (17 of 20). The API returns exchange data and announcements, no third-party content (10 of 15). An API key list endpoint; no per-call log for the operator (5 of 15). No disclosure policy, bug bounty or certification found; security.txt on upbit.com could not be fetched under its robots.txt (0 of 20). 27 + 17 + 10 + 5 + 0 = 59."
        },
        "scores": {
          "a": 78,
          "b": 59
        }
      },
      {
        "by": 8,
        "category": "schema",
        "leads": "upbit",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No OpenAPI file found for the indexer; the docs publish a types reference of about 200 pages (OrderSide, TimeInForce, OrderStatus and the rest) and the chain's protobuf messages are in the clients (8 of 25). llms.txt and Markdown docs (10). Endpoint pages describe each call and the guides say when to use short-term against long-term orders and the indexer against the node, but descriptions are short (12 of 20). Enums and types on every field in the reference, with pagination and cursor parameters typed (11 of 15). Examples in Python, TypeScript and Rust for each step; errors are described by HTTP status (400 malformed, 404 not found) with no code list (9 of 15). A /v4 path, protocol releases dated on the status page, deprecated rate-limit fields marked, but no API changelog (8 of 15). Total 58.",
          "b": "No OpenAPI found; the reference is a readme.io site with a Markdown twin of every page (5 of 25). llms.txt on docs.upbit.com and a kr/llms.txt index (10). Each reference page states what the endpoint does, its group and its errors, with warnings such as market_offline after maintenance (14 of 20). Typed parameters with enums for order type, side and time in force and required flags (11 of 15). Recipes in Python, Java and Node.js and an error format of error.name and error.message with HTTP statuses (13 of 15). Feature versions in page histories (v1.6.1) and dated notices with effective dates, no single API version (13 of 15). 5 + 10 + 14 + 11 + 13 + 13 = 66."
        },
        "scores": {
          "a": 58,
          "b": 66
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "dYdX Trading Inc.",
        "b": "Dunamu Inc.",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "The clients are AGPL-3.0 with a use condition tied to the v4 Terms of Use; the chain software (dydxprotocol/v4-chain) carries a custom licence GitHub cannot classify. The hosted indexer at indexer.dydx.trade and the front end are run by third parties, not dYdX Trading Inc.",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "0",
        "b": "0",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-29",
        "b": "2026-10-20",
        "name": "Last release"
      },
      {
        "a": "2026-03-12",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "2025-06-06",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not read yet",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not read yet",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "119 stars, 86k npm/wk",
        "b": "91 stars",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "dYdX scores 69.5 (B) on agent readiness against Upbit Open API's 54.7 (C), and leads in 3 of 7 scored categories. Upbit Open API leads on schema \u0026 documentation.",
        "question": "Which is better for AI agents, dYdX or Upbit Open API?"
      },
      {
        "answer": "dYdX takes an API key or an OAuth sign-in. Upbit Open API needs an API key.",
        "question": "Do dYdX and Upbit Open API need an API key?"
      },
      {
        "answer": "No hosted endpoint is listed for dYdX. No hosted endpoint is listed for Upbit Open API.",
        "question": "Can an agent call dYdX and Upbit Open API without installing anything?"
      },
      {
        "answer": "dYdX is open source (The clients are AGPL-3.0 with a use condition tied to the v4 Terms of Use; the chain software (dydxprotocol/v4-chain) carries a custom licence GitHub cannot classify. The hosted indexer at indexer.dydx.trade and the front end are run by third parties, not dYdX Trading Inc.). No open-source release is listed for Upbit Open API.",
        "question": "Are dYdX and Upbit Open API open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 83 against 42",
          "Security \u0026 auth, 78 against 59",
          "Payments \u0026 pricing, 60 against 15"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "An agent trading perpetuals from its own Cosmos wallet or through a permissioned key on an owner's account, outside the US, Canada and UK.",
        "slug": "dydx",
        "watchFor": "No official MCP server; the one registry entry is a third party's analytics server"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 66 against 58"
        ],
        "also": null,
        "goodFor": "KRW-market trading for agents acting for a verified Korean account, with first-party SDKs, a CLI and skills but no MCP.",
        "slug": "upbit",
        "watchFor": "No MCP server; the agent route is the CLI through skills, which need a terminal"
      }
    ],
    "history": null,
    "job": {
      "capability": "exchange.market-data",
      "name": "Exchange market data"
    },
    "others": [
      {
        "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-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-dydx.json",
        "title": "Bitget vs dYdX",
        "url": "https://www.anchorterminal.com/compare/bitget-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitget-vs-upbit.json",
        "title": "Bitget vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/bitget-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bithumb-vs-dydx.json",
        "title": "Bithumb Open API vs dYdX",
        "url": "https://www.anchorterminal.com/compare/bithumb-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bithumb-vs-upbit.json",
        "title": "Bithumb Open API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/bithumb-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitstamp-vs-dydx.json",
        "title": "Bitstamp API vs dYdX",
        "url": "https://www.anchorterminal.com/compare/bitstamp-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitstamp-vs-upbit.json",
        "title": "Bitstamp API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/bitstamp-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bybit-vs-dydx.json",
        "title": "Bybit vs dYdX",
        "url": "https://www.anchorterminal.com/compare/bybit-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bybit-vs-upbit.json",
        "title": "Bybit vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/bybit-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crypto-com-exchange-vs-dydx.json",
        "title": "Crypto.com Exchange API vs dYdX",
        "url": "https://www.anchorterminal.com/compare/crypto-com-exchange-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crypto-com-exchange-vs-upbit.json",
        "title": "Crypto.com Exchange API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/crypto-com-exchange-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deribit-vs-upbit.json",
        "title": "Deribit vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/deribit-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-uniswap.json",
        "title": "dYdX vs Uniswap Trading API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-uniswap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gate-io-vs-upbit.json",
        "title": "Gate vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/gate-io-vs-upbit"
      },
      {
        "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/htx-vs-upbit.json",
        "title": "HTX trading API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/htx-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hyperliquid-vs-upbit.json",
        "title": "Hyperliquid vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/hyperliquid-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kucoin-vs-upbit.json",
        "title": "KuCoin vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/kucoin-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mexc-vs-upbit.json",
        "title": "MEXC API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/mexc-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/binance-vs-upbit.json",
        "title": "Binance API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/binance-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-upbit.json",
        "title": "Coinbase Advanced Trade API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/coinbase-mcp-vs-upbit.json",
        "title": "Coinbase MCP server (Coinbase for Agents) vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/coinbase-mcp-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kraken-vs-upbit.json",
        "title": "Kraken API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/kraken-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/okx-vs-upbit.json",
        "title": "OKX API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/okx-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/uniswap-vs-upbit.json",
        "title": "Uniswap Trading API vs Upbit Open API",
        "url": "https://www.anchorterminal.com/compare/uniswap-vs-upbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/binance-vs-dydx.json",
        "title": "Binance API vs dYdX",
        "url": "https://www.anchorterminal.com/compare/binance-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-dydx.json",
        "title": "Coinbase Advanced Trade API vs dYdX",
        "url": "https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deribit-vs-dydx.json",
        "title": "Deribit vs dYdX",
        "url": "https://www.anchorterminal.com/compare/deribit-vs-dydx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-gate-io.json",
        "title": "dYdX vs Gate",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-gate-io"
      },
      {
        "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"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-htx.json",
        "title": "dYdX vs HTX trading API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-htx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-hyperliquid.json",
        "title": "dYdX vs Hyperliquid",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-hyperliquid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-kraken.json",
        "title": "dYdX vs Kraken API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-kraken"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-kucoin.json",
        "title": "dYdX vs KuCoin",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-kucoin"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-mexc.json",
        "title": "dYdX vs MEXC API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-mexc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dydx-vs-okx.json",
        "title": "dYdX vs OKX API",
        "url": "https://www.anchorterminal.com/compare/dydx-vs-okx"
      },
      {
        "json": "https://www.anchorterminal.com/compare/coinbase-mcp-vs-dydx.json",
        "title": "Coinbase MCP server (Coinbase for Agents) vs dYdX",
        "url": "https://www.anchorterminal.com/compare/coinbase-mcp-vs-dydx"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 41,
        "dydx": 83,
        "edge": "dydx",
        "key": "reliability",
        "name": "Reliability",
        "upbit": 42,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "dydx": 58,
        "edge": "upbit",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "upbit": 66,
        "weight": 13
      },
      {
        "by": 4,
        "dydx": 66,
        "edge": "upbit",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "upbit": 70,
        "weight": 13
      },
      {
        "by": 19,
        "dydx": 78,
        "edge": "dydx",
        "key": "security",
        "name": "Security \u0026 auth",
        "upbit": 59,
        "weight": 14
      },
      {
        "by": 45,
        "dydx": 60,
        "edge": "dydx",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "upbit": 15,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 0,
        "dydx": 83,
        "edge": "",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "upbit": 83,
        "weight": 7
      },
      {
        "by": 4,
        "dydx": 50,
        "edge": "upbit",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "upbit": 54,
        "weight": 7
      }
    ],
    "summary": "dYdX scores 69.5 (B) on agent readiness against Upbit Open API's 54.7 (C), and leads in 3 of 7 scored categories. Upbit Open API leads on schema \u0026 documentation. Both do exchange market data.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "dydx": "dYdX gives an agent keyless indexer reads, permissioned keys limited by message type, subaccount and market, a Statuspage with a clean 90 days, published fees and a testnet with a faucet. There is no official MCP server or OpenAPI file, orders are chain transactions signed by the clients, and no one entity operates the hosted endpoints.",
      "upbit": "Upbit's Open API has a mandatory IP allow-list, scoped keys with a default withdrawal lock, per-group rate limits with 429 and 418 signalling, an order-test endpoint, official SDKs, a CLI and agent skills with a CONFIRM gate. There is no MCP server, sandbox or status page, and the fees and terms sit on a host our crawler may not read."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/dydx-vs-upbit",
    "json": "https://www.anchorterminal.com/compare/dydx-vs-upbit.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/dydx-vs-upbit.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/dydx-vs-upbit.min.md"
  },
  "markdown": "dYdX scores 69.5 (B) on agent readiness against Upbit Open API's 54.7 (C), and leads in 3 of 7 scored categories. Upbit Open API leads on schema \u0026 documentation. Both do exchange market data.\n\n- dYdX: grade B, 69.5/100, rank #222 of 1349. Markdown https://www.anchorterminal.com/tools/dydx.md · JSON https://www.anchorterminal.com/api/v1/tools/dydx.json\n- Upbit Open API: grade C, 54.7/100, rank #802 of 1349. Markdown https://www.anchorterminal.com/tools/upbit.md · JSON https://www.anchorterminal.com/api/v1/tools/upbit.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### dYdX (B)\n\nGood for: An agent trading perpetuals from its own Cosmos wallet or through a permissioned key on an owner's account, outside the US, Canada and UK.\n\nAhead on:\n- Reliability, 83 against 42\n- Security \u0026 auth, 78 against 59\n- Payments \u0026 pricing, 60 against 15\n\nAlso in its favour:\n- Open source\n\nWatch for: No official MCP server; the one registry entry is a third party's analytics server\n\n### Upbit Open API (C)\n\nGood for: KRW-market trading for agents acting for a verified Korean account, with first-party SDKs, a CLI and skills but no MCP.\n\nAhead on:\n- Schema \u0026 documentation, 66 against 58\n\nWatch for: No MCP server; the agent route is the CLI through skills, which need a terminal\n\n\n## Why the edge\n\n### Payments \u0026 pricing: dYdX +45\n\n- dYdX (60): No machine payment protocol (0). Fees public per tier without login (20). Testnet with a faucet and no card anywhere (20). No signup; an agent with a funded wallet trades, subject to the geographic terms (20). Total 60.\n- Upbit Open API (15): No machine payment protocol (0). The fee schedule is on upbit.com, which disallows every crawler path, so no price is recorded (0 of 20, unchecked). Public quotation endpoints need no key, card or account; trading needs a verified Korean account. Judgement call (15 of 20). A person must sign up, pass identity checks and issue keys on the PC web site (0). 0 + 0 + 15 + 0 = 15.\n\n### Reliability: dYdX +41\n\n- dYdX (83): Read with the hosted lines on the indexer API and the chain endpoints the clients submit to. status.dydx.trade is an Atlassian Statuspage with Frontends, dYdX Chain, Indexer, Order Gateway and Client Libraries components and an RSS history (20). From 1 August to 3 November 2026 the feed has eight items, seven scheduled maintenance windows of 29 minutes to 2 hours (indexer on 9 September, 8 and 15 October, protocol v9.7 on 11 September and v9.8.0 on 12 October, WebSocket compression on 26 and 28 October) and one degraded instant-deposit path through an onboarding partner from 24 to 29 September, outside the trading API. Clean or trivial (30). Rate limits documented with numbers for the indexer, the block limits and the public nodes (15). No 429 shape or Retry-After for the indexer; short-term orders expire by `goodTilBlock` and client IDs let an agent find an order after a timeout (8 of 15). No SLA (0). Mainnet generally available; the Order Entry Gateway is marked testnet-only (10). 20 + 30 + 15 + 8 + 0 + 10 = 83.\n- Upbit Open API (42): Read with the hosted lines. No status page found on docs.upbit.com or in llms.txt; a wallet-status endpoint and an announcements stream stand in (0). No readable incident history (5). Rate limits documented with numbers per group, per IP and per pocket, updated 7 October 2026 (15). 429 then 418 with a stated block length and a Remaining-Req header, an order-test endpoint and a self-match-prevention default; an order identifier for safe retries was not checked (12 of 15). No SLA found (0). Generally available (10). 0 + 5 + 15 + 12 + 0 + 10 = 42.\n\n### Security \u0026 auth: dYdX +19\n\n- dYdX (78): Orders are signed by the account key or by a permissioned key the owner adds as an authenticator, limited by message type, subaccount and market with AllOf or AnyOf, and revoked by `remove_authenticator`; no shared secret and nothing in a URL (28 of 30). A key can be confined to placing and cancelling orders on one subaccount with withdrawals and transfers excluded, though not to a position or order size, and the interface's default API wallet trades all cross-margin pairs (16 of 20). The API returns no untrusted content (10). Every action is a chain transaction and the indexer lists fills, orders and transfers per subaccount, and authenticators can be listed; no per-key log (10 of 15). A Cantina bug bounty up to $1,000,000 sponsored by dYdX Trading Inc. over the protocol, indexer, web client and SDKs, an Informal Systems audit; no security.txt and no certification (14 of 20). Total 78.\n- Upbit Open API (59): Keys limited to chosen functions, a mandatory public IPv4 allow-list, a JWT per request with a fresh nonce, keys listed with expiry through the API, and a withdrawal safe-lock on by default (27 of 30). Read-only keys, the default withdrawal lock lifted only in the app, and skills that require a typed CONFIRM before writes (17 of 20). The API returns exchange data and announcements, no third-party content (10 of 15). An API key list endpoint; no per-call log for the operator (5 of 15). No disclosure policy, bug bounty or certification found; security.txt on upbit.com could not be fetched under its robots.txt (0 of 20). 27 + 17 + 10 + 5 + 0 = 59.\n\n### Schema \u0026 documentation: Upbit Open API +8\n\n- dYdX (58): No OpenAPI file found for the indexer; the docs publish a types reference of about 200 pages (OrderSide, TimeInForce, OrderStatus and the rest) and the chain's protobuf messages are in the clients (8 of 25). llms.txt and Markdown docs (10). Endpoint pages describe each call and the guides say when to use short-term against long-term orders and the indexer against the node, but descriptions are short (12 of 20). Enums and types on every field in the reference, with pagination and cursor parameters typed (11 of 15). Examples in Python, TypeScript and Rust for each step; errors are described by HTTP status (400 malformed, 404 not found) with no code list (9 of 15). A /v4 path, protocol releases dated on the status page, deprecated rate-limit fields marked, but no API changelog (8 of 15). Total 58.\n- Upbit Open API (66): No OpenAPI found; the reference is a readme.io site with a Markdown twin of every page (5 of 25). llms.txt on docs.upbit.com and a kr/llms.txt index (10). Each reference page states what the endpoint does, its group and its errors, with warnings such as market_offline after maintenance (14 of 20). Typed parameters with enums for order type, side and time in force and required flags (11 of 15). Recipes in Python, Java and Node.js and an error format of error.name and error.message with HTTP statuses (13 of 15). Feature versions in page histories (v1.6.1) and dated notices with effective dates, no single API version (13 of 15). 5 + 10 + 14 + 11 + 13 + 13 = 66.\n\n## Score by category\n\n| Category | Weight | dYdX | Upbit Open API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 83 | 42 | dYdX +41 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 58 | 66 | Upbit Open API +8 |\n| Agent ergonomics | 13% (16.2 this run) | 66 | 70 | Upbit Open API +4 |\n| Security \u0026 auth | 14% (17.5 this run) | 78 | 59 | dYdX +19 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 15 | dYdX +45 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 83 | 83 | even |\n| Transparency \u0026 trust | 7% (8.8 this run) | 50 | 54 | Upbit Open API +4 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **69.5 · B** | **54.7 · C** | |\n\n## Facts side by side\n\n| Fact | dYdX | Upbit Open API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | dYdX Trading Inc. | Dunamu Inc. |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  |  |\n| Auth | OAuth or key | API key |\n| Pricing | Pay per use | Pay per use |\n| x402 | no | no |\n| Licence | The clients are AGPL-3.0 with a use condition tied to the v4 Terms of Use; the chain software (dydxprotocol/v4-chain) carries a custom licence GitHub cannot classify. The hosted indexer at indexer.dydx.trade and the front end are run by third parties, not dYdX Trading Inc. | none |\n| Tools exposed | 0 | 0 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-29 | 2026-10-20 |\n| Terms last updated | 2026-03-12 | no document linked |\n| Privacy policy last updated | 2025-06-06 | no date given |\n| Customer content may train models | not found in the text | not read yet |\n| Terms restrict automated access | not found in the text | not read yet |\n| Terms restrict benchmarking | not found in the text | not read yet |\n| Terms or service can change without notice | yes | not read yet |\n| Arbitration or class-action waiver | yes | not read yet |\n| Popularity | 119 stars, 86k npm/wk | 91 stars |\n\n## Verdicts\n\n**dYdX.** dYdX gives an agent keyless indexer reads, permissioned keys limited by message type, subaccount and market, a Statuspage with a clean 90 days, published fees and a testnet with a faucet. There is no official MCP server or OpenAPI file, orders are chain transactions signed by the clients, and no one entity operates the hosted endpoints.\n\n**Upbit Open API.** Upbit's Open API has a mandatory IP allow-list, scoped keys with a default withdrawal lock, per-group rate limits with 429 and 418 signalling, an order-test endpoint, official SDKs, a CLI and agent skills with a CONFIRM gate. There is no MCP server, sandbox or status page, and the fees and terms sit on a host our crawler may not read.\n\n## Before you call either\n\n### dYdX\n\n1. Ask the account owner for an authenticator limited to `/dydxprotocol.clob.MsgPlaceOrder` and `MsgCancelOrder` on one subaccount, and keep its private key out of prompts\n2. Set a unique 32-bit `clientId` on every order and look it up on `/v4/orders` after a timeout; short-term orders expire with `goodTilBlock` (at most 20 blocks ahead)\n3. Stay under 2 stateful orders a block and 20 per 100 blocks; failed placements count, so use short-term orders for active trading\n4. Enable permessage-deflate on the indexer WebSocket; since 26 October 2026 connections without compression may be refused with 426\n5. Check `/v4/geo` and the compliance screen before trading for a person, since the terms exclude the United States, Canada and the United Kingdom\n\n### Upbit Open API\n\n1. Ask the person for a key with only the functions the task needs and your server's public IPv4 address registered; a private or unregistered IP is refused\n2. Sign every request with a fresh JWT (HS512, new nonce, SHA512 query hash) and branch on error.name, not error.message\n3. Run POST /v1/orders/test before a live order; it costs nothing and shares the 8-a-second order-test group\n4. Read Remaining-Req and keep orders under 12 a second per pocket; on 429 wait for the next second and on 418 wait out the stated block\n5. Leave the withdrawal safe-lock on unless the person lifts it in the app, and send paths with single slashes and no trailing slash before 16 November 2026\n\n## Questions\n\n### Which is better for AI agents, dYdX or Upbit Open API?\n\ndYdX scores 69.5 (B) on agent readiness against Upbit Open API's 54.7 (C), and leads in 3 of 7 scored categories. Upbit Open API leads on schema \u0026 documentation.\n\n### Do dYdX and Upbit Open API need an API key?\n\ndYdX takes an API key or an OAuth sign-in. Upbit Open API needs an API key.\n\n### Can an agent call dYdX and Upbit Open API without installing anything?\n\nNo hosted endpoint is listed for dYdX. No hosted endpoint is listed for Upbit Open API.\n\n### Are dYdX and Upbit Open API open source?\n\ndYdX is open source (The clients are AGPL-3.0 with a use condition tied to the v4 Terms of Use; the chain software (dydxprotocol/v4-chain) carries a custom licence GitHub cannot classify. The hosted indexer at indexer.dydx.trade and the front end are run by third parties, not dYdX Trading Inc.). No open-source release is listed for Upbit Open API.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/dydx-vs-upbit.json, and with the fewest tokens: https://www.anchorterminal.com/compare/dydx-vs-upbit.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"dydx\", \"b\": \"upbit\"}`. From a terminal: `anchor compare dydx upbit`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/dydx.json and https://www.anchorterminal.com/api/v1/tools/upbit.json\n\n## Other comparisons with dYdX or Upbit Open API\n\n- [Bitfinex API vs dYdX](https://www.anchorterminal.com/compare/bitfinex-vs-dydx.md)\n- [Bitfinex API vs Upbit Open API](https://www.anchorterminal.com/compare/bitfinex-vs-upbit.md)\n- [Bitget vs dYdX](https://www.anchorterminal.com/compare/bitget-vs-dydx.md)\n- [Bitget vs Upbit Open API](https://www.anchorterminal.com/compare/bitget-vs-upbit.md)\n- [Bithumb Open API vs dYdX](https://www.anchorterminal.com/compare/bithumb-vs-dydx.md)\n- [Bithumb Open API vs Upbit Open API](https://www.anchorterminal.com/compare/bithumb-vs-upbit.md)\n- [Bitstamp API vs dYdX](https://www.anchorterminal.com/compare/bitstamp-vs-dydx.md)\n- [Bitstamp API vs Upbit Open API](https://www.anchorterminal.com/compare/bitstamp-vs-upbit.md)\n- [Bybit vs dYdX](https://www.anchorterminal.com/compare/bybit-vs-dydx.md)\n- [Bybit vs Upbit Open API](https://www.anchorterminal.com/compare/bybit-vs-upbit.md)\n- [Crypto.com Exchange API vs dYdX](https://www.anchorterminal.com/compare/crypto-com-exchange-vs-dydx.md)\n- [Crypto.com Exchange API vs Upbit Open API](https://www.anchorterminal.com/compare/crypto-com-exchange-vs-upbit.md)\n- [Deribit vs Upbit Open API](https://www.anchorterminal.com/compare/deribit-vs-upbit.md)\n- [dYdX vs Uniswap Trading API](https://www.anchorterminal.com/compare/dydx-vs-uniswap.md)\n- [Gate vs Upbit Open API](https://www.anchorterminal.com/compare/gate-io-vs-upbit.md)\n- [Gemini Exchange API vs Upbit Open API](https://www.anchorterminal.com/compare/gemini-exchange-vs-upbit.md)\n- [HTX trading API vs Upbit Open API](https://www.anchorterminal.com/compare/htx-vs-upbit.md)\n- [Hyperliquid vs Upbit Open API](https://www.anchorterminal.com/compare/hyperliquid-vs-upbit.md)\n- [KuCoin vs Upbit Open API](https://www.anchorterminal.com/compare/kucoin-vs-upbit.md)\n- [MEXC API vs Upbit Open API](https://www.anchorterminal.com/compare/mexc-vs-upbit.md)\n- [Binance API vs Upbit Open API](https://www.anchorterminal.com/compare/binance-vs-upbit.md)\n- [Coinbase Advanced Trade API vs Upbit Open API](https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-upbit.md)\n- [Coinbase MCP server (Coinbase for Agents) vs Upbit Open API](https://www.anchorterminal.com/compare/coinbase-mcp-vs-upbit.md)\n- [Kraken API vs Upbit Open API](https://www.anchorterminal.com/compare/kraken-vs-upbit.md)\n- [OKX API vs Upbit Open API](https://www.anchorterminal.com/compare/okx-vs-upbit.md)\n- [Uniswap Trading API vs Upbit Open API](https://www.anchorterminal.com/compare/uniswap-vs-upbit.md)\n- [Binance API vs dYdX](https://www.anchorterminal.com/compare/binance-vs-dydx.md)\n- [Coinbase Advanced Trade API vs dYdX](https://www.anchorterminal.com/compare/coinbase-advanced-trade-vs-dydx.md)\n- [Deribit vs dYdX](https://www.anchorterminal.com/compare/deribit-vs-dydx.md)\n- [dYdX vs Gate](https://www.anchorterminal.com/compare/dydx-vs-gate-io.md)\n- [dYdX vs Gemini Exchange API](https://www.anchorterminal.com/compare/dydx-vs-gemini-exchange.md)\n- [dYdX vs HTX trading API](https://www.anchorterminal.com/compare/dydx-vs-htx.md)\n- [dYdX vs Hyperliquid](https://www.anchorterminal.com/compare/dydx-vs-hyperliquid.md)\n- [dYdX vs Kraken API](https://www.anchorterminal.com/compare/dydx-vs-kraken.md)\n- [dYdX vs KuCoin](https://www.anchorterminal.com/compare/dydx-vs-kucoin.md)\n- [dYdX vs MEXC API](https://www.anchorterminal.com/compare/dydx-vs-mexc.md)\n- [dYdX vs OKX API](https://www.anchorterminal.com/compare/dydx-vs-okx.md)\n- [Coinbase MCP server (Coinbase for Agents) vs dYdX](https://www.anchorterminal.com/compare/coinbase-mcp-vs-dydx.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": "dYdX vs Upbit Open API",
        "url": ""
      }
    ],
    "description": "dYdX scores 69.5 (B) to Upbit Open's 54.7 (C) for exchange market data. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "dYdX B 69.5",
      "Upbit Open API C 54.7",
      "scores"
    ],
    "h1": "dYdX vs Upbit Open API",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/dydx-vs-upbit",
    "published": "2026-10-01",
    "section": "tools",
    "title": "dYdX vs Upbit Open for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-04",
    "url": "https://www.anchorterminal.com/compare/dydx-vs-upbit"
  },
  "tokens": {
    "markdown": 4250,
    "slim": 2030
  },
  "version": 1
}
