{"openapi":"3.1.0","info":{"title":"Biteship (BYOK) API","version":"0.1.0","description":"Biteship (BYOK) lets an AI assistant read your own Biteship data through the Biteship API with a key you supply (Biteship API key (biteship_live.... or biteship_test....)). Read-only: 6 tools (list_couriers, search_areas, get_shipping_rates, get_tracking, get_order, get_saved_location). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached;...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-biteship.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-biteship/docs"},"termsOfService":"https://connectorbay.com/byok-biteship/terms"},"servers":[{"url":"https://byok-biteship.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-biteship/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_couriers":{"post":{"operationId":"list_couriers","summary":"List the courier services available through Biteship: courier and service codes, tier, service type, shipping type, dura","description":"List the courier services available through Biteship: courier and service codes, tier, service type, shipping type, duration range and COD, proof-of-delivery support. Use for \"Which couriers can I ship with through Biteship\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_couriersArguments","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/search_areas":{"post":{"operationId":"search_areas","summary":"Search Biteship delivery areas by name (province, city, district or postal code) and get the area id used for rate quote","description":"Search Biteship delivery areas by name (province, city, district or postal code) and get the area id used for rate quotes. Use for \"What is the Biteship area id for Pesanggrahan, Jakarta Selatan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"input":{"description":"Area name or postal code to search, for example 'Jakarta Selatan'.","maxLength":200,"title":"Input","type":"string"},"countries":{"anyOf":[{"enum":["ID","SG","MY","TH","PH","VN"],"type":"string"},{"type":"null"}],"default":"ID","description":"Country code to search in.","title":"Countries"},"type":{"anyOf":[{"enum":["single","double"],"type":"string"},{"type":"null"}],"default":"single","description":"single returns the areas matching the input; double returns it with its parent levels.","title":"Type"}},"required":["input"],"title":"search_areasArguments","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_shipping_rates":{"post":{"operationId":"get_shipping_rates","summary":"Quote shipping prices for one item between two Biteship area ids with the couriers you name (a quote only: nothing is bo","description":"Quote shipping prices for one item between two Biteship area ids with the couriers you name (a quote only: nothing is booked or charged). Use for \"How much would JNE and SiCepat charge for a 200 g parcel between two Jakarta districts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"origin_area_id":{"description":"Origin area id from search_areas.","maxLength":200,"title":"Origin Area Id","type":"string"},"destination_area_id":{"description":"Destination area id from search_areas.","maxLength":200,"title":"Destination Area Id","type":"string"},"couriers":{"description":"Comma-separated courier codes from list_couriers, for example 'jne,sicepat'.","maxLength":200,"title":"Couriers","type":"string"},"item_name":{"description":"Name of the item or package.","maxLength":200,"title":"Item Name","type":"string"},"item_value":{"description":"Value of the item in IDR.","title":"Item Value","type":"integer"},"item_weight":{"description":"Weight of the item in grams.","title":"Item Weight","type":"integer"},"item_quantity":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":1,"description":"Quantity of the item.","title":"Item Quantity"}},"required":["origin_area_id","destination_area_id","couriers","item_name","item_value","item_weight"],"title":"get_shipping_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/get_tracking":{"post":{"operationId":"get_tracking","summary":"Get the tracking status and history of a shipment created through the Biteship order API, by tracking id (driver and con","description":"Get the tracking status and history of a shipment created through the Biteship order API, by tracking id (driver and contact details are left out). Use for \"Where is my Biteship shipment 6051861741a37414e6637fab\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tracking_id":{"description":"Biteship tracking id (the courier.tracking_id of an order).","maxLength":200,"title":"Tracking Id","type":"string"}},"required":["tracking_id"],"title":"get_trackingArguments","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_order":{"post":{"operationId":"get_order","summary":"Get one Biteship shipment order by id: status, price, courier, waybill, delivery type, distance and items (shipper, send","description":"Get one Biteship shipment order by id: status, price, courier, waybill, delivery type, distance and items (shipper, sender, receiver and driver contact details are left out). Use for \"What is the status and cost of Biteship order 5dd599ebdefcd4158eb8470b\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"order_id":{"description":"Biteship order id.","maxLength":200,"title":"Order Id","type":"string"}},"required":["order_id"],"title":"get_orderArguments","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_saved_location":{"post":{"operationId":"get_saved_location","summary":"Get one saved pickup location of the account by id: its name and address (contact person and phone are left out). Use fo","description":"Get one saved pickup location of the account by id: its name and address (contact person and phone are left out). Use for \"What address is Biteship location 61d565c69a3211036a05f3f8\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"Biteship saved location id.","maxLength":200,"title":"Location Id","type":"string"}},"required":["location_id"],"title":"get_saved_locationArguments","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}}}}