{"openapi":"3.1.0","info":{"title":"Conveyor (BYOK) API","version":"0.1.0","description":"Conveyor (BYOK) lets an AI assistant read your own Conveyor data through the Conveyor API with a key you supply (Conveyor API key). Read-only: 10 tools (list_questionnaires, list_questions, search_knowledge_base, list_question_tags, list_question_categories, list_subprocessors, list_projects, list_trust_center_folders, list_one_off_questions, list_audit_events). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-conveyor.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-conveyor/docs"},"termsOfService":"https://connectorbay.com/byok-conveyor/terms"},"servers":[{"url":"https://byok-conveyor.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-conveyor/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_questionnaires":{"post":{"operationId":"list_questionnaires","summary":"List security questionnaires with name, status, due and completion dates, customer domain, product lines and question co","description":"List security questionnaires with name, status, due and completion dates, customer domain, product lines and question count; includes the assignee as stored by Conveyor. Use for \"Which security questionnaires are open and when are they due\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["processing","started","ready_for_review","approved","completed"],"type":"string"},{"type":"null"}],"default":null,"description":"Status: processing, started, ready_for_review, approved or completed.","title":"Status"},"product_line_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated product line UUIDs to filter by.","title":"Product Line Ids"},"created_at_start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Created on or after this date (YYYY-MM-DD).","title":"Created At Start"},"completed_at_start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Completed on or after this date (YYYY-MM-DD).","title":"Completed At Start"},"due_at_start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Due on or after this date (YYYY-MM-DD).","title":"Due At Start"},"due_at_end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Due on or before this date (YYYY-MM-DD).","title":"Due At End"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Results per page (default 100).","title":"Per Page"}},"title":"list_questionnairesArguments","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_questions":{"post":{"operationId":"list_questions","summary":"List questions extracted from questionnaires with the final answer, status, reusability, ConveyorAI answer result and so","description":"List questions extracted from questionnaires with the final answer, status, reusability, ConveyorAI answer result and source questionnaire; people fields are not returned. Use for \"What answers did we give to customer questionnaire questions this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"questionnaire_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only questions of this questionnaire ID.","title":"Questionnaire Id"},"questionnaire_type":{"anyOf":[{"enum":["RFP","Security Questionnaire","Past Answers Import"],"type":"string"},{"type":"null"}],"default":null,"description":"Type: RFP, Security Questionnaire or Past Answers Import.","title":"Questionnaire Type"},"questionnaire_status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only questions whose questionnaire has this workflow status.","title":"Questionnaire Status"},"created_at_start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Created on or after this ISO 8601 date.","title":"Created At Start"},"created_at_end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Created on or before this ISO 8601 date.","title":"Created At End"},"reusable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for questions eligible for the past-answers knowledge base, false for the others.","title":"Reusable"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Results per page (default 100).","title":"Per Page"}},"title":"list_questionsArguments","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_knowledge_base":{"post":{"operationId":"search_knowledge_base","summary":"Search the Conveyor knowledge base for curated Q&As and past questionnaire answers matching text; answers are cut to 500","description":"Search the Conveyor knowledge base for curated Q&As and past questionnaire answers matching text; answers are cut to 500 characters unless full answers are requested. Use for \"What have we answered before about encryption at rest\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query_text":{"description":"Search text.","maxLength":300,"title":"Query Text","type":"string"},"product_line_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Product line IDs to restrict to (comma-separated).","title":"Product Line Ids"},"include_full_answers":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to return full answer text instead of the first 500 characters.","title":"Include Full Answers"}},"required":["query_text"],"title":"search_knowledge_baseArguments","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_question_tags":{"post":{"operationId":"list_question_tags","summary":"List the labels used to organise curated Q&As in the knowledge base. Use for \"Which tags do we use for knowledge base an","description":"List the labels used to organise curated Q&As in the knowledge base. Use for \"Which tags do we use for knowledge base answers\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Results per page.","title":"Per Page"}},"title":"list_question_tagsArguments","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_question_categories":{"post":{"operationId":"list_question_categories","summary":"List the security domains (question categories) available for tagging knowledge base answers. Use for \"What question cat","description":"List the security domains (question categories) available for tagging knowledge base answers. Use for \"What question categories does Conveyor have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_question_categoriesArguments","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_subprocessors":{"post":{"operationId":"list_subprocessors","summary":"List your company's active subprocessors shown on the trust center, with description and data locations. Use for \"Who ar","description":"List your company's active subprocessors shown on the trust center, with description and data locations. Use for \"Who are our subprocessors and where is their data stored\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Results per page.","title":"Per Page"}},"title":"list_subprocessorsArguments","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_projects":{"post":{"operationId":"list_projects","summary":"List RFP and questionnaire projects with name, status, customer name and domain, due date, product lines and questionnai","description":"List RFP and questionnaire projects with name, status, customer name and domain, due date, product lines and questionnaire count; the project manager is not returned. Use for \"Which customer projects are currently running in Conveyor\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["draft","started","completed","cancelled","archived"],"type":"string"},{"type":"null"}],"default":null,"description":"Project status: draft, started, completed, cancelled or archived.","title":"Status"},"domain":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only projects for this customer domain.","title":"Domain"},"crm_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only projects with this Salesforce record ID.","title":"Crm Id"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Results per page (default 100).","title":"Per Page"}},"title":"list_projectsArguments","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_trust_center_folders":{"post":{"operationId":"list_trust_center_folders","summary":"List the trust center document folders with name, data room ID and document IDs. Use for \"Which folders exist in our Con","description":"List the trust center document folders with name, data room ID and document IDs. Use for \"Which folders exist in our Conveyor trust center\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_trust_center_foldersArguments","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_one_off_questions":{"post":{"operationId":"list_one_off_questions","summary":"List one-off questions asked through the API, Slack, browser extension, web app or trust center, with answer, answer typ","description":"List one-off questions asked through the API, Slack, browser extension, web app or trust center, with answer, answer type, confidence and any issue; the asking user is not returned. Use for \"What one-off security questions have people asked recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"created_at_start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Created on or after this date (YYYY-MM-DD).","title":"Created At Start"},"created_at_end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Created on or before this date (YYYY-MM-DD).","title":"Created At End"},"source":{"anyOf":[{"enum":["api","slack","browser_extension","web_app","customer_via_trustcenter"],"type":"string"},{"type":"null"}],"default":null,"description":"Where the question came from.","title":"Source"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Results per page (default 100).","title":"Per Page"}},"title":"list_one_off_questionsArguments","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_audit_events":{"post":{"operationId":"list_audit_events","summary":"List account audit events (logins, role changes, API use) with action type, category, source, subject and time; actor em","description":"List account audit events (logins, role changes, API use) with action type, category, source, subject and time; actor emails and IP addresses are not returned. Use for \"What admin actions happened in Conveyor this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Events on or after this UTC day (YYYY-MM-DD).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Events on or before this UTC day (YYYY-MM-DD).","title":"End Date"},"source":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated sources: ui, api_key, oauth, scim, saml, admin_console, console.","title":"Source"},"category":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated event categories.","title":"Category"},"action_type":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated action types, for example 'role.updated'.","title":"Action Type"},"sort_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order: asc (default) or desc.","title":"Sort Dir"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Results per page (maximum 1000).","title":"Per Page"}},"title":"list_audit_eventsArguments","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}}}}