{"openapi":"3.1.0","info":{"title":"Tempo (BYOK) API","version":"0.1.0","description":"Tempo (BYOK) lets an AI assistant read your own Tempo data through the Tempo API with a key you supply (Tempo API token). Read-only: 10 tools (list_worklogs, list_plans, list_teams, get_team_members, list_accounts, list_customers, list_projects, list_roles, list_skills, list_programs). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-tempo.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-tempo/docs"},"termsOfService":"https://connectorbay.com/byok-tempo/terms"},"servers":[{"url":"https://byok-tempo.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-tempo/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_worklogs":{"post":{"operationId":"list_worklogs","summary":"List logged time (worklogs) with author, Jira issue, date, seconds spent, billable seconds and description. Filter by da","description":"List logged time (worklogs) with author, Jira issue, date, seconds spent, billable seconds and description. Filter by date range, project or issue; offset-paged. Accounts hosted in the EU or US region may need a regional host not covered here. Use for \"How much time was logged on Jira project 10000 in March in Tempo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Earliest date, YYYY-MM-DD.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Latest date, YYYY-MM-DD.","title":"Date To"},"project_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only worklogs on this Jira project id.","title":"Project Id"},"issue_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only worklogs on this Jira issue id.","title":"Issue Id"},"updated_from":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only worklogs updated since this date (YYYY-MM-DD) or time (YYYY-MM-DDTHH:MM:SSZ).","title":"Updated From"},"order_by":{"anyOf":[{"enum":["ID","START_DATE_TIME","UPDATED"],"type":"string"},{"type":"null"}],"default":null,"description":"Order: ID, START_DATE_TIME or UPDATED.","title":"Order By"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (default 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip (0 or more).","title":"Offset"}},"title":"list_worklogsArguments","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_plans":{"post":{"operationId":"list_plans","summary":"List resource planner allocations (who is planned on which issue or project) between two dates with assignee, plan item,","description":"List resource planner allocations (who is planned on which issue or project) between two dates with assignee, plan item, start and end dates, planned seconds per day and approval status. Both from and to are required; offset-paged. Use for \"Who is planned on Jira project 10000 next month in Tempo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"description":"Start date, YYYY-MM-DD; plans starting from this date.","maxLength":10,"title":"Date From","type":"string"},"date_to":{"description":"End date, YYYY-MM-DD; plans ending up to and including this date.","maxLength":10,"title":"Date To","type":"string"},"project_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only plans for this Jira project id.","title":"Project Id"},"account_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only plans assigned to this Atlassian account id.","title":"Account Id"},"limit":{"anyOf":[{"maximum":5000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (up to 5000).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip.","title":"Offset"}},"required":["date_from","date_to"],"title":"list_plansArguments","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 Tempo teams with name, summary, lead, program, status and public flag. Filter by name or status; offset-paged. Use ","description":"List Tempo teams with name, summary, lead, program, status and public flag. Filter by name or status; offset-paged. Use for \"Which teams exist in Tempo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only teams whose name matches this text.","title":"Name"},"status":{"anyOf":[{"enum":["ACTIVE","ARCHIVED"],"type":"string"},{"type":"null"}],"default":null,"description":"Team status: ACTIVE (default) or ARCHIVED.","title":"Status"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (default 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip (0 or more).","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/get_team_members":{"post":{"operationId":"get_team_members","summary":"List the active members of one team with their Atlassian account id and active membership (role, commitment percent, fro","description":"List the active members of one team with their Atlassian account id and active membership (role, commitment percent, from and to dates). Use for \"Who is in Tempo team 3 and how committed are they\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"description":"Numeric team id from list_teams.","title":"Team Id","type":"integer"}},"required":["team_id"],"title":"get_team_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_accounts":{"post":{"operationId":"list_accounts","summary":"List Tempo accounts (billing and cost accounts) with key, name, status, customer, category, lead and monthly budget. Off","description":"List Tempo accounts (billing and cost accounts) with key, name, status, customer, category, lead and monthly budget. Offset-paged. Use for \"Which Tempo accounts are open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (default 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip (0 or more).","title":"Offset"}},"title":"list_accountsArguments","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_customers":{"post":{"operationId":"list_customers","summary":"List Tempo customers with id, key and name. Offset-paged. Use for \"Who are our customers in Tempo\".","description":"List Tempo customers with id, key and name. Offset-paged. Use for \"Who are our customers in Tempo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (default 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip (0 or more).","title":"Offset"}},"title":"list_customersArguments","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 Tempo Financial Manager projects with name, status, type, fixed-price flag, timeframe, tags and approval setting. O","description":"List Tempo Financial Manager projects with name, status, type, fixed-price flag, timeframe, tags and approval setting. Offset-paged. Rates and budgets are not included. Use for \"What projects are tracked in Tempo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (default 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip (0 or more).","title":"Offset"}},"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_roles":{"post":{"operationId":"list_roles","summary":"List the roles defined in Tempo (id, name and whether it is the default role). Use for \"What roles are defined in Tempo\"","description":"List the roles defined in Tempo (id, name and whether it is the default role). Use for \"What roles are defined in Tempo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_rolesArguments","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_skills":{"post":{"operationId":"list_skills","summary":"List skills with id and name, optionally filtered by text. Offset-paged. Use for \"Which skills are tracked in Tempo\".","description":"List skills with id and name, optionally filtered by text. Offset-paged. Use for \"Which skills are tracked in Tempo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only skills matching this text.","title":"Query"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (default 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip (0 or more).","title":"Offset"}},"title":"list_skillsArguments","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_programs":{"post":{"operationId":"list_programs","summary":"List programs (groups of teams) with id, name, manager and the teams in each. Use for \"Which programs and teams exist in","description":"List programs (groups of teams) with id, name, manager and the teams in each. Use for \"Which programs and teams exist in Tempo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_programsArguments","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}}}}