{"openapi":"3.1.0","info":{"title":"Lob (BYOK) API","version":"0.1.0","description":"Lob (BYOK) lets an AI assistant read your own Lob data through the Lob API with a key you supply (live secret API key (live_...)). Read-only: 9 tools (list_postcards, get_postcard, list_letters, get_letter, list_checks, get_check, list_self_mailers, list_templates, list_campaigns). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-lob.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-lob/docs"},"termsOfService":"https://connectorbay.com/byok-lob/terms"},"servers":[{"url":"https://byok-lob.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-lob/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_postcards":{"post":{"operationId":"list_postcards","summary":"List postcards, newest first, with render status, mail type, size, send and expected delivery dates; recipient addresses","description":"List postcards, newest first, with render status, mail type, size, send and expected delivery dates; recipient addresses are left out. Use for \"Which Lob postcards were sent this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the after value from the previous answer's next_url.","title":"After"},"created_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 date or time, for example 2026-01-01.","title":"Created After"},"created_before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 date or time.","title":"Created Before"},"sort_by_created":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation date: asc (oldest first) or desc (newest first).","title":"Sort By Created"},"status":{"anyOf":[{"enum":["processed","rendered","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Render status: processed, rendered or failed.","title":"Status"},"scheduled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for orders whose send date is later than their creation date.","title":"Scheduled"},"campaign_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only pieces created by this campaign id (cmp_...).","title":"Campaign Id"},"mail_type":{"anyOf":[{"enum":["usps_first_class","usps_standard"],"type":"string"},{"type":"null"}],"default":null,"description":"usps_first_class or usps_standard.","title":"Mail Type"}},"title":"list_postcardsArguments","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_postcard":{"post":{"operationId":"get_postcard","summary":"Get one postcard by id: render status, size, mail type, send and expected delivery dates; addresses are left out. Use fo","description":"Get one postcard by id: render status, size, mail type, send and expected delivery dates; addresses are left out. Use for \"What is the status of Lob postcard psc_208d6f3b0a2c0b29\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"psc_id":{"description":"Postcard id starting with psc_.","maxLength":200,"title":"Psc Id","type":"string"}},"required":["psc_id"],"title":"get_postcardArguments","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_letters":{"post":{"operationId":"list_letters","summary":"List letters, newest first, with render status, mail type, send and expected delivery dates; recipient addresses are lef","description":"List letters, newest first, with render status, mail type, send and expected delivery dates; recipient addresses are left out. Use for \"Which Lob letters failed to render\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the after value from the previous answer's next_url.","title":"After"},"created_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 date or time, for example 2026-01-01.","title":"Created After"},"created_before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 date or time.","title":"Created Before"},"sort_by_created":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation date: asc (oldest first) or desc (newest first).","title":"Sort By Created"},"status":{"anyOf":[{"enum":["processed","rendered","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Render status: processed, rendered or failed.","title":"Status"},"scheduled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for orders whose send date is later than their creation date.","title":"Scheduled"},"campaign_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only pieces created by this campaign id (cmp_...).","title":"Campaign Id"},"color":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for color letters only, false for black and white only.","title":"Color"},"mail_type":{"anyOf":[{"enum":["usps_first_class","usps_standard"],"type":"string"},{"type":"null"}],"default":null,"description":"usps_first_class or usps_standard.","title":"Mail Type"}},"title":"list_lettersArguments","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_letter":{"post":{"operationId":"get_letter","summary":"Get one letter by id: render status, mail type, send and expected delivery dates; addresses are left out. Use for \"What ","description":"Get one letter by id: render status, mail type, send and expected delivery dates; addresses are left out. Use for \"What is the status of Lob letter ltr_4868c3b754655f90\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ltr_id":{"description":"Letter id starting with ltr_.","maxLength":200,"title":"Ltr Id","type":"string"}},"required":["ltr_id"],"title":"get_letterArguments","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_checks":{"post":{"operationId":"list_checks","summary":"List checks mailed through Lob, newest first, with amount, memo, check number, status and delivery dates; bank accounts ","description":"List checks mailed through Lob, newest first, with amount, memo, check number, status and delivery dates; bank accounts and addresses are left out. Use for \"How much did I mail in Lob checks this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the after value from the previous answer's next_url.","title":"After"},"created_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 date or time, for example 2026-01-01.","title":"Created After"},"created_before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 date or time.","title":"Created Before"},"sort_by_created":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation date: asc (oldest first) or desc (newest first).","title":"Sort By Created"},"status":{"anyOf":[{"enum":["processed","rendered","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Render status: processed, rendered or failed.","title":"Status"},"scheduled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for orders whose send date is later than their creation date.","title":"Scheduled"},"mail_type":{"anyOf":[{"enum":["usps_first_class","usps_standard"],"type":"string"},{"type":"null"}],"default":null,"description":"usps_first_class or usps_standard.","title":"Mail Type"}},"title":"list_checksArguments","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_check":{"post":{"operationId":"get_check","summary":"Get one mailed check by id: amount, memo, check number, status and delivery dates; bank account and addresses are left o","description":"Get one mailed check by id: amount, memo, check number, status and delivery dates; bank account and addresses are left out. Use for \"Show Lob check chk_8e1d2c5a9f0b3a47\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chk_id":{"description":"Check id starting with chk_.","maxLength":200,"title":"Chk Id","type":"string"}},"required":["chk_id"],"title":"get_checkArguments","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_self_mailers":{"post":{"operationId":"list_self_mailers","summary":"List self mailers, newest first, with size, render status, mail type, send and expected delivery dates. Use for \"Which L","description":"List self mailers, newest first, with size, render status, mail type, send and expected delivery dates. Use for \"Which Lob self mailers are scheduled to send\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the after value from the previous answer's next_url.","title":"After"},"created_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 date or time, for example 2026-01-01.","title":"Created After"},"created_before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 date or time.","title":"Created Before"},"sort_by_created":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation date: asc (oldest first) or desc (newest first).","title":"Sort By Created"},"status":{"anyOf":[{"enum":["processed","rendered","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Render status: processed, rendered or failed.","title":"Status"},"scheduled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for orders whose send date is later than their creation date.","title":"Scheduled"},"campaign_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only pieces created by this campaign id (cmp_...).","title":"Campaign Id"},"mail_type":{"anyOf":[{"enum":["usps_first_class","usps_standard"],"type":"string"},{"type":"null"}],"default":null,"description":"usps_first_class or usps_standard.","title":"Mail Type"}},"title":"list_self_mailersArguments","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_templates":{"post":{"operationId":"list_templates","summary":"List HTML templates with description and creation dates. Use for \"Which Lob templates do I have\".","description":"List HTML templates with description and creation dates. Use for \"Which Lob templates do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the after value from the previous answer's next_url.","title":"After"},"created_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created after this ISO 8601 date or time, for example 2026-01-01.","title":"Created After"},"created_before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created before this ISO 8601 date or time.","title":"Created Before"}},"title":"list_templatesArguments","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_campaigns":{"post":{"operationId":"list_campaigns","summary":"List print campaigns with name, draft flag, schedule type, send and target delivery dates and billing group. Use for \"Wh","description":"List print campaigns with name, draft flag, schedule type, send and target delivery dates and billing group. Use for \"Which Lob campaigns are still drafts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100).","title":"Limit"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the after value from the previous answer's next_url.","title":"After"}},"title":"list_campaignsArguments","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}}}}