{"openapi":"3.1.0","info":{"title":"Missive (BYOK) API","version":"0.1.0","description":"Missive (BYOK) lets an AI assistant read your own Missive data through the Missive API with a key you supply (Missive API token (needs an organization on the Productive plan or higher)). Read-only: 11 tools (list_organizations, list_users, list_teams, list_shared_labels, list_conversations, get_conversation, list_conversation_messages, list_conversation_comments, list_tasks, list_contact_books,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-missive.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-missive/docs"},"termsOfService":"https://connectorbay.com/byok-missive/terms"},"servers":[{"url":"https://byok-missive.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-missive/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_organizations":{"post":{"operationId":"list_organizations","summary":"List the Missive organizations your token's user belongs to (id and name). Use the ids to filter other tools. Use for \"W","description":"List the Missive organizations your token's user belongs to (id and name). Use the ids to filter other tools. Use for \"Which Missive organizations am I part of\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"title":"list_organizationsArguments","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_users":{"post":{"operationId":"list_users","summary":"List users of your Missive organizations with name and email. Use for \"Who are the users in my Missive organization\".","description":"List users of your Missive organizations with name and email. Use for \"Who are the users in my Missive organization\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Organization id (UUID) to restrict the results to, from list_organizations.","title":"Organization"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"title":"list_usersArguments","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_teams":{"post":{"operationId":"list_teams","summary":"List teams in your Missive organizations with member ids and inbox settings. Use for \"What teams do we have in Missive\".","description":"List teams in your Missive organizations with member ids and inbox settings. Use for \"What teams do we have in Missive\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Organization id (UUID) to restrict the results to, from list_organizations.","title":"Organization"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"title":"list_teamsArguments","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_shared_labels":{"post":{"operationId":"list_shared_labels","summary":"List shared labels in your Missive organizations (name, full path and organization). Use for \"What shared labels exist i","description":"List shared labels in your Missive organizations (name, full path and organization). Use for \"What shared labels exist in Missive\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Organization id (UUID) to restrict the results to, from list_organizations.","title":"Organization"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"title":"list_shared_labelsArguments","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_conversations":{"post":{"operationId":"list_conversations","summary":"List Missive conversations newest first. At least one mailbox filter is required: set inbox, all, assigned, closed, snoo","description":"List Missive conversations newest first. At least one mailbox filter is required: set inbox, all, assigned, closed, snoozed, flagged, trashed, junked or drafts to true, or pass shared_label, team_inbox, team_closed or team_all. Returns up to 50 per page; page with until. email, domain and contact_organization are mutually exclusive. Use for \"Show the latest conversations in my Missive inbox\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"inbox":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list the Inbox.","title":"Inbox"},"all":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list the All mailbox.","title":"All"},"assigned":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list conversations assigned to the token's user.","title":"Assigned"},"closed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list Closed conversations.","title":"Closed"},"snoozed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list Snoozed conversations.","title":"Snoozed"},"flagged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list Starred conversations.","title":"Flagged"},"trashed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list Trash.","title":"Trashed"},"junked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list Spam.","title":"Junked"},"drafts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list Drafts.","title":"Drafts"},"shared_label":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Shared label id: list the conversations carrying this label.","title":"Shared Label"},"team_inbox":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Team id: list that team's Inbox.","title":"Team Inbox"},"team_closed":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Team id: list that team's Closed mailbox.","title":"Team Closed"},"team_all":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Team id: list that team's All mailbox.","title":"Team All"},"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only conversations involving this email address (From, To, Cc, Bcc or Reply-To).","title":"Email"},"domain":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only conversations involving this email domain, written like example.com.","title":"Domain"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many conversations to return (1 to 50).","title":"Limit"},"until":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Unix time in seconds for paging: pass the last_activity_at of the oldest item of the previous page.","title":"Until"}},"title":"list_conversationsArguments","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_conversation":{"post":{"operationId":"get_conversation","summary":"Get one Missive conversation by id: subject, organization, message and task counts, assignees, labels and last activity.","description":"Get one Missive conversation by id: subject, organization, message and task counts, assignees, labels and last activity. Use for \"Show Missive conversation 6d3c9b1c-7067-4a28-8ea6-ea91340b67cc\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"conversation_id":{"description":"Missive conversation id (UUID).","maxLength":200,"title":"Conversation Id","type":"string"}},"required":["conversation_id"],"title":"get_conversationArguments","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_conversation_messages":{"post":{"operationId":"list_conversation_messages","summary":"List messages of a Missive conversation, newest first, 10 at most per call (drafts excluded). Gives sender, recipients, ","description":"List messages of a Missive conversation, newest first, 10 at most per call (drafts excluded). Gives sender, recipients, subject and a short preview; page with until. Use for \"What are the latest messages in Missive conversation 6d3c9b1c-7067-4a28-8ea6-ea91340b67cc\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"conversation_id":{"description":"Missive conversation id (UUID).","maxLength":200,"title":"Conversation Id","type":"string"},"limit":{"anyOf":[{"maximum":10,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many messages to return (1 to 10).","title":"Limit"},"until":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Unix time in seconds for paging: pass the delivered_at of the oldest item of the previous page.","title":"Until"}},"required":["conversation_id"],"title":"list_conversation_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_conversation_comments":{"post":{"operationId":"list_conversation_comments","summary":"List internal comments on a Missive conversation, newest first, 10 at most per call. Use for \"What comments did the team","description":"List internal comments on a Missive conversation, newest first, 10 at most per call. Use for \"What comments did the team leave on Missive conversation 6d3c9b1c-7067-4a28-8ea6-ea91340b67cc\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"conversation_id":{"description":"Missive conversation id (UUID).","maxLength":200,"title":"Conversation Id","type":"string"},"limit":{"anyOf":[{"maximum":10,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many comments to return (1 to 10).","title":"Limit"},"until":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Unix time in seconds for paging: pass the created_at of the oldest item of the previous page.","title":"Until"}},"required":["conversation_id"],"title":"list_conversation_commentsArguments","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_tasks":{"post":{"operationId":"list_tasks","summary":"List Missive tasks you can access, most recently active first, filtered by organization, team, assignee, state or due da","description":"List Missive tasks you can access, most recently active first, filtered by organization, team, assignee, state or due date. Returns 2 to 50 per call; page with until. Use for \"Which Missive tasks are still to do\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Organization id (UUID) to restrict the results to, from list_organizations.","title":"Organization"},"team":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Team id to filter by.","title":"Team"},"assignee":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"User id of the assignee to filter by.","title":"Assignee"},"state":{"anyOf":[{"enum":["todo","in_progress","closed"],"type":"string"},{"type":"null"}],"default":null,"description":"Task state: todo, in_progress or closed.","title":"State"},"type":{"anyOf":[{"enum":["task","conversation","all"],"type":"string"},{"type":"null"}],"default":"all","description":"task for subtasks and standalone tasks, conversation for assigned or due conversations, all for both.","title":"Type"},"due_at_gteq":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only tasks due at or after this Unix time (seconds).","title":"Due At Gteq"},"due_at_lteq":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only tasks due at or before this Unix time (seconds).","title":"Due At Lteq"},"limit":{"anyOf":[{"maximum":50,"minimum":2,"type":"integer"},{"type":"null"}],"default":25,"description":"How many tasks to return (2 to 50).","title":"Limit"},"until":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Unix time in seconds for paging: pass the last_activity_at of the oldest item of the previous page.","title":"Until"}},"title":"list_tasksArguments","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_contact_books":{"post":{"operationId":"list_contact_books","summary":"List the Missive contact books you can access (name, owner, sharing). Use for \"What contact books do I have in Missive\".","description":"List the Missive contact books you can access (name, owner, sharing). Use for \"What contact books do I have in Missive\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"title":"list_contact_booksArguments","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_contacts":{"post":{"operationId":"list_contacts","summary":"List or search contacts of one Missive contact book (up to 200 per call). Returns names, job and contact details such as","description":"List or search contacts of one Missive contact book (up to 200 per call). Returns names, job and contact details such as emails and phone numbers. Use for \"Find contacts named Alex in my Missive contact book\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"contact_book":{"description":"Contact book id from list_contact_books.","maxLength":200,"title":"Contact Book","type":"string"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text matched against name, email, phone, organization and notes.","title":"Search"},"order":{"anyOf":[{"enum":["last_name","last_modified"],"type":"string"},{"type":"null"}],"default":"last_name","description":"last_name (default) or last_modified for newest updates first.","title":"Order"},"modified_since":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only contacts changed since this Unix time (seconds).","title":"Modified Since"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"required":["contact_book"],"title":"list_contactsArguments","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}}}}