{"openapi":"3.1.0","info":{"title":"Teamwork (BYOK) API","version":"0.1.0","description":"Teamwork (BYOK) lets an AI assistant read your own Teamwork data through the Teamwork API with a key you supply (Teamwork.com API key). Read-only: 8 tools (get_me, list_projects, list_tasks, list_tasklists, list_milestones, list_time_entries, list_people, list_companies). 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-teamwork.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-teamwork/docs"},"termsOfService":"https://connectorbay.com/byok-teamwork/terms"},"servers":[{"url":"https://byok-teamwork.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-teamwork/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/get_me":{"post":{"operationId":"get_me","summary":"Show the Teamwork.com user the API key belongs to: name, email, title, time zone and admin flags. Use for \"Who am I in T","description":"Show the Teamwork.com user the API key belongs to: name, email, title, time zone and admin flags. Use for \"Who am I in Teamwork.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site":{"description":"Your Teamwork.com site name: the part before .teamwork.com in your site address (US-hosted sites only; EU sites use .eu.teamwork.com and are not supported).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Site","type":"string"}},"required":["site"],"title":"get_meArguments","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 projects with name, description, status, dates and last-worked time, optionally by search text, type or archived st","description":"List projects with name, description, status, dates and last-worked time, optionally by search text, type or archived state. Use for \"Which Teamwork.com projects are active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site":{"description":"Your Teamwork.com site name: the part before .teamwork.com in your site address (US-hosted sites only; EU sites use .eu.teamwork.com and are not supported).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Site","type":"string"},"search_term":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search project names for.","title":"Search Term"},"project_type":{"anyOf":[{"enum":["all","normal","tasklists-template","projects-template","personal","tentative"],"type":"string"},{"type":"null"}],"default":null,"description":"Which projects: all, normal, tasklists-template, projects-template, personal or tentative.","title":"Project Type"},"only_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to return only archived projects.","title":"Only Archived"},"order_by":{"anyOf":[{"enum":["name","datecreated","startdate","duedate","lastactivity","status","id"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by name, datecreated, startdate, duedate, lastactivity, status or id.","title":"Order By"},"order_mode":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc or desc.","title":"Order Mode"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["site"],"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_tasks":{"post":{"operationId":"list_tasks","summary":"List tasks across projects with name, status, priority, dates, progress and parent task list, optionally filtered by sea","description":"List tasks across projects with name, status, priority, dates, progress and parent task list, optionally filtered by search text or a preset such as overdue. Use for \"Which Teamwork.com tasks are overdue\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site":{"description":"Your Teamwork.com site name: the part before .teamwork.com in your site address (US-hosted sites only; EU sites use .eu.teamwork.com and are not supported).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Site","type":"string"},"search_term":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search task names for.","title":"Search Term"},"task_filter":{"anyOf":[{"enum":["all","anytime","completed","overdue","today","tomorrow","thisweek","within7","within14","within30","nodate","noduedate","upcoming"],"type":"string"},{"type":"null"}],"default":null,"description":"Preset filter: all, anytime, completed, overdue, today, tomorrow, thisweek, within7, within14, within30, nodate, noduedate or upcoming.","title":"Task Filter"},"priority":{"anyOf":[{"enum":["low","medium","high"],"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks of this priority: low, medium or high.","title":"Priority"},"include_completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include completed tasks.","title":"Include Completed"},"order_by":{"anyOf":[{"enum":["duedate","startdate","createdat","updatedat","priority","taskname"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by duedate, startdate, createdat, updatedat, priority or taskname.","title":"Order By"},"order_mode":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc or desc.","title":"Order Mode"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["site"],"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_tasklists":{"post":{"operationId":"list_tasklists","summary":"List task lists (groups of tasks inside projects) with name, status, project and milestone. Use for \"What task lists doe","description":"List task lists (groups of tasks inside projects) with name, status, project and milestone. Use for \"What task lists does my Teamwork.com site have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site":{"description":"Your Teamwork.com site name: the part before .teamwork.com in your site address (US-hosted sites only; EU sites use .eu.teamwork.com and are not supported).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Site","type":"string"},"search_term":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search task list names for.","title":"Search Term"},"show_completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include completed task lists.","title":"Show Completed"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["site"],"title":"list_tasklistsArguments","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_milestones":{"post":{"operationId":"list_milestones","summary":"List milestones with name, deadline, completion, progress and project. Use for \"Which Teamwork.com milestones are due so","description":"List milestones with name, deadline, completion, progress and project. Use for \"Which Teamwork.com milestones are due soon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site":{"description":"Your Teamwork.com site name: the part before .teamwork.com in your site address (US-hosted sites only; EU sites use .eu.teamwork.com and are not supported).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Site","type":"string"},"search_term":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search milestone names for.","title":"Search Term"},"due_before":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only milestones due before this date (YYYYMMDD).","title":"Due Before"},"due_after":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only milestones due after this date (YYYYMMDD).","title":"Due After"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["site"],"title":"list_milestonesArguments","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_time_entries":{"post":{"operationId":"list_time_entries","summary":"List logged time entries with minutes, description, date, user, project and task, optionally for a date range, project o","description":"List logged time entries with minutes, description, date, user, project and task, optionally for a date range, project or task. Use for \"How much time was logged on the Website project this month in Teamwork.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site":{"description":"Your Teamwork.com site name: the part before .teamwork.com in your site address (US-hosted sites only; EU sites use .eu.teamwork.com and are not supported).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Site","type":"string"},"start_date":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries from this date (YYYY-MM-DD).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries up to this date (YYYY-MM-DD).","title":"End Date"},"project_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only entries of this project id.","title":"Project Id"},"task_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only entries of this task id.","title":"Task Id"},"billable_type":{"anyOf":[{"enum":["billable","non-billable"],"type":"string"},{"type":"null"}],"default":null,"description":"billable or non-billable entries only.","title":"Billable Type"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["site"],"title":"list_time_entriesArguments","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_people":{"post":{"operationId":"list_people","summary":"List people on the site with name, email, title, company, admin and client flags and last login. Use for \"Who has access","description":"List people on the site with name, email, title, company, admin and client flags and last login. Use for \"Who has access to our Teamwork.com site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site":{"description":"Your Teamwork.com site name: the part before .teamwork.com in your site address (US-hosted sites only; EU sites use .eu.teamwork.com and are not supported).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Site","type":"string"},"search_term":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search names and emails for.","title":"Search Term"},"admins_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to return only administrators.","title":"Admins Only"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["site"],"title":"list_peopleArguments","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_companies":{"post":{"operationId":"list_companies","summary":"List companies (your own and clients) with name, industry, city, country and status. Use for \"Which client companies are","description":"List companies (your own and clients) with name, industry, city, country and status. Use for \"Which client companies are in Teamwork.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site":{"description":"Your Teamwork.com site name: the part before .teamwork.com in your site address (US-hosted sites only; EU sites use .eu.teamwork.com and are not supported).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Site","type":"string"},"search_term":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search company names for.","title":"Search Term"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["site"],"title":"list_companiesArguments","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}}}}