{"openapi":"3.1.0","info":{"title":"Requesty (BYOK) API","version":"0.1.0","description":"Requesty (BYOK) lets an AI assistant read your own Requesty data through the Requesty API with a key you supply (Requesty API key with manage read permission). Read-only: 6 tools (get_organization, get_organization_usage, list_api_keys, get_api_key, list_groups, get_group). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-requesty.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-requesty/docs"},"termsOfService":"https://connectorbay.com/byok-requesty/terms"},"servers":[{"url":"https://byok-requesty.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-requesty/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/get_organization":{"post":{"operationId":"get_organization","summary":"Show the organization's name and prepaid balance. Use for \"How much Requesty balance does my organization have left\".","description":"Show the organization's name and prepaid balance. Use for \"How much Requesty balance does my organization have left\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_organizationArguments","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_organization_usage":{"post":{"operationId":"get_organization_usage","summary":"Get aggregated usage for the whole organization over a date range (at most 100 days), by hour, day or month, optionally ","description":"Get aggregated usage for the whole organization over a date range (at most 100 days), by hour, day or month, optionally grouped by model, API key, provider and more. Use for \"How much did my Requesty organization spend per model in the last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start":{"description":"Start of the range, RFC 3339, for example 2026-10-01T00:00:00Z.","maxLength":200,"title":"Start","type":"string"},"end":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the range, RFC 3339; defaults to 24 hours after start.","title":"End"},"resolution":{"anyOf":[{"enum":["hour","day","month"],"type":"string"},{"type":"null"}],"default":"day","description":"Aggregation period: hour, day or month.","title":"Resolution"},"group_by":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"One field to group by, for example model_used, provider_used, api_key_id, group_name, api or is_byok.","title":"Group By"}},"required":["start"],"title":"get_organization_usageArguments","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_api_keys":{"post":{"operationId":"list_api_keys","summary":"List the organization's API keys with monthly limit, month-to-date spend, permissions, labels and group. Use for \"Which ","description":"List the organization's API keys with monthly limit, month-to-date spend, permissions, labels and group. Use for \"Which Requesty API keys are close to their monthly limit\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_api_keysArguments","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_api_key":{"post":{"operationId":"get_api_key","summary":"Get one API key's spend, limit, permissions and group; use 'self' for the calling key. Use for \"What is the monthly limi","description":"Get one API key's spend, limit, permissions and group; use 'self' for the calling key. Use for \"What is the monthly limit and spend of my Requesty API key\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"API key UUID from list_api_keys, or the word 'self' for the calling key.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_api_keyArguments","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_groups":{"post":{"operationId":"list_groups","summary":"List groups with member counts, month-to-date spend and monthly limits. Use for \"Which Requesty groups spent the most th","description":"List groups with member counts, month-to-date spend and monthly limits. Use for \"Which Requesty groups spent the most this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_groupsArguments","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_group":{"post":{"operationId":"get_group","summary":"Get one group's name and monthly limit (member details are not returned). Use for \"What is the monthly limit of Requesty","description":"Get one group's name and monthly limit (member details are not returned). Use for \"What is the monthly limit of Requesty group grp_123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Group id from list_groups.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_groupArguments","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}}}}