{"openapi":"3.1.0","info":{"title":"Mailfornet (BYOK) API","version":"0.1.0","description":"Mailfornet (BYOK) lets an AI assistant read your own Mailfornet data through the Mailfornet API with a key you supply (Mailfornet API key (starts with mf_live_)). Read-only: 5 tools (list_inbox_messages, list_domains, list_webhooks, list_webhook_deliveries, get_usage). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-mailfornet.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-mailfornet/docs"},"termsOfService":"https://connectorbay.com/byok-mailfornet/terms"},"servers":[{"url":"https://byok-mailfornet.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-mailfornet/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_inbox_messages":{"post":{"operationId":"list_inbox_messages","summary":"List messages that arrived in one disposable inbox, newest first, with sender, subject and date. Message previews and bo","description":"List messages that arrived in one disposable inbox, newest first, with sender, subject and date. Message previews and bodies (which can contain verification codes) are left out. Never waits for new mail. Use for \"What emails reached test inbox k3f9xq2m@mailfornet.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"Full inbox address, for example k3f9xq2m@mailfornet.com.","maxLength":254,"title":"Address","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many messages to return (1 to 100).","title":"Limit"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only mail received after this Unix time in milliseconds.","title":"Since"},"sender":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages whose sender contains this text, case-insensitive.","title":"Sender"},"subject":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only messages whose subject contains this text, case-insensitive.","title":"Subject"}},"required":["address"],"title":"list_inbox_messagesArguments","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_domains":{"post":{"operationId":"list_domains","summary":"List the domains the account can create disposable inbox addresses on. Use for \"Which domains can I create test addresse","description":"List the domains the account can create disposable inbox addresses on. Use for \"Which domains can I create test addresses on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_domainsArguments","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_webhooks":{"post":{"operationId":"list_webhooks","summary":"List the webhook endpoints registered for new-mail events, with url, creation time, whether each is disabled and its con","description":"List the webhook endpoints registered for new-mail events, with url, creation time, whether each is disabled and its consecutive failure count. Signing secrets are not returned. Use for \"Which Mailfornet webhooks are active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_webhooksArguments","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_webhook_deliveries":{"post":{"operationId":"list_webhook_deliveries","summary":"List the last delivery attempts of one webhook endpoint with event name, HTTP status received, error text and time. Use ","description":"List the last delivery attempts of one webhook endpoint with event name, HTTP status received, error text and time. Use for \"Did my webhook 3 receive its deliveries\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"webhook_id":{"description":"Webhook id, a whole number from list_webhooks.","title":"Webhook Id","type":"integer"}},"required":["webhook_id"],"title":"list_webhook_deliveriesArguments","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":"Show this month's API requests used, the monthly quota, requests remaining and when the counter resets. Use for \"How man","description":"Show this month's API requests used, the monthly quota, requests remaining and when the counter resets. Use for \"How many Mailfornet requests do I have left this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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}}}}