Skip to content
Eden Engine

Text-Mined Annotations for a Europe PMC Article of One Type

europepmcann/annotations-by-article

The text-mined annotations of one Europe PMC article for one annotation type (for example Gene_Proteins, Chemicals, Diseases, Organisms, Accession Numbers, Gene Ontology): the matched words with the words around them, the article section, the annotating source and ontology tags. The article is given as SOURCE:ID (MED:28585529, PMC:PMC5467160). Returns the first 50 annotations in the API's order with the full count and a `truncated` flag; an article id the service does not hold is refused as a validation error. Annotations from the Europe PMC Annotations API (EMBL-EBI), reduced to metadata and served by Eden Engine; not an official EMBL-EBI or Europe PMC product.

activeper callv1

Price

$0.0026 per call

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.

Data source

EMBL-EBI

Annotations from the Europe PMC Annotations API (EMBL-EBI); EMBL-EBI expects attribution (https://www.ebi.ac.uk/about/terms-of-use) and the annotated articles keep their own licences. Served by Eden Engine; not an official EMBL-EBI or Europe PMC product.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

Connect once and your AI can find and run this tool, and any other it needs.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "europepmcann/annotations-by-article" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "europepmcann/annotations-by-article" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "europepmcann/annotations-by-article", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "europepmcann/annotations-by-article", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.0026
Updated
Oct 25, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "articleId",
    "type"
  ],
  "properties": {
    "type": {
      "type": "string",
      "pattern": "^[A-Za-z_ -]{1,40}$",
      "description": "Annotation type, for example Gene_Proteins, Chemicals, Diseases, Organisms, Accession Numbers, Gene Ontology, Experimental Methods. An unknown type answers an empty annotation list."
    },
    "articleId": {
      "type": "string",
      "pattern": "^(MED|PMC|PAT|AGR|CBA|HIR|CTX|ETH|CIT|PPR|NBK):[A-Za-z0-9]{1,30}$",
      "description": "Article as SOURCE:ID with an upper-case source (MED PubMed, PMC PubMed Central, PPR preprint, PAT patent, AGR Agricola, CBA, HIR, CTX, ETH, CIT, NBK), for example MED:28585529 or PMC:PMC5467160."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "required": [
    "articleFound",
    "annotationCount",
    "truncated",
    "annotations"
  ],
  "properties": {
    "extId": {
      "type": [
        "string",
        "null"
      ],
      "description": "Article id within the source."
    },
    "pmcid": {
      "type": [
        "string",
        "null"
      ],
      "description": "PubMed Central id when the article has one."
    },
    "source": {
      "type": [
        "string",
        "null"
      ],
      "description": "Article source code, for example MED."
    },
    "truncated": {
      "type": "boolean",
      "description": "True when annotationCount is above 50 and only the first 50 are listed."
    },
    "annotations": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "exact",
          "type"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Annotation URI."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uri": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Ontology term URI."
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Ontology term name."
                }
              },
              "additionalProperties": true
            },
            "description": "Ontology tags, at most 10 per annotation."
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Annotation type, for example Gene_Proteins, Chemicals, Diseases, Organisms."
          },
          "exact": {
            "type": [
              "string",
              "null"
            ],
            "description": "The annotated words as they appear in the article."
          },
          "prefix": {
            "type": [
              "string",
              "null"
            ],
            "description": "The words just before the match, cut at 300 characters."
          },
          "postfix": {
            "type": [
              "string",
              "null"
            ],
            "description": "The words just after the match, cut at 300 characters."
          },
          "section": {
            "type": [
              "string",
              "null"
            ],
            "description": "Article section the match sits in, for example Methods."
          },
          "subType": {
            "type": [
              "string",
              "null"
            ],
            "description": "Finer type where the annotator gives one; null otherwise."
          },
          "provider": {
            "type": [
              "string",
              "null"
            ],
            "description": "The text-mining source that made the annotation."
          }
        },
        "additionalProperties": true
      }
    },
    "articleFound": {
      "type": "boolean",
      "description": "Always true in an answer: an id the service does not hold is refused as a validation error."
    },
    "fullTextIdList": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Full-text ids of the article, at most 10."
    },
    "annotationCount": {
      "type": "integer",
      "description": "How many annotations the service returned for the article and type."
    }
  },
  "description": "One article's annotations, capped at 50 in the API's own order.",
  "additionalProperties": true
}