{"openapi":"3.1.0","info":{"title":"Apono (BYOK) API","version":"0.1.0","description":"Apono (BYOK) lets an AI assistant read your own Apono data through the Apono API with a key you supply (Apono personal API token). Read-only: 9 tools (list_integrations, list_connectors, list_access_flows, list_bundles, list_spaces, list_access_scopes, list_space_scopes, list_groups, list_activity_reports). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-apono.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-apono/docs"},"termsOfService":"https://connectorbay.com/byok-apono/terms"},"servers":[{"url":"https://byok-apono.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-apono/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_integrations":{"post":{"operationId":"list_integrations","summary":"List the systems Apono manages access for (cloud accounts, databases, SaaS) with type, category, status, connector and l","description":"List the systems Apono manages access for (cloud accounts, databases, SaaS) with type, category, status, connector and last sync time. Use for \"Which integrations are connected to Apono and when did they last sync\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by integration name. A * acts as a wildcard, for example 'prod*' or '*admin*'.","title":"Name"},"type":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Integration type; a * acts as a wildcard, for example 'aws*'.","title":"Type"},"category":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Integration category.","title":"Category"},"connector_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only integrations running on this connector id.","title":"Connector Id"},"status":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Integration status value as shown in the Apono console.","title":"Status"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 100).","title":"Limit"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token taken from pagination.next_page_token of the previous answer.","title":"Page Token"}},"title":"list_integrationsArguments","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_connectors":{"post":{"operationId":"list_connectors","summary":"List Apono connectors (the agents that reach your systems) with status, version, whether they are on the latest version,","description":"List Apono connectors (the agents that reach your systems) with status, version, whether they are on the latest version, cloud provider and last connection time. Use for \"Are all my Apono connectors up to date and connected\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Connector status value as shown in the Apono console.","title":"Status"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 100).","title":"Limit"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token taken from pagination.next_page_token of the previous answer.","title":"Page Token"}},"title":"list_connectorsArguments","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_access_flows":{"post":{"operationId":"list_access_flows","summary":"List access flows (the rules for who may request what, for how long and who approves) with trigger, approval mode, grant","description":"List access flows (the rules for who may request what, for how long and who approves) with trigger, approval mode, grant duration and MFA settings. Use for \"Which access flows require MFA and how long do they grant access\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"requestor_identity_type":{"anyOf":[{"enum":["HUMAN","AGENT"],"type":"string"},{"type":"null"}],"default":null,"description":"Only flows for this kind of requestor: HUMAN or AGENT.","title":"Requestor Identity Type"},"space":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Only objects in this space; give the space id or exact name.","title":"Space"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 100).","title":"Limit"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token taken from pagination.next_page_token of the previous answer.","title":"Page Token"}},"title":"list_access_flowsArguments","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_bundles":{"post":{"operationId":"list_bundles","summary":"List access bundles (named sets of permissions that can be requested together) with description, space and update date. ","description":"List access bundles (named sets of permissions that can be requested together) with description, space and update date. Use for \"What access bundles exist in Apono\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by bundle name. A * acts as a wildcard, for example 'prod*' or '*admin*'.","title":"Name"},"space":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Only objects in this space; give the space id or exact name.","title":"Space"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 100).","title":"Limit"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token taken from pagination.next_page_token of the previous answer.","title":"Page Token"}},"title":"list_bundlesArguments","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_spaces":{"post":{"operationId":"list_spaces","summary":"List Apono spaces (administrative areas that own flows, bundles and scopes) with their creation and update dates. Use fo","description":"List Apono spaces (administrative areas that own flows, bundles and scopes) with their creation and update dates. Use for \"Which spaces are set up in Apono\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by space name. A * acts as a wildcard, for example 'prod*' or '*admin*'.","title":"Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 100).","title":"Limit"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token taken from pagination.next_page_token of the previous answer.","title":"Page Token"}},"title":"list_spacesArguments","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_access_scopes":{"post":{"operationId":"list_access_scopes","summary":"List access scopes (saved resource queries used in access flows) with their query text and space. Use for \"Which access ","description":"List access scopes (saved resource queries used in access flows) with their query text and space. Use for \"Which access scopes are defined and what do they select\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by access scope name. A * acts as a wildcard, for example 'prod*' or '*admin*'.","title":"Name"},"space":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Only objects in this space; give the space id or exact name.","title":"Space"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 100).","title":"Limit"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token taken from pagination.next_page_token of the previous answer.","title":"Page Token"}},"title":"list_access_scopesArguments","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_space_scopes":{"post":{"operationId":"list_space_scopes","summary":"List space scopes (the resource queries that limit what a space may manage) with their query text. Use for \"What are the","description":"List space scopes (the resource queries that limit what a space may manage) with their query text. Use for \"What are the space scopes in Apono\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by space scope name. A * acts as a wildcard, for example 'prod*' or '*admin*'.","title":"Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 100).","title":"Limit"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token taken from pagination.next_page_token of the previous answer.","title":"Page Token"}},"title":"list_space_scopesArguments","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 Apono knows from connected identity sources, with the integration each group comes from. Use for \"Which grou","description":"List groups Apono knows from connected identity sources, with the integration each group comes from. Use for \"Which groups does Apono know from my identity provider\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by group name. A * acts as a wildcard, for example 'prod*' or '*admin*'.","title":"Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 100).","title":"Limit"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token taken from pagination.next_page_token of the previous answer.","title":"Page Token"}},"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/list_activity_reports":{"post":{"operationId":"list_activity_reports","summary":"List saved activity reports (name, output format, fields included, schedule and update date) without their recipients. U","description":"List saved activity reports (name, output format, fields included, schedule and update date) without their recipients. Use for \"Which scheduled activity reports are configured\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by report name. A * acts as a wildcard, for example 'prod*' or '*admin*'.","title":"Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 100).","title":"Limit"},"page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token taken from pagination.next_page_token of the previous answer.","title":"Page Token"}},"title":"list_activity_reportsArguments","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}}}}