{"openapi":"3.1.0","info":{"title":"Onomondo (BYOK) API","version":"0.1.0","description":"Onomondo (BYOK) lets an AI assistant read your own Onomondo data through the Onomondo API with a key you supply (Onomondo API key (a bare key, no Bearer prefix; use a read-only tag scope)). Read-only: 11 tools (list_sims, get_sim, find_sims, get_usage, get_sim_usage, get_tag_total_usage, list_network_lists, get_network_list, list_tags, get_sim_network_logs, get_sms_usage). The BYOK key travels...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-onomondo.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-onomondo/docs"},"termsOfService":"https://connectorbay.com/byok-onomondo/terms"},"servers":[{"url":"https://byok-onomondo.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-onomondo/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_sims":{"post":{"operationId":"list_sims","summary":"List SIMs with their details (status, connectivity, usage and, depending on the package, location and modem information)","description":"List SIMs with their details (status, connectivity, usage and, depending on the package, location and modem information). Up to 1000 per page; filter by online state, activation, connector or network list. Use for \"Which of my IoT SIMs are online right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"One filter as key:value: online:true, online:false, activated:true, activated:false, connector:<name> or network_whitelist:<name>.","title":"Filter"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of SIMs (1 to 1000, default 100).","title":"Limit"},"next_page":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from the previous answer. Leave out for the first page.","title":"Next Page"}},"title":"list_simsArguments","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_sim":{"post":{"operationId":"get_sim","summary":"Get one SIM's details by SIM id or ICCID. Use for \"Show details of SIM 0123456789\".","description":"Get one SIM's details by SIM id or ICCID. Use for \"Show details of SIM 0123456789\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sim_id":{"description":"SIM id (printed on the SIM card or shown in the Onomondo app); the ICCID also works.","maxLength":40,"title":"Sim Id","type":"string"}},"required":["sim_id"],"title":"get_simArguments","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/find_sims":{"post":{"operationId":"find_sims","summary":"Find SIMs by partial SIM id, label, or exact ICCID. Use for \"Find the SIM labelled 'pump-12'\".","description":"Find SIMs by partial SIM id, label, or exact ICCID. Use for \"Find the SIM labelled 'pump-12'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"description":"Text to look for: part of a SIM id, a label, or a full ICCID.","maxLength":100,"title":"Search","type":"string"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of records to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Offset"}},"required":["search"],"title":"find_simsArguments","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_usage":{"post":{"operationId":"get_usage","summary":"Get data usage of all SIMs for a period. A time filter is required, for example time:2026-10 for a month or time:2026-10","description":"Get data usage of all SIMs for a period. A time filter is required, for example time:2026-10 for a month or time:2026-10-16 for a day. Use for \"How much data did my SIMs use in October 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"description":"Required filter as key:value: time:2026-10-16, time:2026-10 or time:2026; or sim_id:<id>; or country_code:<code>. One filter per call.","maxLength":100,"title":"Filter","type":"string"},"group":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Set to hours to group the usage by hour.","title":"Group"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of records to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Offset"}},"required":["filter"],"title":"get_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/get_sim_usage":{"post":{"operationId":"get_sim_usage","summary":"Get data usage of one SIM, optionally for a period (time:2026-10) or a country (country_code:dk). Use for \"How much data","description":"Get data usage of one SIM, optionally for a period (time:2026-10) or a country (country_code:dk). Use for \"How much data did SIM 0123456789 use this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sim_id":{"description":"SIM id (printed on the SIM card or shown in the Onomondo app); the ICCID also works.","maxLength":40,"title":"Sim Id","type":"string"},"filter":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Filter as key:value: time:2026-10-16, time:2026-10, time:2026 or country_code:<code>. One filter per call.","title":"Filter"},"group":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Set to hours to group the usage by hour.","title":"Group"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of records to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Offset"}},"required":["sim_id"],"title":"get_sim_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/get_tag_total_usage":{"post":{"operationId":"get_tag_total_usage","summary":"Get the total data usage of all SIMs that carry one tag. Use for \"How much data did the SIMs tagged 'pumps' use in total","description":"Get the total data usage of all SIMs that carry one tag. Use for \"How much data did the SIMs tagged 'pumps' use in total\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tag_id":{"description":"Tag id from list_tags.","maxLength":60,"title":"Tag Id","type":"string"}},"required":["tag_id"],"title":"get_tag_total_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_network_lists":{"post":{"operationId":"list_network_lists","summary":"List the network lists (the allowed networks per country or operator) of the organization. Use for \"Which network lists ","description":"List the network lists (the allowed networks per country or operator) of the organization. Use for \"Which network lists do I have in Onomondo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_network_listsArguments","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_network_list":{"post":{"operationId":"get_network_list","summary":"Get one network list by name. Use for \"Show the network list eu-only\".","description":"Get one network list by name. Use for \"Show the network list eu-only\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"network_whitelist_name":{"description":"Name of the network list from list_network_lists.","maxLength":100,"title":"Network Whitelist Name","type":"string"}},"required":["network_whitelist_name"],"title":"get_network_listArguments","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_tags":{"post":{"operationId":"list_tags","summary":"List the tags of the organization (tags group SIMs and scope API keys). Use for \"Which tags exist in my Onomondo account","description":"List the tags of the organization (tags group SIMs and scope API keys). Use for \"Which tags exist in my Onomondo account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_tagsArguments","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_sim_network_logs":{"post":{"operationId":"get_sim_network_logs","summary":"Get the network event log of one SIM (connection attempts and sessions) from a timestamp on. Use for \"What network event","description":"Get the network event log of one SIM (connection attempts and sessions) from a timestamp on. Use for \"What network events did SIM 0123456789 have today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sim_id":{"description":"SIM id (printed on the SIM card or shown in the Onomondo app); the ICCID also works.","maxLength":40,"title":"Sim Id","type":"string"},"timestamp":{"description":"Required start time of the log window, as an ISO 8601 date or time, for example 2026-10-16T00:00:00Z.","maxLength":40,"title":"Timestamp","type":"string"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order by time: asc or desc.","title":"Order"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of records to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Offset"}},"required":["sim_id","timestamp"],"title":"get_sim_network_logsArguments","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_sms_usage":{"post":{"operationId":"get_sms_usage","summary":"Get SMS usage (messages sent and received) of all SIMs, optionally from a timestamp. Use for \"How many SMS messages did ","description":"Get SMS usage (messages sent and received) of all SIMs, optionally from a timestamp. Use for \"How many SMS messages did my SIMs send or receive\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"timestamp":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only usage from this ISO 8601 time on.","title":"Timestamp"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order by time: asc or desc.","title":"Order"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of records to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Offset"}},"title":"get_sms_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}}}}