# `pubmed__pubmed_europepmc_search`

**Pubmed Europepmc Search**

Search Europe PMC, a broad open-access biomedical corpus. Surfaces preprints (\`source: PPR\`), patents (\`source: PAT\`), Agricola (\`source: AGR\`), plus everything in PubMed (\`MED\`) and PMC. Use when additional coverage is needed — preprints and EPMC-only OA records are the typical recovery. Paginate via \`cursorMark\`. Defaults to \`MED\`, \`PMC\`, and \`PPR\`; pass \`sources\` to include \`PAT\` / \`AGR\`. Abstracts arrive as a bounded \`abstractSnippet\` with \`abstractTruncated\` marking the cut ones — pass a hit’s \`source\` and \`epmcId\` to \`pubmed_europepmc_fetch\` for the complete abstract.

- Server: [PubMed](https://gateway.mcpharbor.dev/docs/servers/pubmed) (`dev.mcpharbor.gateway/pubmed`)
- Price per call: $0.0001 (100 micro-USD); only tools/call is charged
- Endpoint: `https://gateway.mcpharbor.dev/mcp` or `https://gateway.mcpharbor.dev/mcp/pubmed`
- Upstream tool: exposed by the provider; called through this gateway as `pubmed__pubmed_europepmc_search`
- Provider terms: <https://www.ncbi.nlm.nih.gov/books/NBK25497/> (verified 2026-09-19)
- Upstream API documentation: <https://www.ncbi.nlm.nih.gov/books/NBK25497/>
- Rate limit: 150 requests per minute
- Attribution required: NCBI's Disclaimer and Copyright notice must be evident to users of your product

## Parameters

- `cursorMark` (string, optional): Pagination cursor. Use \`*\` (default) for the first page; pass the previous response's \`nextCursorMark\` for subsequent pages. Default: `*`.
- `pageSize` (integer, optional): Results per page. Max 100 per EPMC API. Default: `25`.
- `query` (string, required): Europe PMC search query. Supports field tokens like \`AUTH:"\<name\>"\`, \`JOURNAL:"\<title\>"\`, \`TITLE:"\<words\>"\`, \`PUB_YEAR:\[2020 TO 2024\]\`, \`DOI:"..."\`, \`EXT_ID:\<pmid\> AND SRC:MED\`, \`PMCID:PMC\<digits\>\`...
- `resultType` (string, optional): \`core\` returns abstract, IDs, dates, license; \`lite\` is a smaller payload with IDs and titles only. One of: `core`, `lite`. Default: `core`.
- `sort` (string, optional): Optional EPMC sort: \`\<field\> asc\|desc\`. Documented sortable fields: \`P_PDATE_D\` (publication date), \`CITED\` (citation count), \`AUTH_FIRST\` (first author surname), \`PUB_YEAR\` (publication year). Ex...
- `sources` (array, optional): Filter to specific EPMC sources. Defaults to MED, PMC, PPR when omitted. Pass an explicit array including PAT or AGR to broaden coverage. Allowed values: MED, PMC, PPR, PAT, AGR.

## Example call

Request headers and body:

```http
POST /mcp HTTP/1.1
Host: gateway.mcpharbor.dev
Authorization: Bearer <your gateway API key>
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: pubmed__pubmed_europepmc_search
```

```json
{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "_meta": {
      "io.modelcontextprotocol/clientCapabilities": {},
      "io.modelcontextprotocol/clientInfo": {
        "name": "example-agent",
        "version": "1.0.0"
      },
      "io.modelcontextprotocol/protocolVersion": "2026-07-28"
    },
    "arguments": {
      "query": "example"
    },
    "name": "pubmed__pubmed_europepmc_search"
  }
}
```

A successful response:

```json
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "_meta": {
      "dev.mcpharbor.gateway/call": {
        "chargedMicroUsd": 100,
        "id": "<the id of this charge>"
      }
    },
    "content": [
      {
        "text": "<whatever the upstream tool returned>",
        "type": "text"
      }
    ],
    "resultType": "complete"
  }
}
```

This call costs $0.0001 (100 micro-USD). Reading this page and listing the tool cost nothing.
The `dev.mcpharbor.gateway/call` record in the result is the receipt for that charge. Each
POST is metered separately, so sending the same call again buys another one: see
[agent.txt](https://gateway.mcpharbor.dev/agent.txt), section 7, before retrying.

## Attribution

This provider requires the attribution below wherever you use results from its tools.
Reproduce it verbatim:

> NCBI's Disclaimer and Copyright notice must be evident to users of your product

## Tool definition

Exactly as `tools/list` returns it (free):

```json
{
  "_meta": {
    "dev.mcpharbor.gateway/pricing": {
      "currency": "USD",
      "pricePerCallMicroUsd": 100
    }
  },
  "annotations": {
    "openWorldHint": true,
    "readOnlyHint": true
  },
  "description": "Search Europe PMC, a broad open-access biomedical corpus. Surfaces preprints (`source: PPR`), patents (`source: PAT`), Agricola (`source: AGR`), plus everything in PubMed (`MED`) and PMC. Use when additional coverage is needed — preprints and EPMC-only OA records are the typical recovery. Paginate via `cursorMark`. Defaults to `MED`, `PMC`, and `PPR`; pass `sources` to include `PAT` / `AGR`. Abstracts arrive as a bounded `abstractSnippet` with `abstractTruncated` marking the cut ones — pass a hit’s `source` and `epmcId` to `pubmed_europepmc_fetch` for the complete abstract.",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "additionalProperties": false,
    "properties": {
      "cursorMark": {
        "default": "*",
        "description": "Pagination cursor. Use `*` (default) for the first page; pass the previous response's `nextCursorMark` for subsequent pages.",
        "type": "string"
      },
      "pageSize": {
        "default": 25,
        "description": "Results per page. Max 100 per EPMC API.",
        "maximum": 100,
        "minimum": 1,
        "type": "integer"
      },
      "query": {
        "description": "Europe PMC search query. Supports field tokens like `AUTH:\"<name>\"`, `JOURNAL:\"<title>\"`, `TITLE:\"<words>\"`, `PUB_YEAR:[2020 TO 2024]`, `DOI:\"...\"`, `EXT_ID:<pmid> AND SRC:MED`, `PMCID:PMC<digits>`. Identifier tokens combined with `AND SRC:` must be unquoted — the quoted form matches nothing. Free text is matched broadly across abstract/title/keywords.",
        "minLength": 1,
        "type": "string"
      },
      "resultType": {
        "default": "core",
        "description": "`core` returns abstract, IDs, dates, license; `lite` is a smaller payload with IDs and titles only.",
        "enum": [
          "core",
          "lite"
        ],
        "type": "string"
      },
      "sort": {
        "description": "Optional EPMC sort: `<field> asc|desc`. Documented sortable fields: `P_PDATE_D` (publication date), `CITED` (citation count), `AUTH_FIRST` (first author surname), `PUB_YEAR` (publication year). Examples: `P_PDATE_D desc` (newest first), `CITED desc` (most cited). Omit for relevance ranking. Fields outside the documented set are rejected by EPMC. Note: `P_PDATE_D` is ignored for preprint-only (`sources: [\"PPR\"]`) result sets — preprints have no populated publication date, so use `PUB_YEAR` to order preprints by date.",
        "type": "string"
      },
      "sources": {
        "description": "Filter to specific EPMC sources. Defaults to MED, PMC, PPR when omitted. Pass an explicit array including PAT or AGR to broaden coverage. Allowed values: MED, PMC, PPR, PAT, AGR.",
        "items": {
          "enum": [
            "MED",
            "PMC",
            "PPR",
            "PAT",
            "AGR"
          ],
          "type": "string"
        },
        "minItems": 1,
        "type": "array"
      }
    },
    "required": [
      "query"
    ],
    "type": "object"
  },
  "name": "pubmed__pubmed_europepmc_search",
  "outputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "additionalProperties": false,
    "anyOf": [
      {
        "not": {
          "required": [
            "error"
          ]
        },
        "required": [
          "hits",
          "cursorMark",
          "searchUrl",
          "query",
          "totalCount",
          "appliedSources"
        ]
      },
      {
        "required": [
          "error"
        ]
      }
    ],
    "properties": {
      "appliedSources": {
        "description": "Sources the query was filtered against (defaults applied)",
        "items": {
          "enum": [
            "MED",
            "PMC",
            "PPR",
            "PAT",
            "AGR"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "cursorMark": {
        "description": "Cursor used for this response (echoed from the request)",
        "type": "string"
      },
      "error": {
        "additionalProperties": {},
        "description": "Present when the call failed. Absent on success.",
        "properties": {
          "code": {
            "description": "JSON-RPC error code for this failure.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "data": {
            "additionalProperties": {},
            "properties": {
              "reason": {
                "description": "Machine-readable failure mode. Declared by this tool: `europepmc_unreachable`: Europe PMC was unreachable after all retry attempts. `europepmc_invalid_response`: Europe PMC returned a body that could not be parsed (invalid JSON or XML). `europepmc_invalid_input`: Europe PMC rejected the request input (empty query, unknown sort field, malformed parameter). `europepmc_disabled`: Europe PMC service is disabled via EUROPEPMC_ENABLED=false. Other values are possible when a failure originates below the handler.",
                "examples": [
                  "europepmc_unreachable",
                  "europepmc_invalid_response",
                  "europepmc_invalid_input",
                  "europepmc_disabled"
                ],
                "type": "string"
              },
              "recovery": {
                "additionalProperties": {},
                "description": "Actionable next step for the caller.",
                "properties": {
                  "hint": {
                    "type": "string"
                  }
                },
                "required": [
                  "hint"
                ],
                "type": "object"
              },
              "retryable": {
                "description": "Whether retrying may succeed.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "message": {
            "description": "Human-readable description of what went wrong.",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "hits": {
        "description": "Matching Europe PMC records, in the order EPMC returned them",
        "items": {
          "additionalProperties": false,
          "description": "Single Europe PMC record returned by the search",
          "properties": {
            "abstractSnippet": {
              "description": "First 400 characters of the abstract as display-ready plain text — JATS/HTML markup stripped and HTML entities decoded — when `resultType: \"core\"` is requested, with a trailing … appended when the abstract was cut. Check `abstractTruncated` before treating it as the whole abstract.",
              "type": "string"
            },
            "abstractTruncated": {
              "description": "Whether `abstractSnippet` was cut short of the full abstract. Retrieve the complete text with `pubmed_europepmc_fetch` using this record’s `source` and `epmcId`. Present whenever `abstractSnippet` is; omitted when Europe PMC carries no abstract.",
              "type": "boolean"
            },
            "authors": {
              "description": "Formatted author string as display-ready plain text — JATS/HTML markup stripped and HTML entities decoded.",
              "type": "string"
            },
            "citedByCount": {
              "description": "Citation count reported by Europe PMC",
              "type": "number"
            },
            "doi": {
              "description": "DOI when present, cased as Europe PMC reports it. DOIs are case-insensitive by spec and no case normalization is applied here, so the same DOI can arrive in a different case from `pubmed_fetch_articles` (Europe PMC `10.1056/nejmoa2212948`, NCBI `10.1056/NEJMoa2212948`) — a byte-for-byte comparison across the two reports a false mismatch.",
              "type": "string"
            },
            "epmcId": {
              "description": "Europe PMC's internal record id. Pass it with this hit's `source` to `pubmed_europepmc_fetch` for the complete record. Europe PMC's `fullTextXML` is keyed on `pmcId`, not on this id, so records without a PMC counterpart have no full text to fetch.",
              "type": "string"
            },
            "epmcUrl": {
              "description": "Europe PMC article URL",
              "type": "string"
            },
            "firstPublicationDate": {
              "description": "First publication date (ISO YYYY-MM-DD)",
              "type": "string"
            },
            "hasFullTextXml": {
              "description": "Whether Europe PMC publishes a fullTextXML for this record. Derived from `inPMC` — only records with a PMC counterpart have JATS via EPMC; preprints (`PPR`) and MED-only records return false.",
              "type": "boolean"
            },
            "isOpenAccess": {
              "description": "Whether EPMC reports the record as open access",
              "type": "boolean"
            },
            "journal": {
              "description": "Journal title as display-ready plain text — JATS/HTML markup stripped and HTML entities decoded.",
              "type": "string"
            },
            "pmcId": {
              "description": "PMC ID when present in PMC",
              "type": "string"
            },
            "pmid": {
              "description": "PMID when present in PubMed",
              "type": "string"
            },
            "pubYear": {
              "description": "Publication year",
              "type": "string"
            },
            "source": {
              "description": "Europe PMC source — `MED` (PubMed), `PMC` (PubMed Central), `PPR` (preprint), `PAT` (patent), `AGR` (Agricola)",
              "enum": [
                "MED",
                "PMC",
                "PPR",
                "PAT",
                "AGR"
              ],
              "type": "string"
            },
            "title": {
              "description": "Article title as display-ready plain text — JATS/HTML markup stripped and HTML entities decoded.",
              "type": "string"
            }
          },
          "required": [
            "source",
            "epmcId",
            "epmcUrl"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "nextCursorMark": {
        "description": "Cursor to pass back as `cursorMark` for the next page. Absent on the final page.",
        "type": "string"
      },
      "notice": {
        "description": "Optional guidance when results are empty or paging overshot",
        "type": "string"
      },
      "query": {
        "description": "Effective query string echoed by Europe PMC",
        "type": "string"
      },
      "searchUrl": {
        "description": "Europe PMC's website search URL for this query",
        "type": "string"
      },
      "totalCount": {
        "description": "Total matching records across all pages",
        "type": "number"
      }
    },
    "type": "object"
  },
  "title": "Pubmed Europepmc Search"
}
```
