{"openapi":"3.1.0","info":{"title":"Richpanel (BYOK) API","version":"0.1.0","description":"Richpanel (BYOK) lets an AI assistant read your own Richpanel data through the Richpanel API with a key you supply (Richpanel API key). Read-only: 7 tools (list_tasks, get_task, list_task_comments, list_ticket_tasks, list_teams, list_report_metrics, query_report). 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 sent to...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-richpanel.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-richpanel/docs"},"termsOfService":"https://connectorbay.com/byok-richpanel/terms"},"servers":[{"url":"https://byok-richpanel.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-richpanel/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_tasks":{"post":{"operationId":"list_tasks","summary":"List helpdesk tasks with title, status, priority, assignee, due date and comment count, plus counts by status and priori","description":"List helpdesk tasks with title, status, priority, assignee, due date and comment count, plus counts by status and priority. Filter by status, priority, assignee, ticket, overdue or search text. Use for \"Which Richpanel tasks are open and overdue\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["OPEN","INPROGRESS","CLOSED","all"],"type":"string"},{"type":"null"}],"default":"OPEN","description":"Task status: OPEN, INPROGRESS, CLOSED or all.","title":"Status"},"priority":{"anyOf":[{"enum":["LOW","HIGH","all"],"type":"string"},{"type":"null"}],"default":null,"description":"Priority: LOW, HIGH or all.","title":"Priority"},"assignee":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks assigned to this user ID.","title":"Assignee"},"conversation_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks linked to this conversation ID.","title":"Conversation Id"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to find in task titles and descriptions.","title":"Search"},"overdue":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only overdue tasks.","title":"Overdue"},"due_date_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks due on or after this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"Due Date From"},"due_date_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks due on or before this ISO 8601 time.","title":"Due Date To"},"sort_by":{"anyOf":[{"enum":["created_at","updated_at","due_date"],"type":"string"},{"type":"null"}],"default":"created_at","description":"Sort field: created_at, updated_at or due_date.","title":"Sort By"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc.","title":"Sort Order"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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/get_task":{"post":{"operationId":"get_task","summary":"Get one helpdesk task by its ID with title, description, status, priority, assignee and dates. Use for \"Show Richpanel t","description":"Get one helpdesk task by its ID with title, description, status, priority, assignee and dates. Use for \"Show Richpanel task task_org123_1710345600000_a1b2c3\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"task_id":{"description":"ID of the task, for example 'task_org123_1710345600000_a1b2c3'.","maxLength":200,"title":"Task Id","type":"string"}},"required":["task_id"],"title":"get_taskArguments","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_task_comments":{"post":{"operationId":"list_task_comments","summary":"List the comments and activity entries on one task, in the order the API returns them. Use for \"What comments are on thi","description":"List the comments and activity entries on one task, in the order the API returns them. Use for \"What comments are on this Richpanel task\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"task_id":{"description":"ID of the task, for example 'task_org123_1710345600000_a1b2c3'.","maxLength":200,"title":"Task Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["task_id"],"title":"list_task_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_ticket_tasks":{"post":{"operationId":"list_ticket_tasks","summary":"List the tasks linked to one conversation (ticket), with a summary of how many are open, in progress, closed or overdue.","description":"List the tasks linked to one conversation (ticket), with a summary of how many are open, in progress, closed or overdue. Use for \"Which tasks are attached to Richpanel conversation conv_abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ticket_id":{"description":"ID of the conversation (ticket), for example 'conv_abc123-def456'.","maxLength":200,"title":"Ticket Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["ticket_id"],"title":"list_ticket_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_teams":{"post":{"operationId":"list_teams","summary":"List the helpdesk teams in your Richpanel account with their IDs and names. Use for \"Which teams are set up in Richpanel","description":"List the helpdesk teams in your Richpanel account with their IDs and names. Use for \"Which teams are set up in Richpanel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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_report_metrics":{"post":{"operationId":"list_report_metrics","summary":"List the report metrics, filter fields and breakdown dimensions you can use in query_report. Use for \"Which report metri","description":"List the report metrics, filter fields and breakdown dimensions you can use in query_report. Use for \"Which report metrics does Richpanel offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_report_metricsArguments","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/query_report":{"post":{"operationId":"query_report","summary":"Read helpdesk performance numbers (for example new and closed conversations) for a date range, optionally grouped by age","description":"Read helpdesk performance numbers (for example new and closed conversations) for a date range, optionally grouped by agent, team, channel, tag or rating. Reading a report is free. Use for \"How many conversations did my Richpanel team close last week, by agent\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day of the range as YYYY-MM-DD.","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day of the range as YYYY-MM-DD.","maxLength":10,"title":"End Date","type":"string"},"metric_1":{"description":"Name of a metric to read, for example 'new_conversations' (see list_report_metrics).","maxLength":100,"title":"Metric 1","type":"string"},"metric_2":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Optional second metric name (five at most in total).","title":"Metric 2"},"metric_3":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Optional third metric name.","title":"Metric 3"},"dimension":{"anyOf":[{"enum":["agent","team","channel","app_client_id","tags","rating"],"type":"string"},{"type":"null"}],"default":null,"description":"Group the results by agent, team, channel, app_client_id, tags or rating; leave out for totals only.","title":"Dimension"},"timezone":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":"UTC","description":"Time zone for the date range, for example 'UTC' or 'America/New_York'.","title":"Timezone"}},"required":["start_date","end_date","metric_1"],"title":"query_reportArguments","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}}}}