{"openapi":"3.1.0","info":{"title":"Asana Templates (BYOK) API","version":"0.1.0","description":"Asana Templates (BYOK) lets an AI assistant read your own Asana Templates data through the Asana Templates API with a key you supply (personal access token). Read-only: 8 tools (list_project_templates, get_project_template, list_task_templates, get_task_template, list_tags, get_tag, list_portfolio_items, list_project_portfolio_settings). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-asana-templates.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-asana-templates/docs"},"termsOfService":"https://connectorbay.com/byok-asana-templates/terms"},"servers":[{"url":"https://byok-asana-templates.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-asana-templates/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_project_templates":{"post":{"operationId":"list_project_templates","summary":"List Asana project templates of a workspace or team with name, description, color, visibility, requested dates and reque","description":"List Asana project templates of a workspace or team with name, description, color, visibility, requested dates and requested role names. Use for \"Which project templates does Asana workspace 1200000000000099 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Global id of the workspace to list templates of.","title":"Workspace"},"team":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Global id of a team to list templates of.","title":"Team"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the next_page.offset value of the previous answer (omit for the first page).","title":"Offset"},"opt_fields":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"name,description,public,color,team.name,requested_dates,requested_roles.name","description":"Comma-separated fields to return; leave the default unless you need others.","title":"Opt Fields"}},"title":"list_project_templatesArguments","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_template":{"post":{"operationId":"get_project_template","summary":"Get one Asana project template with description, color, team, the dates it asks for when instantiated and the role names","description":"Get one Asana project template with description, color, team, the dates it asks for when instantiated and the role names it expects. Use for \"Show Asana project template 1200000000001001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_template_gid":{"description":"Global id (gid) of the project template.","maxLength":200,"title":"Project Template Gid","type":"string"},"opt_fields":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"name,description,public,color,team.name,requested_dates,requested_roles.name","description":"Comma-separated fields to return; leave the default unless you need others.","title":"Opt Fields"}},"required":["project_template_gid"],"title":"get_project_templateArguments","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_templates":{"post":{"operationId":"list_task_templates","summary":"List Asana task templates, optionally of one project, with name, project and creation time. Use for \"Which task template","description":"List Asana task templates, optionally of one project, with name, project and creation time. Use for \"Which task templates exist in Asana project 1200000000000301\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Global id of a project to list task templates of.","title":"Project"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the next_page.offset value of the previous answer (omit for the first page).","title":"Offset"},"opt_fields":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"name,project.name,created_at,template.name,template.task_resource_subtype,template.relative_start_on,template.relative_due_on","description":"Comma-separated fields to return; leave the default unless you need others.","title":"Opt Fields"}},"title":"list_task_templatesArguments","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_template":{"post":{"operationId":"get_task_template","summary":"Get one Asana task template: its project, creation time and the default task name, task type and relative start and due ","description":"Get one Asana task template: its project, creation time and the default task name, task type and relative start and due offsets in days. Use for \"Show Asana task template 1200000000001101\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"task_template_gid":{"description":"Global id (gid) of the task template.","maxLength":200,"title":"Task Template Gid","type":"string"},"opt_fields":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"name,project.name,created_at,template.name,template.task_resource_subtype,template.relative_start_on,template.relative_due_on","description":"Comma-separated fields to return; leave the default unless you need others.","title":"Opt Fields"}},"required":["task_template_gid"],"title":"get_task_templateArguments","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_tags":{"post":{"operationId":"list_tags","summary":"List the tags of an Asana workspace with color, creation time and link. Use for \"Which tags exist in Asana workspace 120","description":"List the tags of an Asana workspace with color, creation time and link. Use for \"Which tags exist in Asana workspace 1200000000000099\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Global id of the workspace to list tags of.","maxLength":40,"title":"Workspace","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the next_page.offset value of the previous answer (omit for the first page).","title":"Offset"},"opt_fields":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"name,color,created_at,permalink_url,workspace.name","description":"Comma-separated fields to return; leave the default unless you need others.","title":"Opt Fields"}},"required":["workspace"],"title":"list_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/get_tag":{"post":{"operationId":"get_tag","summary":"Get one Asana tag with its color, creation time, workspace and link. Use for \"Show Asana tag 1200000000001201\".","description":"Get one Asana tag with its color, creation time, workspace and link. Use for \"Show Asana tag 1200000000001201\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tag_gid":{"description":"Global id (gid) of the tag.","maxLength":200,"title":"Tag Gid","type":"string"},"opt_fields":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"name,color,created_at,permalink_url,workspace.name","description":"Comma-separated fields to return; leave the default unless you need others.","title":"Opt Fields"}},"required":["tag_gid"],"title":"get_tagArguments","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_portfolio_items":{"post":{"operationId":"list_portfolio_items","summary":"List the projects inside an Asana portfolio with name, color, archived flag and link. Use for \"Which projects are in Asa","description":"List the projects inside an Asana portfolio with name, color, archived flag and link. Use for \"Which projects are in Asana portfolio 1200000000001301\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"portfolio_gid":{"description":"Global id (gid) of the portfolio, from the Asana Workspace Admin connector.","maxLength":200,"title":"Portfolio Gid","type":"string"},"opt_fields":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"name,color,archived,permalink_url,resource_subtype","description":"Comma-separated fields to return; leave the default unless you need others.","title":"Opt Fields"}},"required":["portfolio_gid"],"title":"list_portfolio_itemsArguments","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_portfolio_settings":{"post":{"operationId":"list_project_portfolio_settings","summary":"List the portfolios a project belongs to and whether access control is inherited from each portfolio. Use for \"Which por","description":"List the portfolios a project belongs to and whether access control is inherited from each portfolio. Use for \"Which portfolios include Asana project 1200000000000301\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_gid":{"description":"Global id (gid) of the project.","maxLength":200,"title":"Project Gid","type":"string"},"opt_fields":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"portfolio.name,project.name,is_access_control_inherited","description":"Comma-separated fields to return; leave the default unless you need others.","title":"Opt Fields"}},"required":["project_gid"],"title":"list_project_portfolio_settingsArguments","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}}}}