{"openapi":"3.1.0","info":{"title":"Terminal Africa (BYOK) API","version":"0.1.0","description":"Terminal Africa (BYOK) lets an AI assistant read your own Terminal Africa data through the Terminal Africa API with a key you supply (Terminal Africa live secret key). Read-only: 9 tools (get_wallet_balance, list_carriers, list_countries, list_cities, get_default_packaging, list_packaging, list_my_rate_cards, list_rates, list_insurances). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-terminalafrica.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-terminalafrica/docs"},"termsOfService":"https://connectorbay.com/byok-terminalafrica/terms"},"servers":[{"url":"https://byok-terminalafrica.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-terminalafrica/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_wallet_balance":{"post":{"operationId":"get_wallet_balance","summary":"Get the balance of your Terminal Africa shipping wallet: amount, currency and whether it is active. Use for \"How much is","description":"Get the balance of your Terminal Africa shipping wallet: amount, currency and whether it is active. Use for \"How much is in my Terminal Africa wallet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_wallet_balanceArguments","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_carriers":{"post":{"operationId":"list_carriers","summary":"List the carriers available on Terminal Africa: name, slug, carrier id, domestic, regional and international coverage, a","description":"List the carriers available on Terminal Africa: name, slug, carrier id, domestic, regional and international coverage, available countries and active state. Use for \"Which carriers can I use with Terminal Africa for Kenya\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true lists only active carriers, false only inactive ones; leave empty for all.","title":"Active"},"type":{"anyOf":[{"enum":["domestic","regional","international"],"type":"string"},{"type":"null"}],"default":null,"description":"Carrier type filter.","title":"Type"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records to return (default 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_carriersArguments","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_countries":{"post":{"operationId":"list_countries","summary":"List the countries Terminal Africa can ship to, with ISO code, phone code and currency. Use for \"Which countries does Te","description":"List the countries Terminal Africa can ship to, with ISO code, phone code and currency. Use for \"Which countries does Terminal Africa ship to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_countriesArguments","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_cities":{"post":{"operationId":"list_cities","summary":"List the valid cities of a country (optionally one state) for Terminal Africa addresses, with coordinates. Use for \"Whic","description":"List the valid cities of a country (optionally one state) for Terminal Africa addresses, with coordinates. Use for \"Which cities in Lagos state can I ship from with Terminal Africa\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"country_code":{"description":"ISO 2-letter country code.","maxLength":2,"title":"Country Code","type":"string"},"state_code":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"State code such as LA for Lagos.","title":"State Code"}},"required":["country_code"],"title":"list_citiesArguments","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_default_packaging":{"post":{"operationId":"get_default_packaging","summary":"Get the default Terminal Africa packaging (box size and weight). Use for \"What is the default Terminal Africa package si","description":"Get the default Terminal Africa packaging (box size and weight). Use for \"What is the default Terminal Africa package size\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_default_packagingArguments","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_packaging":{"post":{"operationId":"list_packaging","summary":"List the packaging presets saved on your account: name, type, dimensions and weight. Use for \"Which packaging presets ha","description":"List the packaging presets saved on your account: name, type, dimensions and weight. Use for \"Which packaging presets have I saved in Terminal Africa\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Packaging type filter, for example soft-package or box-package.","title":"Type"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records to return (default 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_packagingArguments","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_my_rate_cards":{"post":{"operationId":"list_my_rate_cards","summary":"List the carrier rate cards assigned to your account: carrier, pricing grade, service directions, currency and transit t","description":"List the carrier rate cards assigned to your account: carrier, pricing grade, service directions, currency and transit time range. Use for \"Which carrier rate cards apply to my Terminal Africa account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_my_rate_cardsArguments","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_rates":{"post":{"operationId":"list_rates","summary":"List the shipping rates previously generated on your account: carrier, amount, currency, delivery estimate and insurance","description":"List the shipping rates previously generated on your account: carrier, amount, currency, delivery estimate and insurance fee. Use for \"What rates did Terminal Africa quote me recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records to return (default 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_ratesArguments","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_insurances":{"post":{"operationId":"list_insurances","summary":"List the parcel insurance purchases on your account: shipment and parcel ids, insured value, premium, currency and statu","description":"List the parcel insurance purchases on your account: shipment and parcel ids, insured value, premium, currency and status. Use for \"Which Terminal Africa insurance purchases are still pending\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["confirmed","pending","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Insurance purchase status.","title":"Status"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records to return (default 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_insurancesArguments","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}}}}