{"openapi":"3.1.0","info":{"title":"Axiom (BYOK) API","version":"0.1.0","description":"Axiom (BYOK) lets an AI assistant read your own Axiom data through the Axiom API with a key you supply (API token (an API token, not a personal access token; query and read permissions are enough)). Read-only: 8 tools (get_user, list_datasets, get_dataset, list_dataset_fields, query_apl, list_monitors, get_monitor_history, list_annotations). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-axiom.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-axiom/docs"},"termsOfService":"https://connectorbay.com/byok-axiom/terms"},"servers":[{"url":"https://byok-axiom.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-axiom/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_user":{"post":{"operationId":"get_user","summary":"Show the Axiom user or token identity behind the key: id, name, email and role. Use for \"Which Axiom account is my token","description":"Show the Axiom user or token identity behind the key: id, name, email and role. Use for \"Which Axiom account is my token for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_userArguments","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_datasets":{"post":{"operationId":"list_datasets","summary":"List the datasets (log, trace and metric collections) with kind, retention in days and update time. Use for \"Which Axiom","description":"List the datasets (log, trace and metric collections) with kind, retention in days and update time. Use for \"Which Axiom datasets do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_datasetsArguments","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_dataset":{"post":{"operationId":"get_dataset","summary":"Get one dataset by name: kind, retention, description and who created it. Use for \"Show my Axiom dataset my-logs\".","description":"Get one dataset by name: kind, retention, description and who created it. Use for \"Show my Axiom dataset my-logs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dataset_id":{"description":"Dataset name (its id), for example 'my-logs'.","maxLength":128,"title":"Dataset Id","type":"string"}},"required":["dataset_id"],"title":"get_datasetArguments","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_dataset_fields":{"post":{"operationId":"list_dataset_fields","summary":"List the fields of a dataset with their type, unit and description (up to 200 shown). Use for \"Which fields does my Axio","description":"List the fields of a dataset with their type, unit and description (up to 200 shown). Use for \"Which fields does my Axiom dataset my-logs have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dataset_id":{"description":"Dataset name (its id), for example 'my-logs'.","maxLength":128,"title":"Dataset Id","type":"string"}},"required":["dataset_id"],"title":"list_dataset_fieldsArguments","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/query_apl":{"post":{"operationId":"query_apl","summary":"Run a read-only APL query against Axiom, for example \"['my-logs'] | where status >= 500 | limit 20\". Returns the matchin","description":"Run a read-only APL query against Axiom, for example \"['my-logs'] | where status >= 500 | limit 20\". Returns the matching events with time and fields, or aggregates as rows. Queries are limited to the time range given. Use for \"Show the 20 latest error events in my Axiom dataset my-logs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"apl":{"description":"APL query that names the dataset in square brackets and quotes, for example \"['my-logs'] | where level == 'error' | sort by _time desc | limit 20\". Always end with a limit.","maxLength":2000,"title":"Apl","type":"string"},"format":{"anyOf":[{"const":"legacy","type":"string"},{"type":"null"}],"default":"legacy","description":"Result format. Only legacy (list of events) is supported here.","title":"Format"},"start_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"now-1h","description":"Start of the range: RFC 3339 time or relative like 'now-1h'.","title":"Start Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"now","description":"End of the range: RFC 3339 time or 'now'.","title":"End Time"}},"required":["apl"],"title":"query_aplArguments","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_monitors":{"post":{"operationId":"list_monitors","summary":"List monitors (threshold, match-event and anomaly alerts) with their APL query, interval, threshold, datasets, disabled ","description":"List monitors (threshold, match-event and anomaly alerts) with their APL query, interval, threshold, datasets, disabled flag and last error. Use for \"Which Axiom monitors do I have and are any failing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_monitorsArguments","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_monitor_history":{"post":{"operationId":"get_monitor_history","summary":"List the alert history of one monitor in a time range: when it opened and closed. Use for \"When did my Axiom monitor las","description":"List the alert history of one monitor in a time range: when it opened and closed. Use for \"When did my Axiom monitor last fire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"monitor_id":{"description":"Monitor id from list_monitors.","maxLength":60,"title":"Monitor Id","type":"string"},"start_time":{"description":"Start of the range (RFC 3339, for example 2026-10-01T00:00:00Z).","maxLength":40,"title":"Start Time","type":"string"},"end_time":{"description":"End of the range (RFC 3339), not before the start.","maxLength":40,"title":"End Time","type":"string"}},"required":["monitor_id","start_time","end_time"],"title":"get_monitor_historyArguments","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_annotations":{"post":{"operationId":"list_annotations","summary":"List annotations (deploy markers and notes) with title, type, time and the datasets they apply to, optionally for a time","description":"List annotations (deploy markers and notes) with title, type, time and the datasets they apply to, optionally for a time range. Use for \"What deploys did I annotate in Axiom\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only annotations after this RFC 3339 time.","title":"Start"},"end":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only annotations before this RFC 3339 time.","title":"End"}},"title":"list_annotationsArguments","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}}}}