ModMed Capability Statement API

Capability Statement

Operations 2

GET /metadata server-capabilities: Fetch the server FHIR CapabilityStatement
GET /fhir/v2/metadata server-capabilities: Fetch the server FHIR CapabilityStatement

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/modernizing-medicine-capability-statement-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

modernizing-medicine-capability-statement-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Modernizing Medicine Capability Statement API
  version: '1.0'
  description: 'Operations tagged Capability Statement across 2 of this provider''s published API definitions: modernizing-medicine-certified-fhir-api-openapi.json, modernizing-medicine-ema-proprietary-api-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://fhirmp.mmi.prod.fhir.ema-api.com/fhir/r4
  description: EMA Certified FHIR API
  variables:
    firm:
      default: fhirmp
      description: Your firm subdomain (e.g. fhirmp, auraderm). Find yours at https://mm-fhir-endpoint-display.prod.fhir.ema-api.com/
- url: https://stage.ema-api.com/ema-dev/firm/apiportal/ema
tags:
- name: Capability Statement
  description: Capability Statement
paths:
  /metadata:
    servers:
    - url: https://fhirmp.mmi.prod.fhir.ema-api.com/fhir/r4
      description: EMA Certified FHIR API
      variables:
        firm:
          default: fhirmp
          description: Your firm subdomain (e.g. fhirmp, auraderm). Find yours at https://mm-fhir-endpoint-display.prod.fhir.ema-api.com/
    get:
      tags:
      - Capability Statement
      summary: 'server-capabilities: Fetch the server FHIR CapabilityStatement'
      responses:
        '200':
          description: Success
          content:
            application/fhir+json:
              schema:
                $ref: '#/components/schemas/FHIR-JSON-RESOURCE'
              example: "{\n  \"resourceType\": \"CapabilityStatement\"\n}"
            application/fhir+xml:
              schema:
                $ref: '#/components/schemas/FHIR-XML-RESOURCE'
              example: <CapabilityStatement xmlns="http://hl7.org/fhir"/>
      security: []
  /fhir/v2/metadata:
    servers:
    - url: https://stage.ema-api.com/ema-dev/firm/apiportal/ema
    get:
      tags:
      - Capability Statement
      summary: 'server-capabilities: Fetch the server FHIR CapabilityStatement'
      responses:
        '200':
          description: Success
          content:
            application/fhir+json:
              schema:
                $ref: '#/components/schemas/FHIR-JSON-RESOURCE'
              example: "{\n  \"resourceType\": \"CapabilityStatement\"\n}"
            application/fhir+xml:
              schema:
                $ref: '#/components/schemas/FHIR-XML-RESOURCE'
              example: <CapabilityStatement xmlns="http://hl7.org/fhir"/>
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
      - BearerAuth: []
        ApiKeyAuth: []
components:
  responses:
    Forbidden:
      description: FORBIDDEN
    TooManyRequests:
      description: TOO MANY REQUESTS - Request was rate limited (1000 calls/min default); please retry
    UnprocessableEntity:
      description: UNPROCESSABLE ENTITY - Request could not be processed; typically a validation error
    NotFound:
      description: NOT FOUND
    BadRequest:
      description: BAD REQUEST - The request was bad, often due to a missing required parameter
    ServerError:
      description: SERVER ERROR - Internal Server Error
    Unauthorized:
      description: NOT AUTHORIZED - Authentication error; this token is not allowed access to the API
  schemas:
    FHIR-JSON-RESOURCE:
      type: object
      description: A FHIR resource
    FHIR-XML-RESOURCE:
      type: object
      description: A FHIR resource
  securitySchemes:
    smartOnFhir:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://fhirmp.mmi.prod.fhir.ema-api.com/fhir/r4/auth/realms/fhir/protocol/openid-connect/auth
          tokenUrl: https://fhirmp.mmi.prod.fhir.ema-api.com/fhir/r4/auth/realms/fhir/protocol/openid-connect/token
          scopes:
            openid: OpenID Connect (auto-granted)
            fhirUser: FHIR reference to the authenticated practitioner
            profile: Standard OIDC profile claims
            launch/patient: Request patient context in the token
            offline_access: Request a long-lived refresh token
            patient/AllergyIntolerance.rs: Read/search AllergyIntolerance (patient context)
            patient/CarePlan.rs: Read/search CarePlan (patient context)
            patient/CareTeam.rs: Read/search CareTeam (patient context)
            patient/Condition.rs: Read/search Condition (patient context)
            patient/Coverage.rs: Read/search Coverage (patient context)
            patient/Device.rs: Read/search Device (patient context)
            patient/DiagnosticReport.rs: Read/search DiagnosticReport (patient context)
            patient/DocumentReference.rs: Read/search DocumentReference (patient context)
            patient/Encounter.rs: Read/search Encounter (patient context)
            patient/Goal.rs: Read/search Goal (patient context)
            patient/Immunization.rs: Read/search Immunization (patient context)
            patient/Location.rs: Read/search Location (patient context)
            patient/Medication.rs: Read/search Medication (patient context)
            patient/MedicationRequest.rs: Read/search MedicationRequest (patient context)
            patient/Observation.rs: Read/search Observation (patient context)
            patient/Organization.rs: Read/search Organization (patient context)
            patient/Patient.rs: Read/search Patient (patient context)
            patient/Practitioner.rs: Read/search Practitioner (patient context)
            patient/PractitionerRole.rs: Read/search PractitionerRole (patient context)
            patient/Procedure.rs: Read/search Procedure (patient context)
            patient/Provenance.rs: Read/search Provenance (patient context)
            patient/RelatedPerson.rs: Read/search RelatedPerson (patient context)
            patient/ServiceRequest.rs: Read/search ServiceRequest (patient context)
            user/AllergyIntolerance.rs: Read/search AllergyIntolerance (user context)
            user/CarePlan.rs: Read/search CarePlan (user context)
            user/CareTeam.rs: Read/search CareTeam (user context)
            user/Condition.rs: Read/search Condition (user context)
            user/Coverage.rs: Read/search Coverage (user context)
            user/Device.rs: Read/search Device (user context)
            user/DiagnosticReport.rs: Read/search DiagnosticReport (user context)
            user/DocumentReference.rs: Read/search DocumentReference (user context)
            user/Encounter.rs: Read/search Encounter (user context)
            user/Goal.rs: Read/search Goal (user context)
            user/Immunization.rs: Read/search Immunization (user context)
            user/Location.rs: Read/search Location (user context)
            user/Medication.rs: Read/search Medication (user context)
            user/MedicationRequest.rs: Read/search MedicationRequest (user context)
            user/Observation.rs: Read/search Observation (user context)
            user/Organization.rs: Read/search Organization (user context)
            user/Patient.rs: Read/search Patient (user context)
            user/Practitioner.rs: Read/search Practitioner (user context)
            user/PractitionerRole.rs: Read/search PractitionerRole (user context)
            user/Procedure.rs: Read/search Procedure (user context)
            user/Provenance.rs: Read/search Provenance (user context)
            user/RelatedPerson.rs: Read/search RelatedPerson (user context)
            user/ServiceRequest.rs: Read/search ServiceRequest (user context)
            system/AllergyIntolerance.rs: Read/search AllergyIntolerance (system/bulk context)
            system/CarePlan.rs: Read/search CarePlan (system/bulk context)
            system/CareTeam.rs: Read/search CareTeam (system/bulk context)
            system/Condition.rs: Read/search Condition (system/bulk context)
            system/Coverage.rs: Read/search Coverage (system/bulk context)
            system/Device.rs: Read/search Device (system/bulk context)
            system/DiagnosticReport.rs: Read/search DiagnosticReport (system/bulk context)
            system/DocumentReference.rs: Read/search DocumentReference (system/bulk context)
            system/Encounter.rs: Read/search Encounter (system/bulk context)
            system/Goal.rs: Read/search Goal (system/bulk context)
            system/Immunization.rs: Read/search Immunization (system/bulk context)
            system/Location.rs: Read/search Location (system/bulk context)
            system/Medication.rs: Read/search Medication (system/bulk context)
            system/MedicationRequest.rs: Read/search MedicationRequest (system/bulk context)
            system/Observation.rs: Read/search Observation (system/bulk context)
            system/Organization.rs: Read/search Organization (system/bulk context)
            system/Patient.rs: Read/search Patient (system/bulk context)
            system/Practitioner.rs: Read/search Practitioner (system/bulk context)
            system/PractitionerRole.rs: Read/search PractitionerRole (system/bulk context)
            system/Procedure.rs: Read/search Procedure (system/bulk context)
            system/Provenance.rs: Read/search Provenance (system/bulk context)
            system/RelatedPerson.rs: Read/search RelatedPerson (system/bulk context)
            system/ServiceRequest.rs: Read/search ServiceRequest (system/bulk context)
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'OAuth2 access token (JWT). Obtain it via the legacy `password` grant or the new `client_credentials` flow (see the **Authentication** guide), then send as `Authorization: Bearer <token>`.'
      x-default: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhN2NiZmYwZWUxYjk0ODkwOWMxZmQzYzk3ODhlZjc1NCIsImlzcyI6Im1vZG1lZCIsInN1YiI6ImZoaXJfUWZMbG8iLCJ1cmxQcmVmaXgiOiJhcGlwb3J0YWwiLCJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJ2ZW5kb3IiOiJmaGlyX1FmTGxvQGFwaXBvcnRhbCIsInBvbCI6ImNoYW5nZW1lIn0.f0VcA3R56IuAvdbPhInqUbhmEwk-tiOIeELVpTZCUZ8
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: 'Shared **sandbox** API key (public sandbox only). Send as the `x-api-key` header.


        `Zt9tXPIgz17uxEU6gkZPWa3ZAFhZOqm04oEDHC1f`'
      x-default: Zt9tXPIgz17uxEU6gkZPWa3ZAFhZOqm04oEDHC1f
x-refined-from:
- modernizing-medicine-certified-fhir-api-openapi.json
- modernizing-medicine-ema-proprietary-api-openapi.json