{"openapi":"3.1.0","info":{"title":"Crossref (BYOK) API","version":"0.1.0","description":"Crossref (BYOK) lets an AI assistant read your own Crossref data through the Crossref API with a key you supply (Crossref Metadata Plus API token). Read-only: 12 tools (search_works, get_work, get_doi_agency, search_journals, get_journal, list_journal_works, search_funders, get_funder, list_funder_works, search_members, get_member, get_prefix). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-crossref.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-crossref/docs"},"termsOfService":"https://connectorbay.com/byok-crossref/terms"},"servers":[{"url":"https://byok-crossref.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-crossref/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_works":{"post":{"operationId":"search_works","summary":"Search Crossref works (journal articles, books, preprints, datasets and more) by free text, author, journal and filters;","description":"Search Crossref works (journal articles, books, preprints, datasets and more) by free text, author, journal and filters; returns DOI, title, authors, journal, date, type, publisher and citation count. Use for \"Find recent journal articles about CRISPR base editing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text query over bibliographic fields, for example 'CRISPR base editing'.","title":"Query"},"query_author":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Match author names, for example 'Jennifer Doudna'.","title":"Query Author"},"query_container_title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Match the journal or book title, for example 'Nature'.","title":"Query Container Title"},"filter":{"anyOf":[{"maxLength":400,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated name:value filters, for example 'from-pub-date:2024-01,type:journal-article,has-abstract:true'. Different filters combine with AND.","title":"Filter"},"sort":{"anyOf":[{"enum":["score","updated","deposited","indexed","published","published-print","published-online","issued","is-referenced-by-count","references-count"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by score, updated, deposited, indexed, published, issued, is-referenced-by-count or references-count.","title":"Sort"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction, asc or desc (used with sort).","title":"Order"},"rows":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (0 to 1000; 0 returns only the totals; the default is 20).","title":"Rows"},"offset":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (up to 10000).","title":"Offset"},"select":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":"DOI,title,author,container-title,issued,type,publisher,is-referenced-by-count,URL","description":"Comma-separated work fields to return, for example 'DOI,title,author'. Leave the default for a compact record.","title":"Select"}},"title":"search_worksArguments","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_work":{"post":{"operationId":"get_work","summary":"Get the Crossref record of one work by DOI: title, authors, journal, dates, publisher, type, references count, funders, ","description":"Get the Crossref record of one work by DOI: title, authors, journal, dates, publisher, type, references count, funders, license and links. Use for \"Show the Crossref metadata for DOI 10.1038/nature14539\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"doi":{"description":"The DOI of the work, for example '10.1038/nature14539'.","maxLength":200,"title":"Doi","type":"string"}},"required":["doi"],"title":"get_workArguments","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_doi_agency":{"post":{"operationId":"get_doi_agency","summary":"Find which DOI registration agency (Crossref, DataCite and so on) a DOI belongs to. Use for \"Which registration agency i","description":"Find which DOI registration agency (Crossref, DataCite and so on) a DOI belongs to. Use for \"Which registration agency issued DOI 10.5281/zenodo.1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"doi":{"description":"The DOI to check, for example '10.1038/nature14539'.","maxLength":200,"title":"Doi","type":"string"}},"required":["doi"],"title":"get_doi_agencyArguments","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/search_journals":{"post":{"operationId":"search_journals","summary":"Search journals known to Crossref by title, with publisher, ISSNs and DOI counts. Use for \"Which journals in Crossref ha","description":"Search journals known to Crossref by title, with publisher, ISSNs and DOI counts. Use for \"Which journals in Crossref have 'marine biology' in the title\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Words from the journal title, for example 'marine biology'.","title":"Query"},"rows":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (0 to 1000; 0 returns only the totals; the default is 20).","title":"Rows"},"offset":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (up to 10000).","title":"Offset"}},"title":"search_journalsArguments","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_journal":{"post":{"operationId":"get_journal","summary":"Get one journal by ISSN: title, publisher, ISSNs, subjects and DOI counts per year. Use for \"Tell me about the journal w","description":"Get one journal by ISSN: title, publisher, ISSNs, subjects and DOI counts per year. Use for \"Tell me about the journal with ISSN 0028-0836\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"issn":{"description":"The journal ISSN, for example '0028-0836'.","maxLength":200,"title":"Issn","type":"string"}},"required":["issn"],"title":"get_journalArguments","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_journal_works":{"post":{"operationId":"list_journal_works","summary":"List works published in one journal (by ISSN), with the same search, filter and sort options as the general search. Use ","description":"List works published in one journal (by ISSN), with the same search, filter and sort options as the general search. Use for \"List the most cited articles in the journal with ISSN 0028-0836\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"issn":{"description":"The journal ISSN, for example '0028-0836'.","maxLength":200,"title":"Issn","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text query within the journal.","title":"Query"},"filter":{"anyOf":[{"maxLength":400,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated name:value filters, for example 'from-pub-date:2024-01,type:journal-article,has-abstract:true'. Different filters combine with AND.","title":"Filter"},"sort":{"anyOf":[{"enum":["score","updated","deposited","indexed","published","published-print","published-online","issued","is-referenced-by-count","references-count"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by score, updated, deposited, indexed, published, issued, is-referenced-by-count or references-count.","title":"Sort"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction, asc or desc (used with sort).","title":"Order"},"rows":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (0 to 1000; 0 returns only the totals; the default is 20).","title":"Rows"},"offset":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (up to 10000).","title":"Offset"},"select":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":"DOI,title,author,container-title,issued,type,publisher,is-referenced-by-count,URL","description":"Comma-separated work fields to return, for example 'DOI,title,author'. Leave the default for a compact record.","title":"Select"}},"required":["issn"],"title":"list_journal_worksArguments","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/search_funders":{"post":{"operationId":"search_funders","summary":"Search the Open Funder Registry by funder name; returns funder id, name, country and work counts. Use for \"What is the C","description":"Search the Open Funder Registry by funder name; returns funder id, name, country and work counts. Use for \"What is the Crossref funder id of the Wellcome Trust\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Part of the funder name, for example 'wellcome'.","title":"Query"},"rows":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (0 to 1000; 0 returns only the totals; the default is 20).","title":"Rows"},"offset":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (up to 10000).","title":"Offset"}},"title":"search_fundersArguments","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_funder":{"post":{"operationId":"get_funder","summary":"Get one funder by its registry id, including alternative names and sub-organizations. Use for \"Show funder 100000001 in ","description":"Get one funder by its registry id, including alternative names and sub-organizations. Use for \"Show funder 100000001 in the Crossref funder registry\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"funder_id":{"description":"The funder registry id (the part after 10.13039/), for example '100000001'.","maxLength":200,"title":"Funder Id","type":"string"}},"required":["funder_id"],"title":"get_funderArguments","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_funder_works":{"post":{"operationId":"list_funder_works","summary":"List works that acknowledge one funder, with search, filter and sort options. Use for \"List recent works funded by funde","description":"List works that acknowledge one funder, with search, filter and sort options. Use for \"List recent works funded by funder 100000001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"funder_id":{"description":"The funder registry id, for example '100000001'.","maxLength":200,"title":"Funder Id","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text query within the funder's works.","title":"Query"},"filter":{"anyOf":[{"maxLength":400,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated name:value filters, for example 'from-pub-date:2024-01,type:journal-article,has-abstract:true'. Different filters combine with AND.","title":"Filter"},"sort":{"anyOf":[{"enum":["score","updated","deposited","indexed","published","published-print","published-online","issued","is-referenced-by-count","references-count"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by score, updated, deposited, indexed, published, issued, is-referenced-by-count or references-count.","title":"Sort"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction, asc or desc (used with sort).","title":"Order"},"rows":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (0 to 1000; 0 returns only the totals; the default is 20).","title":"Rows"},"offset":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (up to 10000).","title":"Offset"},"select":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":"DOI,title,author,container-title,issued,type,publisher,is-referenced-by-count,URL","description":"Comma-separated work fields to return, for example 'DOI,title,author'. Leave the default for a compact record.","title":"Select"}},"required":["funder_id"],"title":"list_funder_worksArguments","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/search_members":{"post":{"operationId":"search_members","summary":"Search Crossref member organizations (mostly publishers) by name; returns id, name, location, DOI prefixes and DOI count","description":"Search Crossref member organizations (mostly publishers) by name; returns id, name, location, DOI prefixes and DOI counts. Use for \"Find the Crossref member record of Elsevier\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Part of the member name, for example 'elsevier'.","title":"Query"},"rows":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (0 to 1000; 0 returns only the totals; the default is 20).","title":"Rows"},"offset":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (up to 10000).","title":"Offset"}},"title":"search_membersArguments","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_member":{"post":{"operationId":"get_member","summary":"Get one Crossref member by id: name, location, prefixes, DOI counts and metadata coverage. Use for \"Show Crossref member","description":"Get one Crossref member by id: name, location, prefixes, DOI counts and metadata coverage. Use for \"Show Crossref member 297\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"member_id":{"description":"The numeric member id, for example '297'.","maxLength":200,"title":"Member Id","type":"string"}},"required":["member_id"],"title":"get_memberArguments","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_prefix":{"post":{"operationId":"get_prefix","summary":"Get the owner of a DOI prefix: the member name and prefix. Use for \"Who owns DOI prefix 10.1038\".","description":"Get the owner of a DOI prefix: the member name and prefix. Use for \"Who owns DOI prefix 10.1038\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"owner_prefix":{"description":"A DOI prefix, for example '10.1038'.","maxLength":200,"title":"Owner Prefix","type":"string"}},"required":["owner_prefix"],"title":"get_prefixArguments","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}}}}