{"openapi":"3.1.0","info":{"title":"TAPD (BYOK) API","version":"0.1.0","description":"TAPD (BYOK) lets an AI assistant read your own TAPD data through the TAPD API with a key you supply (TAPD API account (api_user)). Read-only: 9 tools (list_company_projects, get_project, list_project_members, list_stories, count_stories, list_bugs, list_tasks, list_iterations, list_workitem_types). The BYOK key travels with each request, is used for that one call only and is never stored, logged...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-tapd.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-tapd/docs"},"termsOfService":"https://connectorbay.com/byok-tapd/terms"},"servers":[{"url":"https://byok-tapd.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-tapd/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_company_projects":{"post":{"operationId":"list_company_projects","summary":"List the projects of one TAPD company with name, status, type, parent project, creator, dates and member count. Use for ","description":"List the projects of one TAPD company with name, status, type, parent project, creator, dates and member count. Use for \"Which TAPD projects does company 20003261 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"TAPD company id, a number such as 20003261.","minimum":1,"title":"Company Id","type":"integer"},"category":{"anyOf":[{"enum":["organization","product","project","mini_project","program"],"type":"string"},{"type":"null"}],"default":null,"description":"Project type: organization, product, project, mini_project or program.","title":"Category"}},"required":["company_id"],"title":"list_company_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/get_project":{"post":{"operationId":"get_project","summary":"Get one TAPD project: name, status, category, description, dates, company id and whether it is public. Use for \"Show det","description":"Get one TAPD project: name, status, category, description, dates, company id and whether it is public. Use for \"Show details of TAPD project 10104801\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"TAPD project (workspace) id.","minimum":1,"title":"Workspace Id","type":"integer"}},"required":["workspace_id"],"title":"get_projectArguments","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_project_members":{"post":{"operationId":"list_project_members","summary":"List the members of one TAPD project: nickname, display name, role ids, join date and status (email addresses are not re","description":"List the members of one TAPD project: nickname, display name, role ids, join date and status (email addresses are not returned). Use for \"Who is on TAPD project 10158231\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"TAPD project (workspace) id.","minimum":1,"title":"Workspace Id","type":"integer"}},"required":["workspace_id"],"title":"list_project_membersArguments","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_stories":{"post":{"operationId":"list_stories","summary":"List requirements (stories) of a TAPD project with status, handler, priority, iteration, planned dates and effort; filte","description":"List requirements (stories) of a TAPD project with status, handler, priority, iteration, planned dates and effort; filter by title, status, handler or dates. Use for \"Which requirements are open in TAPD project 10158231\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"TAPD project (workspace) id, a number such as 10158231; see list_company_projects.","minimum":1,"title":"Workspace Id","type":"integer"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Title filter with fuzzy matching.","title":"Name"},"status":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Status filter; several values can be joined with | (for example 'new|in_progress').","title":"Status"},"owner":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by handler nickname (fuzzy match).","title":"Owner"},"iteration_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only stories of this iteration id.","title":"Iteration Id"},"created":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Creation time filter: '>2026-01-01', '<2026-01-01' or '2026-01-01~2026-01-31'.","title":"Created"},"modified":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Last-modified time filter, same format as created.","title":"Modified"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results to return (1 to 200, default 30).","title":"Limit"},"page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (page times limit may not exceed 20000).","title":"Page"},"order":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Sort rule 'field ASC' or 'field DESC', for example 'created DESC'.","title":"Order"},"fields":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated field names to return; leave empty for the default fields.","title":"Fields"}},"required":["workspace_id"],"title":"list_storiesArguments","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/count_stories":{"post":{"operationId":"count_stories","summary":"Count the requirements (stories) of a TAPD project, optionally filtered by status, handler or iteration. Use for \"How ma","description":"Count the requirements (stories) of a TAPD project, optionally filtered by status, handler or iteration. Use for \"How many requirements does TAPD project 10158231 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"TAPD project (workspace) id, a number such as 10158231; see list_company_projects.","minimum":1,"title":"Workspace Id","type":"integer"},"status":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Status filter; several values can be joined with | (for example 'new|in_progress').","title":"Status"},"owner":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by handler nickname (fuzzy match).","title":"Owner"},"iteration_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only stories of this iteration id.","title":"Iteration Id"},"created":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Creation time filter: '>2026-01-01', '<2026-01-01' or '2026-01-01~2026-01-31'.","title":"Created"}},"required":["workspace_id"],"title":"count_storiesArguments","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_bugs":{"post":{"operationId":"list_bugs","summary":"List bugs of a TAPD project with status, priority, severity, reporter, handler, iteration and key dates. Use for \"What b","description":"List bugs of a TAPD project with status, priority, severity, reporter, handler, iteration and key dates. Use for \"What bugs are in progress in TAPD project 10158231\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"TAPD project (workspace) id, a number such as 10158231; see list_company_projects.","minimum":1,"title":"Workspace Id","type":"integer"},"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Title filter with fuzzy matching.","title":"Title"},"status":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Status filter; several values can be joined with | (for example 'new|in_progress').","title":"Status"},"priority_label":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Priority label filter.","title":"Priority Label"},"severity":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Severity filter; several values can be joined with |.","title":"Severity"},"current_owner":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by handler nickname (fuzzy match).","title":"Current Owner"},"iteration_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only bugs of this iteration id.","title":"Iteration Id"},"created":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Creation time filter: '>2026-01-01', '<2026-01-01' or '2026-01-01~2026-01-31'.","title":"Created"},"modified":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Last-modified time filter, same format as created.","title":"Modified"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results to return (1 to 200, default 30).","title":"Limit"},"page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (page times limit may not exceed 20000).","title":"Page"},"order":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Sort rule 'field ASC' or 'field DESC', for example 'created DESC'.","title":"Order"},"fields":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated field names to return; leave empty for the default fields.","title":"Fields"}},"required":["workspace_id"],"title":"list_bugsArguments","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 tasks of a TAPD project with status, handler, planned dates, progress, effort and linked story. Use for \"What tasks","description":"List tasks of a TAPD project with status, handler, planned dates, progress, effort and linked story. Use for \"What tasks are in progress in TAPD project 10158231\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"TAPD project (workspace) id, a number such as 10158231; see list_company_projects.","minimum":1,"title":"Workspace Id","type":"integer"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Title filter with fuzzy matching.","title":"Name"},"status":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Status filter; several values can be joined with | (for example 'new|in_progress').","title":"Status"},"owner":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by handler nickname (fuzzy match).","title":"Owner"},"story_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks linked to this story id.","title":"Story Id"},"iteration_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks of this iteration id.","title":"Iteration Id"},"created":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Creation time filter: '>2026-01-01', '<2026-01-01' or '2026-01-01~2026-01-31'.","title":"Created"},"modified":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Last-modified time filter, same format as created.","title":"Modified"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results to return (1 to 200, default 30).","title":"Limit"},"page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (page times limit may not exceed 20000).","title":"Page"},"order":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Sort rule 'field ASC' or 'field DESC', for example 'created DESC'.","title":"Order"},"fields":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated field names to return; leave empty for the default fields.","title":"Fields"}},"required":["workspace_id"],"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_iterations":{"post":{"operationId":"list_iterations","summary":"List iterations (sprints) of a TAPD project with start and end dates, status (open or done), creator and completion time","description":"List iterations (sprints) of a TAPD project with start and end dates, status (open or done), creator and completion time. Use for \"Which iterations does TAPD project 10158231 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"TAPD project (workspace) id, a number such as 10158231; see list_company_projects.","minimum":1,"title":"Workspace Id","type":"integer"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Title filter with fuzzy matching.","title":"Name"},"status":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"open, done or a custom status name.","title":"Status"},"created":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Creation time filter: '>2026-01-01', '<2026-01-01' or '2026-01-01~2026-01-31'.","title":"Created"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results to return (1 to 200, default 30).","title":"Limit"},"page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (page times limit may not exceed 20000).","title":"Page"},"order":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Sort rule 'field ASC' or 'field DESC', for example 'created DESC'.","title":"Order"},"fields":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated field names to return; leave empty for the default fields.","title":"Fields"}},"required":["workspace_id"],"title":"list_iterationsArguments","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_workitem_types":{"post":{"operationId":"list_workitem_types","summary":"List the requirement types (workitem types) of a TAPD project with name, English name, entity type and workflow id. Use ","description":"List the requirement types (workitem types) of a TAPD project with name, English name, entity type and workflow id. Use for \"What requirement types are defined in TAPD project 10104801\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"TAPD project (workspace) id, a number such as 10158231; see list_company_projects.","minimum":1,"title":"Workspace Id","type":"integer"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results to return (1 to 200, default 30).","title":"Limit"},"page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (page times limit may not exceed 20000).","title":"Page"}},"required":["workspace_id"],"title":"list_workitem_typesArguments","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}}}}