naftiko: 1.0.0-alpha2 info: label: Asana Tasks API — Tasks description: 'Asana Tasks API — Tasks. 9 operations. Lead operation: Asana Get tasks from a project. Self-contained Naftiko capability covering one Asana business surface.' tags: - Asana - Tasks created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: ASANA_API_KEY: ASANA_API_KEY capability: consumes: - type: http namespace: tasks-tasks baseUri: https://app.asana.com/api/1.0 description: Asana Tasks API — Tasks business capability. Self-contained, no shared references. resources: - name: projects-project_gid-tasks path: /projects/{project_gid}/tasks operations: - name: gettasksforproject method: GET description: Asana Get tasks from a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project_gid in: path type: string required: true - name: completed_since in: query type: string - name: limit in: query type: integer - name: offset in: query type: string - name: tasks path: /tasks operations: - name: gettasks method: GET description: Asana Get multiple tasks outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string - name: section in: query type: string - name: workspace in: query type: string - name: assignee in: query type: string - name: completed_since in: query type: string - name: modified_since in: query type: string - name: limit in: query type: integer - name: offset in: query type: string - name: createtask method: POST description: Asana Create a task outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: tasks-task_gid path: /tasks/{task_gid} operations: - name: gettask method: GET description: Asana Get a task outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: task_gid in: path type: string required: true - name: updatetask method: PUT description: Asana Update a task outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: task_gid in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deletetask method: DELETE description: Asana Delete a task outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: task_gid in: path type: string required: true - name: tasks-task_gid-subtasks path: /tasks/{task_gid}/subtasks operations: - name: getsubtasksfortask method: GET description: Asana Get subtasks from a task outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: task_gid in: path type: string required: true - name: limit in: query type: integer - name: offset in: query type: string - name: createsubtaskfortask method: POST description: Asana Create a subtask outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: task_gid in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: workspaces-workspace_gid-tasks-search path: /workspaces/{workspace_gid}/tasks/search operations: - name: searchtasksforworkspace method: GET description: Asana Search tasks in a workspace outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: workspace_gid in: path type: string required: true - name: text in: query type: string - name: assignee.any in: query type: string - name: projects.any in: query type: string - name: tags.any in: query type: string - name: completed in: query type: boolean - name: is_subtask in: query type: boolean - name: sort_by in: query type: string - name: sort_ascending in: query type: boolean authentication: type: bearer token: '{{env.ASANA_API_KEY}}' exposes: - type: rest namespace: tasks-tasks-rest port: 8080 description: REST adapter for Asana Tasks API — Tasks. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/projects/{project-gid}/tasks name: projects-project-gid-tasks description: REST surface for projects-project_gid-tasks. operations: - method: GET name: gettasksforproject description: Asana Get tasks from a project call: tasks-tasks.gettasksforproject with: project_gid: rest.project_gid completed_since: rest.completed_since limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/tasks name: tasks description: REST surface for tasks. operations: - method: GET name: gettasks description: Asana Get multiple tasks call: tasks-tasks.gettasks with: project: rest.project section: rest.section workspace: rest.workspace assignee: rest.assignee completed_since: rest.completed_since modified_since: rest.modified_since limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - method: POST name: createtask description: Asana Create a task call: tasks-tasks.createtask with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/tasks/{task-gid} name: tasks-task-gid description: REST surface for tasks-task_gid. operations: - method: GET name: gettask description: Asana Get a task call: tasks-tasks.gettask with: task_gid: rest.task_gid outputParameters: - type: object mapping: $. - method: PUT name: updatetask description: Asana Update a task call: tasks-tasks.updatetask with: task_gid: rest.task_gid body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletetask description: Asana Delete a task call: tasks-tasks.deletetask with: task_gid: rest.task_gid outputParameters: - type: object mapping: $. - path: /v1/tasks/{task-gid}/subtasks name: tasks-task-gid-subtasks description: REST surface for tasks-task_gid-subtasks. operations: - method: GET name: getsubtasksfortask description: Asana Get subtasks from a task call: tasks-tasks.getsubtasksfortask with: task_gid: rest.task_gid limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - method: POST name: createsubtaskfortask description: Asana Create a subtask call: tasks-tasks.createsubtaskfortask with: task_gid: rest.task_gid body: rest.body outputParameters: - type: object mapping: $. - path: /v1/workspaces/{workspace-gid}/tasks/search name: workspaces-workspace-gid-tasks-search description: REST surface for workspaces-workspace_gid-tasks-search. operations: - method: GET name: searchtasksforworkspace description: Asana Search tasks in a workspace call: tasks-tasks.searchtasksforworkspace with: workspace_gid: rest.workspace_gid text: rest.text assignee.any: rest.assignee.any projects.any: rest.projects.any tags.any: rest.tags.any completed: rest.completed is_subtask: rest.is_subtask sort_by: rest.sort_by sort_ascending: rest.sort_ascending outputParameters: - type: object mapping: $. - type: mcp namespace: tasks-tasks-mcp port: 9090 transport: http description: MCP adapter for Asana Tasks API — Tasks. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: asana-get-tasks-project description: Asana Get tasks from a project hints: readOnly: true destructive: false idempotent: true call: tasks-tasks.gettasksforproject with: project_gid: tools.project_gid completed_since: tools.completed_since limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: asana-get-multiple-tasks description: Asana Get multiple tasks hints: readOnly: true destructive: false idempotent: true call: tasks-tasks.gettasks with: project: tools.project section: tools.section workspace: tools.workspace assignee: tools.assignee completed_since: tools.completed_since modified_since: tools.modified_since limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: asana-create-task description: Asana Create a task hints: readOnly: false destructive: false idempotent: false call: tasks-tasks.createtask with: body: tools.body outputParameters: - type: object mapping: $. - name: asana-get-task description: Asana Get a task hints: readOnly: true destructive: false idempotent: true call: tasks-tasks.gettask with: task_gid: tools.task_gid outputParameters: - type: object mapping: $. - name: asana-update-task description: Asana Update a task hints: readOnly: false destructive: false idempotent: true call: tasks-tasks.updatetask with: task_gid: tools.task_gid body: tools.body outputParameters: - type: object mapping: $. - name: asana-delete-task description: Asana Delete a task hints: readOnly: false destructive: true idempotent: true call: tasks-tasks.deletetask with: task_gid: tools.task_gid outputParameters: - type: object mapping: $. - name: asana-get-subtasks-task description: Asana Get subtasks from a task hints: readOnly: true destructive: false idempotent: true call: tasks-tasks.getsubtasksfortask with: task_gid: tools.task_gid limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: asana-create-subtask description: Asana Create a subtask hints: readOnly: false destructive: false idempotent: false call: tasks-tasks.createsubtaskfortask with: task_gid: tools.task_gid body: tools.body outputParameters: - type: object mapping: $. - name: asana-search-tasks-workspace description: Asana Search tasks in a workspace hints: readOnly: true destructive: false idempotent: true call: tasks-tasks.searchtasksforworkspace with: workspace_gid: tools.workspace_gid text: tools.text assignee.any: tools.assignee.any projects.any: tools.projects.any tags.any: tools.tags.any completed: tools.completed is_subtask: tools.is_subtask sort_by: tools.sort_by sort_ascending: tools.sort_ascending outputParameters: - type: object mapping: $.