{"openapi":"3.1.0","info":{"title":"NCBI Entrez (PubMed) (BYOK) API","version":"0.1.0","description":"NCBI Entrez (PubMed) (BYOK) lets an AI assistant read your own NCBI Entrez (PubMed) data through the NCBI Entrez (PubMed) API with a key you supply (NCBI API key). Read-only: 5 tools (search_records, get_summaries, list_databases, get_database_info, find_links). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-ncbieutils.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-ncbieutils/docs"},"termsOfService":"https://connectorbay.com/byok-ncbieutils/terms"},"servers":[{"url":"https://byok-ncbieutils.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-ncbieutils/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/search_records":{"post":{"operationId":"search_records","summary":"Search an Entrez database (PubMed by default) with an Entrez query such as 'covid[Title] AND 2023[pdat]' and list the ma","description":"Search an Entrez database (PubMed by default) with an Entrez query such as 'covid[Title] AND 2023[pdat]' and list the matching record ids (PMIDs for PubMed), the total count and how the query was interpreted. For PubMed only the first 10,000 matches can be paged. Keyed requests may make up to 10 per second (3 per second without a key). Use for \"Find PubMed articles about CRISPR in sickle cell disease from 2023\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"description":"Entrez search query; field tags like [Title], [Author], [MeSH Terms], [pdat] and AND/OR/NOT are supported.","maxLength":500,"title":"Term","type":"string"},"db":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"pubmed","description":"Entrez database, for example pubmed, pmc, gene, protein, nuccore, taxonomy, clinvar or mesh (list_databases shows all).","title":"Db"},"retmax":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Number of ids to return (1 to 200, default 20).","title":"Retmax"},"retstart":{"anyOf":[{"maximum":9999,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first id to return, for paging (default 0).","title":"Retstart"},"sort":{"anyOf":[{"enum":["relevance","pub_date","Author","JournalName"],"type":"string"},{"type":"null"}],"default":null,"description":"PubMed order: relevance, pub_date, Author or JournalName (default depends on the database).","title":"Sort"},"datetype":{"anyOf":[{"enum":["pdat","edat","mdat"],"type":"string"},{"type":"null"}],"default":null,"description":"Which date the range applies to: pdat (publication), edat (entry), mdat (modification).","title":"Datetype"},"mindate":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the date range as YYYY, YYYY/MM or YYYY/MM/DD; needs maxdate and datetype.","title":"Mindate"},"maxdate":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"End of the date range as YYYY, YYYY/MM or YYYY/MM/DD; needs mindate and datetype.","title":"Maxdate"},"retmode":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; the answer is JSON.","title":"Retmode"}},"required":["term"],"title":"search_recordsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_summaries":{"post":{"operationId":"get_summaries","summary":"Get document summaries (title, authors, journal, date and identifiers for PubMed) for up to 50 record ids of one Entrez ","description":"Get document summaries (title, authors, journal, date and identifiers for PubMed) for up to 50 record ids of one Entrez database. Keyed requests may make up to 10 per second (3 per second without a key). Use for \"Summarize PubMed records 37000001 and 37000002\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Comma-separated record ids (PMIDs for PubMed), up to 50, for example 37000001,37000002.","maxLength":500,"title":"Id","type":"string"},"db":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"pubmed","description":"Entrez database, for example pubmed, pmc, gene, protein, nuccore, taxonomy, clinvar or mesh (list_databases shows all).","title":"Db"},"retmode":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; the answer is JSON.","title":"Retmode"}},"required":["id"],"title":"get_summariesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_databases":{"post":{"operationId":"list_databases","summary":"List the names of all Entrez databases that the E-utilities can query. Keyed requests may make up to 10 per second (3 pe","description":"List the names of all Entrez databases that the E-utilities can query. Keyed requests may make up to 10 per second (3 per second without a key). Use for \"Which NCBI Entrez databases can I search\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"retmode":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; the answer is JSON.","title":"Retmode"}},"title":"list_databasesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_database_info":{"post":{"operationId":"get_database_info","summary":"Describe one Entrez database: record count, last update, searchable fields with their tags, and link names. Keyed reques","description":"Describe one Entrez database: record count, last update, searchable fields with their tags, and link names. Keyed requests may make up to 10 per second (3 per second without a key). Use for \"Which search fields does the pubmed database have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"db":{"description":"Entrez database name, for example pubmed.","maxLength":40,"title":"Db","type":"string"},"retmode":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; the answer is JSON.","title":"Retmode"}},"required":["db"],"title":"get_database_infoArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/find_links":{"post":{"operationId":"find_links","summary":"Find records linked to given records, within or across Entrez databases (for example PubMed articles related to a PMID, ","description":"Find records linked to given records, within or across Entrez databases (for example PubMed articles related to a PMID, or the gene records of an article). Keyed requests may make up to 10 per second (3 per second without a key). Use for \"Which articles are related to PubMed record 37000001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Comma-separated record ids in dbfrom, up to 50.","maxLength":500,"title":"Id","type":"string"},"dbfrom":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"pubmed","description":"Database of the given ids, for example pubmed.","title":"Dbfrom"},"db":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"pubmed","description":"Database to find links in; use the same as dbfrom for related records, or another such as gene or pmc.","title":"Db"},"cmd":{"anyOf":[{"enum":["neighbor","neighbor_score","acheck","ncheck"],"type":"string"},{"type":"null"}],"default":"neighbor","description":"neighbor (linked ids), neighbor_score (linked ids with relatedness score), acheck (which link types exist) or ncheck (does a link exist).","title":"Cmd"},"linkname":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Optional link name such as pubmed_pubmed or pubmed_gene; overrides db and dbfrom.","title":"Linkname"},"retmode":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; the answer is JSON.","title":"Retmode"}},"required":["id"],"title":"find_linksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}