{"openapi":"3.1.0","info":{"title":"JSONBin (BYOK) API","version":"0.1.0","description":"JSONBin (BYOK) lets an AI assistant read your own JSONBin data through the JSONBin API with a key you supply (JSONBin master key). Read-only: 7 tools (list_collections, list_collection_bins, list_collection_bins_after, list_uncategorized_bins, list_uncategorized_bins_after, read_bin, read_bin_version). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-jsonbin.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-jsonbin/docs"},"termsOfService":"https://connectorbay.com/byok-jsonbin/terms"},"servers":[{"url":"https://byok-jsonbin.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-jsonbin/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_collections":{"post":{"operationId":"list_collections","summary":"List the collections of the account: collection id, name and creation time. Use for \"Which JSONBin collections do I have","description":"List the collections of the account: collection id, name and creation time. Use for \"Which JSONBin collections do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_collectionsArguments","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_collection_bins":{"post":{"operationId":"list_collection_bins","summary":"List the first 10 bins of a collection (newest first) with bin id, privacy flag and creation time. Use for \"What are the","description":"List the first 10 bins of a collection (newest first) with bin id, privacy flag and creation time. Use for \"What are the latest bins in my JSONBin collection\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"collection_id":{"description":"Collection id, from list_collections.","maxLength":40,"title":"Collection Id","type":"string"}},"required":["collection_id"],"title":"list_collection_binsArguments","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_collection_bins_after":{"post":{"operationId":"list_collection_bins_after","summary":"List the next 10 bins of a collection after a given bin id, for paging. Use for \"Show the next page of bins in my JSONBi","description":"List the next 10 bins of a collection after a given bin id, for paging. Use for \"Show the next page of bins in my JSONBin collection\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"collection_id":{"description":"Collection id, from list_collections.","maxLength":40,"title":"Collection Id","type":"string"},"last_bin_id":{"description":"Id of the last bin of the previous page; the next 10 bins after it are returned.","maxLength":40,"title":"Last Bin Id","type":"string"}},"required":["collection_id","last_bin_id"],"title":"list_collection_bins_afterArguments","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_uncategorized_bins":{"post":{"operationId":"list_uncategorized_bins","summary":"List the first 10 bins that are not in any collection. Use for \"Which JSONBin bins are not in a collection\".","description":"List the first 10 bins that are not in any collection. Use for \"Which JSONBin bins are not in a collection\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_uncategorized_binsArguments","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_uncategorized_bins_after":{"post":{"operationId":"list_uncategorized_bins_after","summary":"List the next 10 uncategorized bins after a given bin id, for paging. Use for \"Show more of my uncategorized JSONBin bin","description":"List the next 10 uncategorized bins after a given bin id, for paging. Use for \"Show more of my uncategorized JSONBin bins\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"last_bin_id":{"description":"Id of the last bin of the previous page; the next 10 bins after it are returned.","maxLength":40,"title":"Last Bin Id","type":"string"}},"required":["last_bin_id"],"title":"list_uncategorized_bins_afterArguments","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/read_bin":{"post":{"operationId":"read_bin","summary":"Read the latest version of a bin: the stored JSON under record, plus its id and privacy flag. Use for \"What is stored in","description":"Read the latest version of a bin: the stored JSON under record, plus its id and privacy flag. Use for \"What is stored in my JSONBin bin 5f8a6b2c1e3d4a0017c9b222\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"bin_id":{"description":"Bin id (the 'record' value from the bin listings).","maxLength":40,"title":"Bin Id","type":"string"},"meta":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) wraps the data as record plus metadata; false returns only the stored JSON.","title":"Meta"}},"required":["bin_id"],"title":"read_binArguments","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/read_bin_version":{"post":{"operationId":"read_bin_version","summary":"Read a specific numbered version of a bin. Use for \"What did version 2 of my JSONBin bin contain\".","description":"Read a specific numbered version of a bin. Use for \"What did version 2 of my JSONBin bin contain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"bin_id":{"description":"Bin id (the 'record' value from the bin listings).","maxLength":40,"title":"Bin Id","type":"string"},"version":{"description":"Version number, starting at 1.","minimum":1,"title":"Version","type":"integer"},"meta":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) wraps the data as record plus metadata; false returns only the stored JSON.","title":"Meta"}},"required":["bin_id","version"],"title":"read_bin_versionArguments","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}}}}