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.
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
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.
// 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 doNot 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.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 25, 2026
Input and output schemas
Input schema
{
"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
{
"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
}