{
  "data": {
    "a": {
      "slug": "1uphealth",
      "name": "1upHealth",
      "vendor": "1upHealth, Inc.",
      "vendorUrl": "https://1up.health",
      "kind": "http-api",
      "category": "health-data",
      "summary": "1upHealth runs FHIR APIs for US health plans, including the CMS Patient Access, Provider Access and Payer-to-Payer APIs, which let member-authorised third-party apps read claims, coverage and clinical data.",
      "url": "https://www.anchorterminal.com/tools/1uphealth",
      "markdownUrl": "https://www.anchorterminal.com/tools/1uphealth.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/1uphealth.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/1uphealth.json",
      "license": "Proprietary service under 1upHealth's Terms of Service (effective 1 August 2024)",
      "transports": [
        "http"
      ],
      "packages": [],
      "auth": "oauth",
      "authNotes": "Developers register in the 1up Dev Portal, verify an email and create sandbox client credentials. Patient Access uses the authorisation code grant, with the member signing in to the health plan's auth app, and access tokens last 15 minutes. Provider Access and Payer-to-Payer use client credentials with scopes such as `bulk-data|user/*.rs`. Client secrets can be regenerated in the Dev Portal. Production access follows 1upHealth's vetting of the app.",
      "pricing": "paid",
      "pricingNotes": "No public prices. The terms set fees in Order Forms, with one price increase a year on 90 days' notice. The Dev Portal sandbox clients need only a verified email, and no card was mentioned (checked 2026-10-14).",
      "priceSummary": "Paid",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, llms.txt or the terms (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://docs.1up.health",
      "llmsTxt": "https://docs.1up.health/llms.txt",
      "capabilities": [
        "health.records",
        "health.fhir",
        "health.consent"
      ],
      "tags": [
        "hosted",
        "health-records",
        "claims",
        "fhir",
        "bulk-data",
        "oauth",
        "llms-txt",
        "status-page",
        "sla",
        "free-tier",
        "hitrust",
        "soc2"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 46.8,
        "grade": "D",
        "agentReady": false,
        "rank": 903,
        "ranked": true,
        "rankOf": 1076,
        "categoryRank": 12,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 32,
          "maintenance": 37,
          "payments": 20,
          "reliability": 52,
          "schema": 50,
          "security": 63,
          "transparency": 72
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "negative": 0,
        "verdict": "Self-serve Dev Portal sandbox clients and a demo health plan let an app test the CMS Patient Access, Provider Access and Payer-to-Payer FHIR APIs, backed by HITRUST and SOC 2 Type 2. No rate limits, error formats or dated releases are documented, and the Patient Access OAuth step needs the member in a browser.",
        "bestFor": "Consumer and care apps that read a member's health plan claims and clinical data under the CMS rules, and payers meeting those rules.",
        "strengths": [
          "Sandbox client credentials from the Dev Portal with only an email verification",
          "Patient Access client IDs work across every payer production environment 1upHealth runs, once vetted",
          "Privacy policy with stated retention periods and US-only processing",
          "HITRUST, SOC 2 Type 2 and CSA STAR on a public trust centre"
        ],
        "weaknesses": [
          "No rate limits, 429 handling or error formats documented",
          "Release notes are undated",
          "The status page lists no components",
          "Patient Connect, the patient-mediated exchange across health systems, was sunset on 30 September 2026"
        ],
        "agentNotes": [
          "Hand the Patient Access sign-in to the member, who must authorise in the health plan's auth app",
          "Exchange the authorisation code within five minutes, and refresh before the 15-minute token expires",
          "Email payer-patient-access@1up.health with the client ID to get the app synced to the demo environment",
          "Expect only claims and coverage resources from some payers, and read /r4/metadata first"
        ],
        "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": 46.8
          }
        ],
        "editorialScores": {
          "ergonomics": 32,
          "maintenance": 37,
          "payments": 20,
          "reliability": 52,
          "schema": 50,
          "security": 63,
          "transparency": 61
        },
        "provenanceScore": 82
      },
      "connect": {
        "http": "GET https://api.1uphealthdemo.com/r4/ExplanationOfBenefit\nAuthorization: Bearer \u003caccess-token\u003e"
      },
      "letme": {
        "capability": "https://letme.dev/health.records",
        "tool": "https://letme.dev/1uphealth"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "1upHealth, Inc.",
        "domain": "1up.health",
        "domainRegistered": "2017-07-20",
        "endpointOnVendorDomain": true,
        "terms": "https://1up.health/terms-of-service/",
        "privacy": "https://1up.health/privacy-policy/",
        "statusPage": "https://status.1up.health",
        "changelog": "https://docs.1up.health/docs/release-notes",
        "securityTxt": "none",
        "checked": "2026-10-14",
        "notes": [
          "The Terms of Service (effective 1 August 2024) name 1upHealth, Inc., 280 Summer Street, Boston, MA 02210, and include the SLA as Exhibit A.",
          "The privacy policy (last updated 25 June 2026) covers the website, keeps logs up to 24 months, clears production data within 30 days and backups within 90 days of a deletion request, keeps data in the US, and leaves PHI to customer BAAs.",
          "The demo API answers on 1uphealthdemo.com, a separate domain.",
          "1up.health/.well-known/security.txt returns 404. The trust centre sends vulnerability reports to security@1up.health.",
          "Release notes carry version numbers such as 26.09.2 but no dates.",
          "RDAP gives 1up.health a registration date of 2017-07-20."
        ],
        "score": 82
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/1uphealth.json",
      "live": {
        "slug": "1uphealth",
        "vendorStatus": {
          "page": "https://status.1up.health",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-14T09:50:05.934939244Z"
        },
        "updatedAt": "2026-10-14T09:50:05.934939244Z"
      }
    },
    "answer": "Medplum scores 68.7 (B) on agent readiness against 1upHealth's 46.8 (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:59:54.038439603Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 262,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 256,
          "p95ms24h": 342,
          "samples24h": 20,
          "samples30d": 20,
          "days": [
            {
              "date": "2026-10-14",
              "probes": 20,
              "ok": 20
            }
          ]
        },
        "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:59:54.038439603Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "1upHealth, Inc.",
        "b": "Orangebot, Inc. (dba Medplum)",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://api.medplum.com/mcp/stream",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP, SSE (legacy)",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under 1upHealth's Terms of Service (effective 1 August 2024)",
        "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": "none",
        "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": "none",
        "b": "2026-10-08",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2023-04-11",
        "name": "Terms last updated"
      },
      {
        "a": "2026-06-25",
        "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": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "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": "none",
        "b": "2.7k stars, 270k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Medplum scores 68.7 (B) on agent readiness against 1upHealth's 46.8 (D), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, 1upHealth or Medplum?"
      },
      {
        "answer": "Both use an OAuth sign-in.",
        "question": "Do 1upHealth and Medplum need an API key?"
      },
      {
        "answer": "No hosted endpoint is listed for 1upHealth. Medplum has a hosted endpoint at https://api.medplum.com/mcp/stream.",
        "question": "Can an agent call 1upHealth and Medplum without installing anything?"
      },
      {
        "answer": "No open-source release is listed for 1upHealth. 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 1upHealth and Medplum open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "Consumer and care apps that read a member's health plan claims and clinical data under the CMS rules, and payers meeting those rules.",
        "slug": "1uphealth",
        "watchFor": "No rate limits, 429 handling or error formats documented"
      },
      {
        "aheadOn": [
          "Reliability, 75 against 52",
          "Schema \u0026 documentation, 82 against 50",
          "Agent ergonomics, 73 against 32",
          "Security \u0026 auth, 74 against 63",
          "Payments \u0026 pricing, 25 against 20",
          "Maintenance \u0026 community, 93 against 37"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "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/1uphealth-vs-rook.json",
        "title": "1upHealth vs ROOK",
        "url": "https://www.anchorterminal.com/compare/1uphealth-vs-rook"
      },
      {
        "json": "https://www.anchorterminal.com/compare/1uphealth-vs-terra.json",
        "title": "1upHealth vs Terra API",
        "url": "https://www.anchorterminal.com/compare/1uphealth-vs-terra"
      },
      {
        "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-aidbox.json",
        "title": "1upHealth vs Aidbox",
        "url": "https://www.anchorterminal.com/compare/1uphealth-vs-aidbox"
      },
      {
        "json": "https://www.anchorterminal.com/compare/1uphealth-vs-health-gorilla.json",
        "title": "1upHealth vs Health Gorilla",
        "url": "https://www.anchorterminal.com/compare/1uphealth-vs-health-gorilla"
      },
      {
        "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-metriport.json",
        "title": "1upHealth vs Metriport Medical API",
        "url": "https://www.anchorterminal.com/compare/1uphealth-vs-metriport"
      },
      {
        "json": "https://www.anchorterminal.com/compare/1uphealth-vs-particle-health.json",
        "title": "1upHealth vs Particle Health",
        "url": "https://www.anchorterminal.com/compare/1uphealth-vs-particle-health"
      },
      {
        "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/1uphealth-vs-zus-health.json",
        "title": "1upHealth vs Zus Health",
        "url": "https://www.anchorterminal.com/compare/1uphealth-vs-zus-health"
      },
      {
        "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-medplum.json",
        "title": "Medblocks vs Medplum",
        "url": "https://www.anchorterminal.com/compare/medblocks-vs-medplum"
      },
      {
        "json": "https://www.anchorterminal.com/compare/1uphealth-vs-validic.json",
        "title": "1upHealth vs Validic Inform",
        "url": "https://www.anchorterminal.com/compare/1uphealth-vs-validic"
      }
    ],
    "scores": [
      {
        "1uphealth": 52,
        "by": 23,
        "edge": "medplum",
        "key": "reliability",
        "medplum": 75,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "1uphealth": 50,
        "by": 32,
        "edge": "medplum",
        "key": "schema",
        "medplum": 82,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "1uphealth": 32,
        "by": 41,
        "edge": "medplum",
        "key": "ergonomics",
        "medplum": 73,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "1uphealth": 63,
        "by": 11,
        "edge": "medplum",
        "key": "security",
        "medplum": 74,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "1uphealth": 20,
        "by": 5,
        "edge": "medplum",
        "key": "payments",
        "medplum": 25,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "1uphealth": 37,
        "by": 56,
        "edge": "medplum",
        "key": "maintenance",
        "medplum": 93,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "1uphealth": 72,
        "by": 0,
        "edge": "",
        "key": "transparency",
        "medplum": 72,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Medplum scores 68.7 (B) on agent readiness against 1upHealth's 46.8 (D), and leads in 6 of 7 scored categories. Both do patient record retrieval.",
    "verdicts": {
      "1uphealth": "Self-serve Dev Portal sandbox clients and a demo health plan let an app test the CMS Patient Access, Provider Access and Payer-to-Payer FHIR APIs, backed by HITRUST and SOC 2 Type 2. No rate limits, error formats or dated releases are documented, and the Patient Access OAuth step needs the member in a browser.",
      "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/1uphealth-vs-medplum",
    "json": "https://www.anchorterminal.com/compare/1uphealth-vs-medplum.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/1uphealth-vs-medplum.md",
    "slim": "https://www.anchorterminal.com/compare/1uphealth-vs-medplum.min.md"
  },
  "markdown": "Medplum scores 68.7 (B) on agent readiness against 1upHealth's 46.8 (D), and leads in 6 of 7 scored categories. Both do patient record retrieval.\n\n- 1upHealth: grade D, 46.8/100, rank #903 of 1076. Markdown https://www.anchorterminal.com/tools/1uphealth.md · JSON https://www.anchorterminal.com/api/v1/tools/1uphealth.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### 1upHealth (D)\n\nGood for: Consumer and care apps that read a member's health plan claims and clinical data under the CMS rules, and payers meeting those rules.\n\nWatch for: No rate limits, 429 handling or error formats documented\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 52\n- Schema \u0026 documentation, 82 against 50\n- Agent ergonomics, 73 against 32\n- Security \u0026 auth, 74 against 63\n- Payments \u0026 pricing, 25 against 20\n- Maintenance \u0026 community, 93 against 37\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\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 | 1upHealth | Medplum | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 52 | 75 | Medplum +23 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 50 | 82 | Medplum +32 |\n| Agent ergonomics | 13% (16.2 this run) | 32 | 73 | Medplum +41 |\n| Security \u0026 auth | 14% (17.5 this run) | 63 | 74 | Medplum +11 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 25 | Medplum +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 37 | 93 | Medplum +56 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 72 | 72 | even |\n| Negative events | ≤15 | 0 | -2 | |\n| **Total** | | **46.8 · D** | **68.7 · B** | |\n\n## Facts side by side\n\n| Fact | 1upHealth | Medplum |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | 1upHealth, Inc. | Orangebot, Inc. (dba Medplum) |\n| Hosted endpoint | no (local only) | `https://api.medplum.com/mcp/stream` |\n| Transports | HTTP | HTTP, Streamable HTTP, SSE (legacy) |\n| Auth | OAuth | OAuth |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | Proprietary service under 1upHealth's Terms of Service (effective 1 August 2024) | 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 | none | 3 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `com.medplum/mcp` |\n| Last release | none | 2026-10-08 |\n| Terms last updated | no date given | 2023-04-11 |\n| Privacy policy last updated | 2026-06-25 | 2022-04-05 |\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 | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | none | 2.7k stars, 270k npm/wk |\n\n## Verdicts\n\n**1upHealth.** Self-serve Dev Portal sandbox clients and a demo health plan let an app test the CMS Patient Access, Provider Access and Payer-to-Payer FHIR APIs, backed by HITRUST and SOC 2 Type 2. No rate limits, error formats or dated releases are documented, and the Patient Access OAuth step needs the member in a browser.\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### 1upHealth\n\n1. Hand the Patient Access sign-in to the member, who must authorise in the health plan's auth app\n2. Exchange the authorisation code within five minutes, and refresh before the 15-minute token expires\n3. Email payer-patient-access@1up.health with the client ID to get the app synced to the demo environment\n4. Expect only claims and coverage resources from some payers, and read /r4/metadata first\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, 1upHealth or Medplum?\n\nMedplum scores 68.7 (B) on agent readiness against 1upHealth's 46.8 (D), and leads in 6 of 7 scored categories.\n\n### Do 1upHealth and Medplum need an API key?\n\nBoth use an OAuth sign-in.\n\n### Can an agent call 1upHealth and Medplum without installing anything?\n\nNo hosted endpoint is listed for 1upHealth. Medplum has a hosted endpoint at https://api.medplum.com/mcp/stream.\n\n### Are 1upHealth and Medplum open source?\n\nNo open-source release is listed for 1upHealth. 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/1uphealth-vs-medplum.json, and with the fewest tokens: https://www.anchorterminal.com/compare/1uphealth-vs-medplum.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"1uphealth\", \"b\": \"medplum\"}`. From a terminal: `anchor compare 1uphealth medplum`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/1uphealth.json and https://www.anchorterminal.com/api/v1/tools/medplum.json\n\n## Other comparisons with 1upHealth or Medplum\n\n- [1upHealth vs ROOK](https://www.anchorterminal.com/compare/1uphealth-vs-rook.md)\n- [1upHealth vs Terra API](https://www.anchorterminal.com/compare/1uphealth-vs-terra.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 Aidbox](https://www.anchorterminal.com/compare/1uphealth-vs-aidbox.md)\n- [1upHealth vs Health Gorilla](https://www.anchorterminal.com/compare/1uphealth-vs-health-gorilla.md)\n- [1upHealth vs Medblocks](https://www.anchorterminal.com/compare/1uphealth-vs-medblocks.md)\n- [1upHealth vs Metriport Medical API](https://www.anchorterminal.com/compare/1uphealth-vs-metriport.md)\n- [1upHealth vs Particle Health](https://www.anchorterminal.com/compare/1uphealth-vs-particle-health.md)\n- [1upHealth vs Redox](https://www.anchorterminal.com/compare/1uphealth-vs-redox.md)\n- [1upHealth vs Zus Health](https://www.anchorterminal.com/compare/1uphealth-vs-zus-health.md)\n- [Health Gorilla vs Medplum](https://www.anchorterminal.com/compare/health-gorilla-vs-medplum.md)\n- [Medblocks vs Medplum](https://www.anchorterminal.com/compare/medblocks-vs-medplum.md)\n- [1upHealth vs Validic Inform](https://www.anchorterminal.com/compare/1uphealth-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": "1upHealth vs Medplum",
        "url": ""
      }
    ],
    "description": "Medplum scores 68.7 (B) to 1upHealth's 46.8 (D) for patient record retrieval. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "1upHealth D 46.8",
      "Medplum B 68.7",
      "scores"
    ],
    "h1": "1upHealth vs Medplum",
    "image": "https://www.anchorterminal.com/assets/og/compare-1uphealth-vs-medplum.png",
    "path": "/compare/1uphealth-vs-medplum",
    "published": "2026-10-01",
    "section": "tools",
    "title": "1upHealth vs Medplum for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-14",
    "url": "https://www.anchorterminal.com/compare/1uphealth-vs-medplum"
  },
  "tokens": {
    "markdown": 2300,
    "slim": 730
  },
  "version": 1
}
