{"openapi":"3.1.0","info":{"title":"Open Science Framework (BYOK) API","version":"0.1.0","description":"Open Science Framework (BYOK) lets an AI assistant read your own Open Science Framework data through the Open Science Framework API with a key you supply (OSF personal access token). Read-only: 11 tools (list_projects, get_project, list_project_contributors, list_project_files, list_preprints, get_preprint, list_registrations, get_registration, list_institutions, list_licenses, get_my_profile)....\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-osf.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-osf/docs"},"termsOfService":"https://connectorbay.com/byok-osf/terms"},"servers":[{"url":"https://byok-osf.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-osf/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/list_projects":{"post":{"operationId":"list_projects","summary":"List OSF projects and components (newest modified first) that are public or readable by the key's account, optionally fi","description":"List OSF projects and components (newest modified first) that are public or readable by the key's account, optionally filtered by title, tag, category or description substring. Public records are visible without special rights; a token also shows private records the account can read. Use for \"Which OSF projects mention reproducibility in their title\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Substring to match in the project title.","title":"Title"},"tags":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Tag to match.","title":"Tags"},"category":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Project category such as project, data, analysis, software, hypothesis, methods and measures, procedure, instrumentation, communication or other.","title":"Category"},"description":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Substring to match in the description.","title":"Description"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds 10 records (fixed by the service).","title":"Page"}},"title":"list_projectsArguments","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_project":{"post":{"operationId":"get_project","summary":"Get one OSF project or component by its identifier: title, description, category, tags, visibility and dates. Use for \"S","description":"Get one OSF project or component by its identifier: title, description, category, tags, visibility and dates. Use for \"Show the OSF project ezcuj\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"node_id":{"description":"OSF project or component identifier (the five-character code in its osf.io address), for example 'ezcuj'.","maxLength":12,"title":"Node Id","type":"string"}},"required":["node_id"],"title":"get_projectArguments","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_project_contributors":{"post":{"operationId":"list_project_contributors","summary":"List the contributors of an OSF project in order, with a bibliographic flag, permission level and the contributor's publ","description":"List the contributors of an OSF project in order, with a bibliographic flag, permission level and the contributor's public name. Use for \"Who are the authors of OSF project ezcuj\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"node_id":{"description":"OSF project or component identifier (the five-character code in its osf.io address), for example 'ezcuj'.","maxLength":12,"title":"Node Id","type":"string"},"bibliographic":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to show only contributors listed in citations, false for the others.","title":"Bibliographic"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds 10 records (fixed by the service).","title":"Page"}},"required":["node_id"],"title":"list_project_contributorsArguments","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_project_files":{"post":{"operationId":"list_project_files","summary":"List files and folders stored in an OSF project for one storage provider (osfstorage unless the project has add-ons), wi","description":"List files and folders stored in an OSF project for one storage provider (osfstorage unless the project has add-ons), with size, dates and download counts. Use for \"What files are stored in OSF project ezcuj\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"node_id":{"description":"OSF project or component identifier (the five-character code in its osf.io address), for example 'ezcuj'.","maxLength":12,"title":"Node Id","type":"string"},"provider":{"description":"Storage provider name, normally 'osfstorage'.","maxLength":40,"title":"Provider","type":"string"},"kind":{"anyOf":[{"enum":["file","folder"],"type":"string"},{"type":"null"}],"default":null,"description":"Show only 'file' or 'folder' entries.","title":"Kind"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Substring to match in the file name.","title":"Name"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds 10 records (fixed by the service).","title":"Page"}},"required":["node_id","provider"],"title":"list_project_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}},"/v1/tools/list_preprints":{"post":{"operationId":"list_preprints","summary":"List preprints across all OSF preprint services (newest first), optionally for one service such as osf, psyarxiv or soca","description":"List preprints across all OSF preprint services (newest first), optionally for one service such as osf, psyarxiv or socarxiv. Public records are visible without special rights; a token also shows private records the account can read. Use for \"What are the latest preprints on SocArXiv\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"provider":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Preprint service identifier, for example 'socarxiv' or 'psyarxiv'.","title":"Provider"},"published":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for published preprints only, false for unpublished ones the account can see.","title":"Published"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds 10 records (fixed by the service).","title":"Page"}},"title":"list_preprintsArguments","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_preprint":{"post":{"operationId":"get_preprint","summary":"Get one preprint by identifier: title, abstract, DOI, publication date, review state and tags. Use for \"Show OSF preprin","description":"Get one preprint by identifier: title, abstract, DOI, publication date, review state and tags. Use for \"Show OSF preprint hqb2p with its DOI\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"preprint_id":{"description":"Preprint identifier, for example 'hqb2p'.","maxLength":12,"title":"Preprint Id","type":"string"}},"required":["preprint_id"],"title":"get_preprintArguments","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_registrations":{"post":{"operationId":"list_registrations","summary":"List OSF registrations (frozen, time-stamped project snapshots, for example pre-registrations), optionally filtered by t","description":"List OSF registrations (frozen, time-stamped project snapshots, for example pre-registrations), optionally filtered by title, tag or description. Public records are visible without special rights; a token also shows private records the account can read. Use for \"Find OSF registrations about data sharing badges\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Substring to match in the registration title.","title":"Title"},"tags":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Tag to match.","title":"Tags"},"description":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Substring to match in the description.","title":"Description"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds 10 records (fixed by the service).","title":"Page"}},"title":"list_registrationsArguments","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_registration":{"post":{"operationId":"get_registration","summary":"Get one OSF registration by identifier: title, description, registration date, withdrawal status and form used. Use for ","description":"Get one OSF registration by identifier: title, description, registration date, withdrawal status and form used. Use for \"Show OSF registration ipkea\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"registration_id":{"description":"Registration identifier, for example 'ipkea'.","maxLength":12,"title":"Registration Id","type":"string"}},"required":["registration_id"],"title":"get_registrationArguments","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_institutions":{"post":{"operationId":"list_institutions","summary":"List institutions verified on OSF, with description and ROR identifier. Use for \"Which institutions are affiliated with ","description":"List institutions verified on OSF, with description and ROR identifier. Use for \"Which institutions are affiliated with OSF\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Substring to match in the institution name.","title":"Name"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds 10 records (fixed by the service).","title":"Page"}},"title":"list_institutionsArguments","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_licenses":{"post":{"operationId":"list_licenses","summary":"List licenses that can be applied to OSF projects and preprints, with the fields each one requires. Use for \"Which licen","description":"List licenses that can be applied to OSF projects and preprints, with the fields each one requires. Use for \"Which licenses can I choose for an OSF project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Substring to match in the license name.","title":"Name"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds 10 records (fixed by the service).","title":"Page"}},"title":"list_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_my_profile":{"post":{"operationId":"get_my_profile","summary":"Show the OSF account the token belongs to: user identifier, name and registration date. Use for \"Which OSF account is my","description":"Show the OSF account the token belongs to: user identifier, name and registration date. Use for \"Which OSF account is my token connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_my_profileArguments","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}}}}