{
  "data": {
    "a": {
      "slug": "medplum",
      "name": "Medplum",
      "vendor": "Orangebot, Inc. (dba Medplum)",
      "vendorUrl": "https://www.medplum.com",
      "kind": "http-api",
      "category": "health-data",
      "summary": "Open-source FHIR R4 server and healthcare developer platform from Orangebot, Inc. (dba Medplum). Agents reach patient records through the hosted FHIR REST API at api.medplum.com, a remote MCP server or a self-hosted copy.",
      "url": "https://www.anchorterminal.com/tools/medplum",
      "markdownUrl": "https://www.anchorterminal.com/tools/medplum.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/medplum.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/medplum.json",
      "repo": "https://github.com/medplum/medplum",
      "license": "Apache 2.0 for the server, SDKs and apps in medplum/medplum. The hosted service at api.medplum.com runs under Medplum's terms of service",
      "transports": [
        "http",
        "streamable-http",
        "sse"
      ],
      "remoteUrl": "https://api.medplum.com/mcp/stream",
      "packages": [
        {
          "registry": "npm",
          "name": "@medplum/core"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 and OpenID Connect. Machine clients use the client credentials grant with a ClientApplication ID and secret created on the Project Admin page, and a POST to https://api.medplum.com/oauth2/token. SMART scopes and AccessPolicy resources limit what each user, bot or client can read or write, including read-only policies. The MCP server uses OAuth with a browser login on first connect. Client assertion, token exchange, on-behalf-of and mTLS are also documented.",
      "pricing": "freemium",
      "pricingNotes": "Hosted plans on medplum.com/pricing (checked 2026-10-14). Free for prototyping, Production $2,000 a month, Premium $6,000 a month, Enterprise by contact. The paid plans include a standard BAA and MSA. Self-hosting the Apache 2.0 server is free. Whether the free plan asks for a card was not established.",
      "priceSummary": "$2000 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the pricing page or the repository (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": 3,
      "popularity": {
        "githubStars": 2738,
        "npmWeekly": 269965,
        "pypiWeekly": null,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://www.medplum.com/docs",
      "llmsTxt": "https://www.medplum.com/llms.txt",
      "registryName": "com.medplum/mcp",
      "capabilities": [
        "health.fhir",
        "health.records"
      ],
      "tags": [
        "hosted",
        "open-source",
        "self-hosted",
        "fhir",
        "mcp",
        "oauth",
        "smart-on-fhir",
        "hipaa",
        "soc2",
        "typescript",
        "llms-txt",
        "status-page"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 68.7,
        "grade": "B",
        "agentReady": false,
        "rank": 216,
        "ranked": true,
        "rankOf": 1076,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 93,
          "payments": 25,
          "reliability": 75,
          "schema": 82,
          "security": 74,
          "transparency": 72
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "negative": -2,
        "negativeNotes": [
          "2026-07-24: GHSA-m44r-7c5h-m6mj, high severity. The external auth callback accepted redirect URIs that only had to start with a registered one, which could leak authorisation codes cross-origin. Patched in @medplum/core 5.1.6 and disclosed on GitHub (https://github.com/medplum/medplum/security/advisories/GHSA-m44r-7c5h-m6mj). With GHSA-ch8p-j6cm-r7w5 (2 June 2026, client secret exposure in self-hosted dynamic registration), both fixed and disclosed in public, so the deduction is small (-2)."
        ],
        "verdict": "Graded on the hosted FHIR API at api.medplum.com. Rate limits, a `RateLimit` header and a 99.99 per cent SLA are published, AccessPolicy resources allow read-only clients, and an official MCP server sits in the registry. Its main tool can delete records with no annotation, the status page could not be read, and the privacy policy dates from 2022.",
        "bestFor": "An agent working inside a digital health company's own FHIR store, reading and writing patients, observations and appointments under a BAA.",
        "strengths": [
          "Apache 2.0 server with releases about weekly, v5.2.3 on 8 October 2026, and a written version policy",
          "Rate limits published per tier, with a `RateLimit` header giving remaining units and seconds to reset",
          "AccessPolicy resources and SMART scopes allow read-only, per-resource or per-element clients",
          "Official MCP server at api.medplum.com/mcp/stream, listed in the MCP registry as com.medplum/mcp, with OAuth",
          "99.99 per cent monthly SLA with service credits stated for the production hosted platform"
        ],
        "weaknesses": [
          "The MCP `fhir-request` tool can delete or overwrite any resource the token allows, with no readOnlyHint or destructiveHint",
          "The privacy policy was last updated on 5 April 2022 and the terms on 11 April 2023",
          "No sub-processor list or retention periods were found",
          "Two high-severity auth advisories were published and patched in 2026",
          "Official SDK in TypeScript only"
        ],
        "agentNotes": [
          "Use a ClientApplication with an AccessPolicy limited to the resources the task needs, and set `readonly` where no writes are needed",
          "Read the `RateLimit` header and wait for the reset time after a 429. Writes cost 100 quota points, searches 20 and reads 1",
          "Create patients with conditional create (`If-None-Exist`) or upsert on an identifier so a retry doesn't make a duplicate",
          "Pass paths to `fhir-request` relative to the FHIR R4 base, with no leading slash or `/fhir/R4` prefix",
          "Use `Prefer: respond-async` for large bundles. Operations inside the background job don't count against the quota"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 68.7
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 93,
          "payments": 25,
          "reliability": 75,
          "schema": 82,
          "security": 74,
          "transparency": 65
        },
        "provenanceScore": 78
      },
      "connect": {
        "install": "npm install @medplum/core",
        "http": "curl -X POST https://api.medplum.com/oauth2/token \\\n  -H \"Content-Type: application/x-www-form-urlencoded\" \\\n  -d \"grant_type=client_credentials\u0026client_id=$MY_CLIENT_ID\u0026client_secret=$MY_CLIENT_SECRET\""
      },
      "letme": {
        "capability": "https://letme.dev/health.fhir",
        "tool": "https://letme.dev/medplum"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Production plan",
          "unit": "month",
          "usd": 2000,
          "note": "Hosted, BAA included, Growth usage tier"
        },
        {
          "item": "Premium plan",
          "unit": "month",
          "usd": 6000,
          "note": "Hosted, adds lab, medication and HL7 integrations"
        }
      ],
      "provenance": {
        "legalEntity": "Orangebot, Inc.",
        "domain": "medplum.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://www.medplum.com/terms",
        "privacy": "https://www.medplum.com/privacy",
        "statusPage": "https://status.medplum.com",
        "changelog": "https://github.com/medplum/medplum/releases",
        "securityTxt": "valid",
        "checked": "2026-10-14",
        "notes": [
          "The pricing and security pages name Orangebot, Inc (dba Medplum).",
          "www.medplum.com/.well-known/security.txt lists security@medplum.com, a PGP key and expires 2027-02-28.",
          "robots.txt on api.medplum.com and status.medplum.com disallows every path for all agents, so the status history and the live OpenAPI document were not read.",
          "The terms of service were last updated 2023-04-11 and the privacy policy 2022-04-05.",
          "The domain registration date was not established."
        ],
        "score": 78
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/medplum.json",
      "live": {
        "slug": "medplum",
        "probe": {
          "target": "https://api.medplum.com/mcp/stream",
          "method": "get",
          "lastAt": "2026-10-14T09:41:57.409301454Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 255,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 256,
          "p95ms24h": 389,
          "samples24h": 17,
          "samples30d": 17,
          "days": [
            {
              "date": "2026-10-14",
              "probes": 17,
              "ok": 17
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.medplum.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-14T08:53:23.189127499Z"
        },
        "updatedAt": "2026-10-14T09:41:57.409301454Z"
      }
    },
    "answer": "Medplum scores 68.7 (B) on agent readiness against Redox's 58.3 (C), and leads in 5 of 7 scored categories. Redox leads on reliability.",
    "b": {
      "slug": "redox",
      "name": "Redox",
      "vendor": "Redox, Inc.",
      "vendorUrl": "https://redoxengine.com",
      "kind": "http-api",
      "category": "health-data",
      "summary": "Redox connects software vendors to hospital EHRs and clinical networks, translating HL7v2, C-CDA, X12 and DICOM into FHIR or Redox data models, with a FHIR API, a Platform API and a hosted MCP server for managing integrations.",
      "url": "https://www.anchorterminal.com/tools/redox",
      "markdownUrl": "https://www.anchorterminal.com/tools/redox.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/redox.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/redox.json",
      "license": "Proprietary service under Redox's Cloud Services Agreement, EULA and SLA (version 2016.1)",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.redoxengine.com/mcp",
      "packages": [],
      "auth": "oauth",
      "authNotes": "Data exchange uses OAuth API keys. The client signs a JWT assertion with a private key whose public half Redox holds (generated in the dashboard, pasted as a JWKS entry, or served from a JWKS URL), then exchanges it for a bearer token. Keys can be rotated, legacy API keys can be migrated, and user-level API keys exist for the Platform API. Each user connects to the MCP server through OAuth in their AI client after an organisation owner opts the organisation in.",
      "pricing": "paid",
      "pricingNotes": "Annual plans. Sandbox starts at $15,000 a year (a development environment with a FHIR sandbox and simulated patients, for organisations under 500 employees), Core starts at $35,000 a year, and Advanced is priced by sales. Consumption is billed on anticipated transaction volume, with no unit rates published. Anyone can create a dashboard account without a card, but what it can call before a plan is not stated (checked 2026-10-14).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the MCP server page or the pricing page (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": 107,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://docs.redoxengine.com",
      "capabilities": [
        "health.ehr",
        "health.fhir",
        "health.records"
      ],
      "tags": [
        "hosted",
        "ehr-integration",
        "fhir",
        "hl7v2",
        "mcp",
        "oauth",
        "status-page",
        "sla",
        "bug-bounty",
        "hitrust",
        "soc2",
        "sales-led"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.3,
        "grade": "C",
        "agentReady": false,
        "rank": 618,
        "ranked": true,
        "rankOf": 1076,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 54,
          "maintenance": 31,
          "payments": 15,
          "reliability": 85,
          "schema": 56,
          "security": 78,
          "transparency": 59
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "negative": 0,
        "verdict": "Redox connects to EHRs and clinical networks behind a FHIR API, with signed-JWT OAuth keys, a 99.95 per cent SLA, a HackerOne bug bounty and a hosted MCP server for managing integrations. The MCP server exposes 107 tools at once with write and delete tools unconfirmed, OpenAPI files sit behind login, and the sandbox plan costs $15,000 a year.",
        "bestFor": "Health software vendors integrating with many hospital EHRs and networks, and integration teams who want an agent to manage Redox configuration.",
        "strengths": [
          "OAuth API keys signed with the client's own private key, with JWKS URL support and rotation guidance",
          "Hosted MCP server with per-user OAuth and an organisation-level opt-in",
          "Published SLA of 99.95 per cent and a 40-minute incident on 8 September 2026 with a postmortem",
          "HITRUST r2, SOC 2 Type 2 and a public HackerOne bug bounty"
        ],
        "weaknesses": [
          "The MCP server loads 107 tools in one set, including write and delete tools with no confirmation step",
          "OpenAPI files and Postman collections are behind the dashboard login, and llms.txt is missing",
          "No public changelog or dated releases",
          "The cheapest plan with a sandbox starts at $15,000 a year"
        ],
        "agentNotes": [
          "Name the environment in every MCP prompt and try configuration changes in staging first, as Redox advises",
          "Stay under 7,500 requests per IP per five minutes, and back off exponentially on 5XX",
          "Sign the token request with the private key whose public key is registered on the OAuth API key",
          "Ask an organisation owner to enable the MCP server before connecting a client",
          "Treat log payloads returned through MCP as PHI and as untrusted text"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.3
          }
        ],
        "editorialScores": {
          "ergonomics": 54,
          "maintenance": 31,
          "payments": 15,
          "reliability": 85,
          "schema": 56,
          "security": 78,
          "transparency": 37
        },
        "provenanceScore": 80
      },
      "connect": {
        "http": "https://api.redoxengine.com/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/health.ehr",
        "tool": "https://letme.dev/redox"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Redox, Inc.",
        "domain": "redoxengine.com",
        "domainRegistered": "2014-07-23",
        "endpointOnVendorDomain": true,
        "terms": "https://redoxengine.com/legal/terms-of-use/",
        "privacy": "https://redoxengine.com/legal/privacy-policy/",
        "statusPage": "https://status.redoxengine.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-14",
        "notes": [
          "The website terms of use (version 2014.1, last updated 17 October 2015) name Redox, Inc., 25 West Main Street, Suite 500, Madison, WI 53703, and forbid crawling that impairs a system. Service use falls under a Cloud Services Agreement and the EULA, which we did not read.",
          "The SLA page is version 2016.1, dated 13 February 2016.",
          "The privacy policy (last updated 18 January 2023) covers the website and says it doesn't govern data Redox processes for customers.",
          "redoxengine.com/.well-known/security.txt returns 404. The platform security page points to a HackerOne bug bounty.",
          "docs.redoxengine.com/llms.txt returns the HTML site rather than an llms.txt file. No public changelog was found.",
          "RDAP gives redoxengine.com a registration date of 2014-07-23."
        ],
        "score": 80
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/redox.json",
      "live": {
        "slug": "redox",
        "probe": {
          "target": "https://api.redoxengine.com/mcp",
          "method": "get",
          "lastAt": "2026-10-14T09:42:04.293207713Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 251,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 265,
          "p95ms24h": 428,
          "samples24h": 17,
          "samples30d": 17,
          "days": [
            {
              "date": "2026-10-14",
              "probes": 17,
              "ok": 17
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.redoxengine.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-14T09:39:39.154707608Z"
        },
        "updatedAt": "2026-10-14T09:42:04.293207713Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Orangebot, Inc. (dba Medplum)",
        "b": "Redox, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.medplum.com/mcp/stream",
        "b": "https://api.redoxengine.com/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP, SSE (legacy)",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache 2.0 for the server, SDKs and apps in medplum/medplum. The hosted service at api.medplum.com runs under Medplum's terms of service",
        "b": "Proprietary service under Redox's Cloud Services Agreement, EULA and SLA (version 2016.1)",
        "name": "Licence"
      },
      {
        "a": "3",
        "b": "107",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "com.medplum/mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-08",
        "b": "none",
        "name": "Last release"
      },
      {
        "a": "2023-04-11",
        "b": "2015-10-17",
        "name": "Terms last updated"
      },
      {
        "a": "2022-04-05",
        "b": "2023-01-18",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "2.7k stars, 270k npm/wk",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Medplum scores 68.7 (B) on agent readiness against Redox's 58.3 (C), and leads in 5 of 7 scored categories. Redox leads on reliability.",
        "question": "Which is better for AI agents, Medplum or Redox?"
      },
      {
        "answer": "Both use an OAuth sign-in.",
        "question": "Do Medplum and Redox need an API key?"
      },
      {
        "answer": "Yes. Medplum has a hosted endpoint at https://api.medplum.com/mcp/stream and Redox at https://api.redoxengine.com/mcp.",
        "question": "Can an agent call Medplum and Redox without installing anything?"
      },
      {
        "answer": "Medplum is open source (Apache 2.0 for the server, SDKs and apps in medplum/medplum. The hosted service at api.medplum.com runs under Medplum's terms of service). No open-source release is listed for Redox.",
        "question": "Are Medplum and Redox open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 82 against 56",
          "Agent ergonomics, 73 against 54",
          "Payments \u0026 pricing, 25 against 15",
          "Maintenance \u0026 community, 93 against 31",
          "Transparency \u0026 trust, 72 against 59"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "An agent working inside a digital health company's own FHIR store, reading and writing patients, observations and appointments under a BAA.",
        "slug": "medplum",
        "watchFor": "The MCP `fhir-request` tool can delete or overwrite any resource the token allows, with no readOnlyHint or destructiveHint"
      },
      {
        "aheadOn": [
          "Reliability, 85 against 75"
        ],
        "also": null,
        "goodFor": "Health software vendors integrating with many hospital EHRs and networks, and integration teams who want an agent to manage Redox configuration.",
        "slug": "redox",
        "watchFor": "The MCP server loads 107 tools in one set, including write and delete tools with no confirmation step"
      }
    ],
    "job": {
      "capability": "health.fhir",
      "name": "FHIR servers"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/aidbox-vs-medplum.json",
        "title": "Aidbox vs Medplum",
        "url": "https://www.anchorterminal.com/compare/aidbox-vs-medplum"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aidbox-vs-redox.json",
        "title": "Aidbox vs Redox",
        "url": "https://www.anchorterminal.com/compare/aidbox-vs-redox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medplum-vs-metriport.json",
        "title": "Medplum vs Metriport Medical API",
        "url": "https://www.anchorterminal.com/compare/medplum-vs-metriport"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medplum-vs-particle-health.json",
        "title": "Medplum vs Particle Health",
        "url": "https://www.anchorterminal.com/compare/medplum-vs-particle-health"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medplum-vs-rook.json",
        "title": "Medplum vs ROOK",
        "url": "https://www.anchorterminal.com/compare/medplum-vs-rook"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medplum-vs-terra.json",
        "title": "Medplum vs Terra API",
        "url": "https://www.anchorterminal.com/compare/medplum-vs-terra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medplum-vs-zus-health.json",
        "title": "Medplum vs Zus Health",
        "url": "https://www.anchorterminal.com/compare/medplum-vs-zus-health"
      },
      {
        "json": "https://www.anchorterminal.com/compare/redox-vs-rook.json",
        "title": "Redox vs ROOK",
        "url": "https://www.anchorterminal.com/compare/redox-vs-rook"
      },
      {
        "json": "https://www.anchorterminal.com/compare/redox-vs-terra.json",
        "title": "Redox vs Terra API",
        "url": "https://www.anchorterminal.com/compare/redox-vs-terra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/1uphealth-vs-medplum.json",
        "title": "1upHealth vs Medplum",
        "url": "https://www.anchorterminal.com/compare/1uphealth-vs-medplum"
      },
      {
        "json": "https://www.anchorterminal.com/compare/1uphealth-vs-redox.json",
        "title": "1upHealth vs Redox",
        "url": "https://www.anchorterminal.com/compare/1uphealth-vs-redox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/health-gorilla-vs-medplum.json",
        "title": "Health Gorilla vs Medplum",
        "url": "https://www.anchorterminal.com/compare/health-gorilla-vs-medplum"
      },
      {
        "json": "https://www.anchorterminal.com/compare/health-gorilla-vs-redox.json",
        "title": "Health Gorilla vs Redox",
        "url": "https://www.anchorterminal.com/compare/health-gorilla-vs-redox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medblocks-vs-medplum.json",
        "title": "Medblocks vs Medplum",
        "url": "https://www.anchorterminal.com/compare/medblocks-vs-medplum"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medblocks-vs-redox.json",
        "title": "Medblocks vs Redox",
        "url": "https://www.anchorterminal.com/compare/medblocks-vs-redox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/metriport-vs-redox.json",
        "title": "Metriport Medical API vs Redox",
        "url": "https://www.anchorterminal.com/compare/metriport-vs-redox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/particle-health-vs-redox.json",
        "title": "Particle Health vs Redox",
        "url": "https://www.anchorterminal.com/compare/particle-health-vs-redox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/redox-vs-zus-health.json",
        "title": "Redox vs Zus Health",
        "url": "https://www.anchorterminal.com/compare/redox-vs-zus-health"
      }
    ],
    "scores": [
      {
        "by": 10,
        "edge": "redox",
        "key": "reliability",
        "medplum": 75,
        "name": "Reliability",
        "redox": 85,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 26,
        "edge": "medplum",
        "key": "schema",
        "medplum": 82,
        "name": "Schema \u0026 documentation",
        "redox": 56,
        "weight": 13
      },
      {
        "by": 19,
        "edge": "medplum",
        "key": "ergonomics",
        "medplum": 73,
        "name": "Agent ergonomics",
        "redox": 54,
        "weight": 13
      },
      {
        "by": 4,
        "edge": "redox",
        "key": "security",
        "medplum": 74,
        "name": "Security \u0026 auth",
        "redox": 78,
        "weight": 14
      },
      {
        "by": 10,
        "edge": "medplum",
        "key": "payments",
        "medplum": 25,
        "name": "Payments \u0026 pricing",
        "redox": 15,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 62,
        "edge": "medplum",
        "key": "maintenance",
        "medplum": 93,
        "name": "Maintenance \u0026 community",
        "redox": 31,
        "weight": 7
      },
      {
        "by": 13,
        "edge": "medplum",
        "key": "transparency",
        "medplum": 72,
        "name": "Transparency \u0026 trust",
        "redox": 59,
        "weight": 7
      }
    ],
    "summary": "Medplum scores 68.7 (B) on agent readiness against Redox's 58.3 (C), and leads in 5 of 7 scored categories. Redox leads on reliability. Both do fhir servers.",
    "verdicts": {
      "medplum": "Graded on the hosted FHIR API at api.medplum.com. Rate limits, a `RateLimit` header and a 99.99 per cent SLA are published, AccessPolicy resources allow read-only clients, and an official MCP server sits in the registry. Its main tool can delete records with no annotation, the status page could not be read, and the privacy policy dates from 2022.",
      "redox": "Redox connects to EHRs and clinical networks behind a FHIR API, with signed-JWT OAuth keys, a 99.95 per cent SLA, a HackerOne bug bounty and a hosted MCP server for managing integrations. The MCP server exposes 107 tools at once with write and delete tools unconfirmed, OpenAPI files sit behind login, and the sandbox plan costs $15,000 a year."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/medplum-vs-redox",
    "json": "https://www.anchorterminal.com/compare/medplum-vs-redox.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/medplum-vs-redox.md",
    "slim": "https://www.anchorterminal.com/compare/medplum-vs-redox.min.md"
  },
  "markdown": "Medplum scores 68.7 (B) on agent readiness against Redox's 58.3 (C), and leads in 5 of 7 scored categories. Redox leads on reliability. Both do fhir servers.\n\n- Medplum: grade B, 68.7/100, rank #216 of 1076. Markdown https://www.anchorterminal.com/tools/medplum.md · JSON https://www.anchorterminal.com/api/v1/tools/medplum.json\n- Redox: grade C, 58.3/100, rank #618 of 1076. Markdown https://www.anchorterminal.com/tools/redox.md · JSON https://www.anchorterminal.com/api/v1/tools/redox.json\n- Best health record and wellness data APIs for AI agents: https://www.anchorterminal.com/best/health-data/index.md\n- All 63 health comparisons: https://www.anchorterminal.com/compare/health-data/index.md\n\n## Which one, for what\n\n### Medplum (B)\n\nGood for: An agent working inside a digital health company's own FHIR store, reading and writing patients, observations and appointments under a BAA.\n\nAhead on:\n- Schema \u0026 documentation, 82 against 56\n- Agent ergonomics, 73 against 54\n- Payments \u0026 pricing, 25 against 15\n- Maintenance \u0026 community, 93 against 31\n- Transparency \u0026 trust, 72 against 59\n\nAlso in its favour:\n- Open source\n\nWatch for: The MCP `fhir-request` tool can delete or overwrite any resource the token allows, with no readOnlyHint or destructiveHint\n\n### Redox (C)\n\nGood for: Health software vendors integrating with many hospital EHRs and networks, and integration teams who want an agent to manage Redox configuration.\n\nAhead on:\n- Reliability, 85 against 75\n\nWatch for: The MCP server loads 107 tools in one set, including write and delete tools with no confirmation step\n\n\n## Score by category\n\n| Category | Weight | Medplum | Redox | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 85 | Redox +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 82 | 56 | Medplum +26 |\n| Agent ergonomics | 13% (16.2 this run) | 73 | 54 | Medplum +19 |\n| Security \u0026 auth | 14% (17.5 this run) | 74 | 78 | Redox +4 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 25 | 15 | Medplum +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 93 | 31 | Medplum +62 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 72 | 59 | Medplum +13 |\n| Negative events | ≤15 | -2 | 0 | |\n| **Total** | | **68.7 · B** | **58.3 · C** | |\n\n## Facts side by side\n\n| Fact | Medplum | Redox |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Orangebot, Inc. (dba Medplum) | Redox, Inc. |\n| Hosted endpoint | `https://api.medplum.com/mcp/stream` | `https://api.redoxengine.com/mcp` |\n| Transports | HTTP, Streamable HTTP, SSE (legacy) | HTTP |\n| Auth | OAuth | OAuth |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | Apache 2.0 for the server, SDKs and apps in medplum/medplum. The hosted service at api.medplum.com runs under Medplum's terms of service | Proprietary service under Redox's Cloud Services Agreement, EULA and SLA (version 2016.1) |\n| Tools exposed | 3 | 107 |\n| Read-only variant documented | yes | no |\n| llms.txt | yes | no |\n| MCP registry | `com.medplum/mcp` | not listed |\n| Last release | 2026-10-08 | none |\n| Terms last updated | 2023-04-11 | 2015-10-17 |\n| Privacy policy last updated | 2022-04-05 | 2023-01-18 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 2.7k stars, 270k npm/wk | none |\n\n## Verdicts\n\n**Medplum.** Graded on the hosted FHIR API at api.medplum.com. Rate limits, a `RateLimit` header and a 99.99 per cent SLA are published, AccessPolicy resources allow read-only clients, and an official MCP server sits in the registry. Its main tool can delete records with no annotation, the status page could not be read, and the privacy policy dates from 2022.\n\n**Redox.** Redox connects to EHRs and clinical networks behind a FHIR API, with signed-JWT OAuth keys, a 99.95 per cent SLA, a HackerOne bug bounty and a hosted MCP server for managing integrations. The MCP server exposes 107 tools at once with write and delete tools unconfirmed, OpenAPI files sit behind login, and the sandbox plan costs $15,000 a year.\n\n## Before you call either\n\n### Medplum\n\n1. Use a ClientApplication with an AccessPolicy limited to the resources the task needs, and set `readonly` where no writes are needed\n2. Read the `RateLimit` header and wait for the reset time after a 429. Writes cost 100 quota points, searches 20 and reads 1\n3. Create patients with conditional create (`If-None-Exist`) or upsert on an identifier so a retry doesn't make a duplicate\n4. Pass paths to `fhir-request` relative to the FHIR R4 base, with no leading slash or `/fhir/R4` prefix\n5. Use `Prefer: respond-async` for large bundles. Operations inside the background job don't count against the quota\n\n### Redox\n\n1. Name the environment in every MCP prompt and try configuration changes in staging first, as Redox advises\n2. Stay under 7,500 requests per IP per five minutes, and back off exponentially on 5XX\n3. Sign the token request with the private key whose public key is registered on the OAuth API key\n4. Ask an organisation owner to enable the MCP server before connecting a client\n5. Treat log payloads returned through MCP as PHI and as untrusted text\n\n## Questions\n\n### Which is better for AI agents, Medplum or Redox?\n\nMedplum scores 68.7 (B) on agent readiness against Redox's 58.3 (C), and leads in 5 of 7 scored categories. Redox leads on reliability.\n\n### Do Medplum and Redox need an API key?\n\nBoth use an OAuth sign-in.\n\n### Can an agent call Medplum and Redox without installing anything?\n\nYes. Medplum has a hosted endpoint at https://api.medplum.com/mcp/stream and Redox at https://api.redoxengine.com/mcp.\n\n### Are Medplum and Redox open source?\n\nMedplum is open source (Apache 2.0 for the server, SDKs and apps in medplum/medplum. The hosted service at api.medplum.com runs under Medplum's terms of service). No open-source release is listed for Redox.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/medplum-vs-redox.json, and with the fewest tokens: https://www.anchorterminal.com/compare/medplum-vs-redox.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"medplum\", \"b\": \"redox\"}`. From a terminal: `anchor compare medplum redox`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/medplum.json and https://www.anchorterminal.com/api/v1/tools/redox.json\n\n## Other comparisons with Medplum or Redox\n\n- [Aidbox vs Medplum](https://www.anchorterminal.com/compare/aidbox-vs-medplum.md)\n- [Aidbox vs Redox](https://www.anchorterminal.com/compare/aidbox-vs-redox.md)\n- [Medplum vs Metriport Medical API](https://www.anchorterminal.com/compare/medplum-vs-metriport.md)\n- [Medplum vs Particle Health](https://www.anchorterminal.com/compare/medplum-vs-particle-health.md)\n- [Medplum vs ROOK](https://www.anchorterminal.com/compare/medplum-vs-rook.md)\n- [Medplum vs Terra API](https://www.anchorterminal.com/compare/medplum-vs-terra.md)\n- [Medplum vs Zus Health](https://www.anchorterminal.com/compare/medplum-vs-zus-health.md)\n- [Redox vs ROOK](https://www.anchorterminal.com/compare/redox-vs-rook.md)\n- [Redox vs Terra API](https://www.anchorterminal.com/compare/redox-vs-terra.md)\n- [1upHealth vs Medplum](https://www.anchorterminal.com/compare/1uphealth-vs-medplum.md)\n- [1upHealth vs Redox](https://www.anchorterminal.com/compare/1uphealth-vs-redox.md)\n- [Health Gorilla vs Medplum](https://www.anchorterminal.com/compare/health-gorilla-vs-medplum.md)\n- [Health Gorilla vs Redox](https://www.anchorterminal.com/compare/health-gorilla-vs-redox.md)\n- [Medblocks vs Medplum](https://www.anchorterminal.com/compare/medblocks-vs-medplum.md)\n- [Medblocks vs Redox](https://www.anchorterminal.com/compare/medblocks-vs-redox.md)\n- [Metriport Medical API vs Redox](https://www.anchorterminal.com/compare/metriport-vs-redox.md)\n- [Particle Health vs Redox](https://www.anchorterminal.com/compare/particle-health-vs-redox.md)\n- [Redox vs Zus Health](https://www.anchorterminal.com/compare/redox-vs-zus-health.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-14",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Medplum vs Redox",
        "url": ""
      }
    ],
    "description": "Medplum scores 68.7 (B) to Redox's 58.3 (C) for fhir servers. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Medplum B 68.7",
      "Redox C 58.3",
      "scores"
    ],
    "h1": "Medplum vs Redox",
    "image": "https://www.anchorterminal.com/assets/og/compare-medplum-vs-redox.png",
    "path": "/compare/medplum-vs-redox",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Medplum vs Redox for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-14",
    "url": "https://www.anchorterminal.com/compare/medplum-vs-redox"
  },
  "tokens": {
    "markdown": 2300,
    "slim": 680
  },
  "version": 1
}
