{
  "data": {
    "a": {
      "slug": "medblocks",
      "name": "Medblocks",
      "vendor": "Medblocks Inc.",
      "vendorUrl": "https://medblocks.com",
      "kind": "http-api",
      "category": "health-data",
      "summary": "Medblocks Platform lets an app or agent connect a patient's hospital, clinic and insurer records through SMART on FHIR and read them back as FHIR R4, through a REST API, a TypeScript SDK or a remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/medblocks",
      "markdownUrl": "https://www.anchorterminal.com/tools/medblocks.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/medblocks.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/medblocks.json",
      "repo": "https://github.com/medblocks/skills",
      "license": "Proprietary service under Medblocks' terms. The medblocks TypeScript SDK on npm carries a proprietary licence that forbids redistribution and reverse engineering. The agent skills repository has no licence file",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://app.medblocks.com/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "medblocks"
        }
      ],
      "auth": "mixed",
      "authNotes": "The REST API takes a workspace API key as a Bearer token (`mb_sk_sbx_` for Sandbox, `mb_sk_live_` for Production). Owners and admins mint, rotate and revoke keys in the dashboard, and the full key is shown once. The MCP server at https://app.medblocks.com/mcp also accepts OAuth from Medblocks' own authorisation server, which publishes dynamic client registration, PKCE and ten scopes (patients:read, patients:write, fhir:read and others), with a consent screen of three tick boxes. Patients authorise each hospital themselves through SMART on FHIR. A BAA is needed before production use.",
      "pricing": "freemium",
      "pricingNotes": "Free plan at $0 for up to 1,000 active patients, with patient access, synthetic sandboxes and full API access. Enterprise is $60,000 a year with no patient cap and adds backend services, clinical workflows, OCR and data structuring. A patient counts as active from the first successful FHIR pull. Upgrades go through support@medblocks.com, and requests outside the plan return 402 `billing_error` (checked 2026-10-14).",
      "priceSummary": "$5000 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, llms-full.txt or the billing page. A 402 status is used only for `billing_error` when a plan does not cover a feature (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": 10,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 36,
        "pypiWeekly": null,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://medblocks.com/docs",
      "llmsTxt": "https://medblocks.com/docs/llms.txt",
      "capabilities": [
        "health.records",
        "health.consent",
        "health.ehr",
        "health.fhir",
        "agent.tools"
      ],
      "tags": [
        "hosted",
        "mcp",
        "oauth",
        "fhir",
        "smart-on-fhir",
        "typescript",
        "llms-txt",
        "free-tier",
        "hipaa"
      ],
      "lastRelease": "2026-09-14",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 52.7,
        "grade": "D",
        "agentReady": false,
        "rank": 773,
        "ranked": true,
        "rankOf": 1076,
        "categoryRank": 9,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 72,
          "maintenance": 69,
          "payments": 25,
          "reliability": 28,
          "schema": 62,
          "security": 67,
          "transparency": 51
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "negative": 0,
        "verdict": "Patient-authorised record retrieval with a ten-tool remote MCP server, OAuth with per-capability consent, an audit entry for every call and a free plan for 1,000 active patients. No status page, no published rate limits and no idempotency keys were found, and the OpenAPI file behind the reference is not published.",
        "bestFor": "A consumer or care app, or an assistant, that needs a patient's own records from US hospitals and payers with the patient's consent, and wants an MCP route as well as REST.",
        "strengths": [
          "Remote MCP server with ten tools, OAuth with dynamic client registration and a consent screen that can leave destructive actions off",
          "Free plan for up to 1,000 active patients and a Synthetic Hospital sandbox with seeded FHIR R4 patients",
          "One error envelope with 36 stable codes, a `param` field, a request ID and `Retry-After` on 429",
          "Every MCP tool call writes an audit entry, and the dashboard shows authorisation and pull history per patient",
          "llms.txt, llms-full.txt and a Markdown copy of every docs page, plus agent skills for Claude Code, Codex and Cursor"
        ],
        "weaknesses": [
          "No status page, SLA or published rate limits for the Platform API",
          "No idempotency keys were found, and the API conventions and versioning pages are unwritten placeholders",
          "The OpenAPI file the reference is generated from is not published",
          "Only one SDK, in TypeScript, with npm's latest tag still at 1.0.0 while the changelog documents 1.2.0",
          "The public terms cover the website and Blue Button app, and no sub-processor list or customer terms for the API were found"
        ],
        "agentNotes": [
          "Connect with `claude mcp add --transport http medblocks https://app.medblocks.com/mcp` and sign in, or send a workspace API key as a Bearer token from a backend",
          "Ask the person before calling `disconnect_health_system` or `delete_person`. Both are permanent",
          "Wait for the connection webhook or check connection status before reading records. Pulls run in the background after the patient approves",
          "Branch on `error.code`, not the message, and wait the `Retry-After` seconds on a 429",
          "Use a Sandbox workspace and the Synthetic Hospital (password `demopass`) for tests. Sandbox keys cannot reach production sources"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 52.7
          }
        ],
        "editorialScores": {
          "ergonomics": 72,
          "maintenance": 69,
          "payments": 25,
          "reliability": 28,
          "schema": 62,
          "security": 67,
          "transparency": 32
        },
        "provenanceScore": 70
      },
      "connect": {
        "install": "npm install medblocks",
        "http": "curl https://app.medblocks.com/patients -H \"Authorization: Bearer $MEDBLOCKS_API_KEY\" -H \"Content-Type: application/json\"",
        "claudeCode": "claude mcp add --transport http medblocks https://app.medblocks.com/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/health.records",
        "tool": "https://letme.dev/medblocks"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Enterprise plan, uncapped patients",
          "unit": "month",
          "usd": 5000,
          "note": "$60,000 a year per the billing page, shown here as a monthly equivalent"
        }
      ],
      "provenance": {
        "legalEntity": "Medblocks Inc.",
        "domain": "medblocks.com",
        "domainRegistered": "2005-11-04",
        "endpointOnVendorDomain": true,
        "terms": "https://medblocks.com/terms",
        "privacy": "https://medblocks.com/privacy-policy",
        "statusPage": "",
        "changelog": "https://medblocks.com/docs/reference/changelog",
        "securityTxt": "none",
        "checked": "2026-10-14",
        "notes": [
          "The terms, last updated 5 October 2026, name Medblocks Inc., a Delaware corporation, at 100 Front Street, Suite 400 #122, Worcester, MA 01608, and cover the website and the CMS Blue Button application. No separate customer terms for the Platform API were found.",
          "The terms forbid using robots, scripts or scrapers to access the site. We read public pages and recorded that clause.",
          "The privacy policy, last updated 5 October 2026, covers the Medblocks applications including Medblocks Platform and the MCP server, and says no data is used to train AI models.",
          "medblocks.com/.well-known/security.txt returns 404. status.medblocks.com did not answer and no status page was linked from the docs.",
          "RDAP for medblocks.com gives a registration date of 2005-11-04."
        ],
        "score": 70
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/medblocks.json",
      "live": {
        "slug": "medblocks",
        "probe": {
          "target": "https://app.medblocks.com/mcp",
          "method": "get",
          "lastAt": "2026-10-14T09:41:57.376112052Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 317,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 317,
          "p95ms24h": 463,
          "samples24h": 17,
          "samples30d": 17,
          "days": [
            {
              "date": "2026-10-14",
              "probes": 17,
              "ok": 17
            }
          ]
        },
        "updatedAt": "2026-10-14T09:41:57.376112052Z"
      }
    },
    "answer": "Medplum scores 68.7 (B) on agent readiness against Medblocks's 52.7 (D), and leads in 6 of 7 scored categories.",
    "b": {
      "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"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Medblocks Inc.",
        "b": "Orangebot, Inc. (dba Medplum)",
        "name": "Vendor"
      },
      {
        "a": "https://app.medblocks.com/mcp",
        "b": "https://api.medplum.com/mcp/stream",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP, SSE (legacy)",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Medblocks' terms. The medblocks TypeScript SDK on npm carries a proprietary licence that forbids redistribution and reverse engineering. The agent skills repository has no licence file",
        "b": "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",
        "name": "Licence"
      },
      {
        "a": "10",
        "b": "3",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "com.medplum/mcp",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-14",
        "b": "2026-10-08",
        "name": "Last release"
      },
      {
        "a": "2026-10-05",
        "b": "2023-04-11",
        "name": "Terms last updated"
      },
      {
        "a": "2026-10-05",
        "b": "2022-04-05",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "36 npm/wk",
        "b": "2.7k stars, 270k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Medplum scores 68.7 (B) on agent readiness against Medblocks's 52.7 (D), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Medblocks or Medplum?"
      },
      {
        "answer": "Medblocks takes an API key or an OAuth sign-in. Medplum uses an OAuth sign-in.",
        "question": "Do Medblocks and Medplum need an API key?"
      },
      {
        "answer": "Yes. Medblocks has a hosted endpoint at https://app.medblocks.com/mcp and Medplum at https://api.medplum.com/mcp/stream.",
        "question": "Can an agent call Medblocks and Medplum without installing anything?"
      },
      {
        "answer": "No open-source release is listed for Medblocks. 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).",
        "question": "Are Medblocks and Medplum open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "A consumer or care app, or an assistant, that needs a patient's own records from US hospitals and payers with the patient's consent, and wants an MCP route as well as REST.",
        "slug": "medblocks",
        "watchFor": "No status page, SLA or published rate limits for the Platform API"
      },
      {
        "aheadOn": [
          "Reliability, 75 against 28",
          "Schema \u0026 documentation, 82 against 62",
          "Security \u0026 auth, 74 against 67",
          "Maintenance \u0026 community, 93 against 69",
          "Transparency \u0026 trust, 72 against 51"
        ],
        "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"
      }
    ],
    "job": {
      "capability": "health.records",
      "name": "Patient record retrieval"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/aidbox-vs-medblocks.json",
        "title": "Aidbox vs Medblocks",
        "url": "https://www.anchorterminal.com/compare/aidbox-vs-medblocks"
      },
      {
        "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/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-redox.json",
        "title": "Medplum vs Redox",
        "url": "https://www.anchorterminal.com/compare/medplum-vs-redox"
      },
      {
        "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/1uphealth-vs-medblocks.json",
        "title": "1upHealth vs Medblocks",
        "url": "https://www.anchorterminal.com/compare/1uphealth-vs-medblocks"
      },
      {
        "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/health-gorilla-vs-medblocks.json",
        "title": "Health Gorilla vs Medblocks",
        "url": "https://www.anchorterminal.com/compare/health-gorilla-vs-medblocks"
      },
      {
        "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/medblocks-vs-metriport.json",
        "title": "Medblocks vs Metriport Medical API",
        "url": "https://www.anchorterminal.com/compare/medblocks-vs-metriport"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medblocks-vs-particle-health.json",
        "title": "Medblocks vs Particle Health",
        "url": "https://www.anchorterminal.com/compare/medblocks-vs-particle-health"
      },
      {
        "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/medblocks-vs-zus-health.json",
        "title": "Medblocks vs Zus Health",
        "url": "https://www.anchorterminal.com/compare/medblocks-vs-zus-health"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medblocks-vs-rook.json",
        "title": "Medblocks vs ROOK",
        "url": "https://www.anchorterminal.com/compare/medblocks-vs-rook"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medblocks-vs-terra.json",
        "title": "Medblocks vs Terra API",
        "url": "https://www.anchorterminal.com/compare/medblocks-vs-terra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medblocks-vs-validic.json",
        "title": "Medblocks vs Validic Inform",
        "url": "https://www.anchorterminal.com/compare/medblocks-vs-validic"
      }
    ],
    "scores": [
      {
        "by": 47,
        "edge": "medplum",
        "key": "reliability",
        "medblocks": 28,
        "medplum": 75,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 20,
        "edge": "medplum",
        "key": "schema",
        "medblocks": 62,
        "medplum": 82,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 1,
        "edge": "medplum",
        "key": "ergonomics",
        "medblocks": 72,
        "medplum": 73,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 7,
        "edge": "medplum",
        "key": "security",
        "medblocks": 67,
        "medplum": 74,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "medblocks": 25,
        "medplum": 25,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 24,
        "edge": "medplum",
        "key": "maintenance",
        "medblocks": 69,
        "medplum": 93,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 21,
        "edge": "medplum",
        "key": "transparency",
        "medblocks": 51,
        "medplum": 72,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Medplum scores 68.7 (B) on agent readiness against Medblocks's 52.7 (D), and leads in 6 of 7 scored categories. Both do patient record retrieval.",
    "verdicts": {
      "medblocks": "Patient-authorised record retrieval with a ten-tool remote MCP server, OAuth with per-capability consent, an audit entry for every call and a free plan for 1,000 active patients. No status page, no published rate limits and no idempotency keys were found, and the OpenAPI file behind the reference is not published.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/medblocks-vs-medplum",
    "json": "https://www.anchorterminal.com/compare/medblocks-vs-medplum.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/medblocks-vs-medplum.md",
    "slim": "https://www.anchorterminal.com/compare/medblocks-vs-medplum.min.md"
  },
  "markdown": "Medplum scores 68.7 (B) on agent readiness against Medblocks's 52.7 (D), and leads in 6 of 7 scored categories. Both do patient record retrieval.\n\n- Medblocks: grade D, 52.7/100, rank #773 of 1076. Markdown https://www.anchorterminal.com/tools/medblocks.md · JSON https://www.anchorterminal.com/api/v1/tools/medblocks.json\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- 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### Medblocks (D)\n\nGood for: A consumer or care app, or an assistant, that needs a patient's own records from US hospitals and payers with the patient's consent, and wants an MCP route as well as REST.\n\nWatch for: No status page, SLA or published rate limits for the Platform API\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- Reliability, 75 against 28\n- Schema \u0026 documentation, 82 against 62\n- Security \u0026 auth, 74 against 67\n- Maintenance \u0026 community, 93 against 69\n- Transparency \u0026 trust, 72 against 51\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\n## Score by category\n\n| Category | Weight | Medblocks | Medplum | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 28 | 75 | Medplum +47 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 62 | 82 | Medplum +20 |\n| Agent ergonomics | 13% (16.2 this run) | 72 | 73 | Medplum +1 |\n| Security \u0026 auth | 14% (17.5 this run) | 67 | 74 | Medplum +7 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 25 | 25 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 69 | 93 | Medplum +24 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 51 | 72 | Medplum +21 |\n| Negative events | ≤15 | 0 | -2 | |\n| **Total** | | **52.7 · D** | **68.7 · B** | |\n\n## Facts side by side\n\n| Fact | Medblocks | Medplum |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Medblocks Inc. | Orangebot, Inc. (dba Medplum) |\n| Hosted endpoint | `https://app.medblocks.com/mcp` | `https://api.medplum.com/mcp/stream` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP, SSE (legacy) |\n| Auth | OAuth or key | OAuth |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | Proprietary service under Medblocks' terms. The medblocks TypeScript SDK on npm carries a proprietary licence that forbids redistribution and reverse engineering. The agent skills repository has no licence file | 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 |\n| Tools exposed | 10 | 3 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `com.medplum/mcp` |\n| Last release | 2026-09-14 | 2026-10-08 |\n| Terms last updated | 2026-10-05 | 2023-04-11 |\n| Privacy policy last updated | 2026-10-05 | 2022-04-05 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | yes | yes |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 36 npm/wk | 2.7k stars, 270k npm/wk |\n\n## Verdicts\n\n**Medblocks.** Patient-authorised record retrieval with a ten-tool remote MCP server, OAuth with per-capability consent, an audit entry for every call and a free plan for 1,000 active patients. No status page, no published rate limits and no idempotency keys were found, and the OpenAPI file behind the reference is not published.\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## Before you call either\n\n### Medblocks\n\n1. Connect with `claude mcp add --transport http medblocks https://app.medblocks.com/mcp` and sign in, or send a workspace API key as a Bearer token from a backend\n2. Ask the person before calling `disconnect_health_system` or `delete_person`. Both are permanent\n3. Wait for the connection webhook or check connection status before reading records. Pulls run in the background after the patient approves\n4. Branch on `error.code`, not the message, and wait the `Retry-After` seconds on a 429\n5. Use a Sandbox workspace and the Synthetic Hospital (password `demopass`) for tests. Sandbox keys cannot reach production sources\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## Questions\n\n### Which is better for AI agents, Medblocks or Medplum?\n\nMedplum scores 68.7 (B) on agent readiness against Medblocks's 52.7 (D), and leads in 6 of 7 scored categories.\n\n### Do Medblocks and Medplum need an API key?\n\nMedblocks takes an API key or an OAuth sign-in. Medplum uses an OAuth sign-in.\n\n### Can an agent call Medblocks and Medplum without installing anything?\n\nYes. Medblocks has a hosted endpoint at https://app.medblocks.com/mcp and Medplum at https://api.medplum.com/mcp/stream.\n\n### Are Medblocks and Medplum open source?\n\nNo open-source release is listed for Medblocks. 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).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/medblocks-vs-medplum.json, and with the fewest tokens: https://www.anchorterminal.com/compare/medblocks-vs-medplum.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"medblocks\", \"b\": \"medplum\"}`. From a terminal: `anchor compare medblocks medplum`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/medblocks.json and https://www.anchorterminal.com/api/v1/tools/medplum.json\n\n## Other comparisons with Medblocks or Medplum\n\n- [Aidbox vs Medblocks](https://www.anchorterminal.com/compare/aidbox-vs-medblocks.md)\n- [Aidbox vs Medplum](https://www.anchorterminal.com/compare/aidbox-vs-medplum.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 Redox](https://www.anchorterminal.com/compare/medplum-vs-redox.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- [1upHealth vs Medblocks](https://www.anchorterminal.com/compare/1uphealth-vs-medblocks.md)\n- [1upHealth vs Medplum](https://www.anchorterminal.com/compare/1uphealth-vs-medplum.md)\n- [Health Gorilla vs Medblocks](https://www.anchorterminal.com/compare/health-gorilla-vs-medblocks.md)\n- [Health Gorilla vs Medplum](https://www.anchorterminal.com/compare/health-gorilla-vs-medplum.md)\n- [Medblocks vs Metriport Medical API](https://www.anchorterminal.com/compare/medblocks-vs-metriport.md)\n- [Medblocks vs Particle Health](https://www.anchorterminal.com/compare/medblocks-vs-particle-health.md)\n- [Medblocks vs Redox](https://www.anchorterminal.com/compare/medblocks-vs-redox.md)\n- [Medblocks vs Zus Health](https://www.anchorterminal.com/compare/medblocks-vs-zus-health.md)\n- [Medblocks vs ROOK](https://www.anchorterminal.com/compare/medblocks-vs-rook.md)\n- [Medblocks vs Terra API](https://www.anchorterminal.com/compare/medblocks-vs-terra.md)\n- [Medblocks vs Validic Inform](https://www.anchorterminal.com/compare/medblocks-vs-validic.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": "Medblocks vs Medplum",
        "url": ""
      }
    ],
    "description": "Medplum scores 68.7 (B) to Medblocks's 52.7 (D) for patient record retrieval. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Medblocks D 52.7",
      "Medplum B 68.7",
      "scores"
    ],
    "h1": "Medblocks vs Medplum",
    "image": "https://www.anchorterminal.com/assets/og/compare-medblocks-vs-medplum.png",
    "path": "/compare/medblocks-vs-medplum",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Medblocks vs Medplum for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-14",
    "url": "https://www.anchorterminal.com/compare/medblocks-vs-medplum"
  },
  "tokens": {
    "markdown": 2400,
    "slim": 730
  },
  "version": 1
}
