{"openapi":"3.1.0","info":{"title":"Zenodo (BYOK) API","version":"0.1.0","description":"Zenodo (BYOK) lets an AI assistant read your own Zenodo data through the Zenodo API with a key you supply (Zenodo personal access token). Read-only: 7 tools (search_records, get_record, search_licenses, get_license, list_my_uploads, get_my_upload, list_upload_files). 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...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-zenodo.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-zenodo/docs"},"termsOfService":"https://connectorbay.com/byok-zenodo/terms"},"servers":[{"url":"https://byok-zenodo.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-zenodo/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 published Zenodo records (papers, datasets, software, posters and more) by query, type, subtype or community. Use","description":"Search published Zenodo records (papers, datasets, software, posters and more) by query, type, subtype or community. Uses Elasticsearch query-string syntax; characters such as / have special meaning, so quote DOIs. The answer is the provider's full record list, so use small pages. Use for \"Find open datasets on glacier mass balance on Zenodo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Search query, for example 'glacier mass balance' or 'doi:\"10.5281/zenodo.1234\"'.","title":"Q"},"sort":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":"bestmatch","description":"Order: bestmatch or mostrecent; prefix with - to reverse, for example '-mostrecent'.","title":"Sort"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"size":{"anyOf":[{"maximum":25,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"Results per page (1 to 25; the records are large, so keep this small).","title":"Size"},"type":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Record type: Publication, Poster, Presentation, Dataset, Image, Video, Software, Lesson or Other.","title":"Type"},"subtype":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Record subtype such as 'Journal article', 'Preprint' or 'Proposal'.","title":"Subtype"},"communities":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only records in this community (use the community identifier).","title":"Communities"},"all_versions":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to show every version of a record, false for the latest versions only.","title":"All Versions"}},"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_record":{"post":{"operationId":"get_record","summary":"Get one published Zenodo record by its numeric ID: DOI, title, creators, description, license, files and links. Use for ","description":"Get one published Zenodo record by its numeric ID: DOI, title, creators, description, license, files and links. Use for \"Show me Zenodo record 1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"record_id":{"description":"Numeric Zenodo record ID, for example 1234.","maxLength":20,"title":"Record Id","type":"string"}},"required":["record_id"],"title":"get_recordArguments","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_licenses":{"post":{"operationId":"search_licenses","summary":"Search the licenses that can be applied to Zenodo uploads, by name or identifier. Use for \"Which Creative Commons licens","description":"Search the licenses that can be applied to Zenodo uploads, by name or identifier. Use for \"Which Creative Commons licenses does Zenodo offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search query, for example 'creative commons'.","title":"Q"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Results per page (1 to 100).","title":"Size"}},"title":"search_licensesArguments","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_license":{"post":{"operationId":"get_license","summary":"Get one license by its identifier, for example cc-by-nc-4.0: title and link. Use for \"What is the Zenodo license cc-by-n","description":"Get one license by its identifier, for example cc-by-nc-4.0: title and link. Use for \"What is the Zenodo license cc-by-nc-4.0\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"license_id":{"description":"License identifier such as 'cc-by-nc-4.0' or 'mit'.","maxLength":60,"title":"License Id","type":"string"}},"required":["license_id"],"title":"get_licenseArguments","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_my_uploads":{"post":{"operationId":"list_my_uploads","summary":"List your own Zenodo uploads (drafts and published) with state, title, DOI and dates. May need a token created with the ","description":"List your own Zenodo uploads (drafts and published) with state, title, DOI and dates. May need a token created with the deposit:write scope. Use for \"Which uploads do I have on Zenodo and which are still drafts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Optional search query over your uploads.","title":"Q"},"status":{"anyOf":[{"enum":["draft","published"],"type":"string"},{"type":"null"}],"default":null,"description":"draft or published.","title":"Status"},"sort":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":"bestmatch","description":"Order: bestmatch or mostrecent; prefix with - to reverse, for example '-mostrecent'.","title":"Sort"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 100).","title":"Size"},"all_versions":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include all versions of each upload.","title":"All Versions"}},"title":"list_my_uploadsArguments","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_my_upload":{"post":{"operationId":"get_my_upload","summary":"Get one of your own Zenodo uploads by ID: state, title, DOI, dates and the full metadata. May need a token created with ","description":"Get one of your own Zenodo uploads by ID: state, title, DOI, dates and the full metadata. May need a token created with the deposit:write scope. Use for \"Show my Zenodo upload 1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"deposition_id":{"description":"Numeric ID of your upload (deposition).","maxLength":20,"title":"Deposition Id","type":"string"}},"required":["deposition_id"],"title":"get_my_uploadArguments","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_upload_files":{"post":{"operationId":"list_upload_files","summary":"List the files of one of your own Zenodo uploads: file ID, name, size in bytes and MD5 checksum. May need a token create","description":"List the files of one of your own Zenodo uploads: file ID, name, size in bytes and MD5 checksum. May need a token created with the deposit:write scope. Use for \"Which files are in my Zenodo upload 1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"deposition_id":{"description":"Numeric ID of your upload (deposition).","maxLength":20,"title":"Deposition Id","type":"string"}},"required":["deposition_id"],"title":"list_upload_filesArguments","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}}}}