naftiko: 1.0.0-alpha2 info: label: Asana description: 'Asana. 8 operations. Lead operation: Asana Get multiple tags. Self-contained Naftiko capability covering one Asana business surface.' tags: - Asana created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: ASANA_API_KEY: ASANA_API_KEY capability: consumes: - type: http namespace: asana-general baseUri: https://app.asana.com/api/1.0 description: Asana business capability. Self-contained, no shared references. resources: - name: tags path: /tags operations: - name: gettags method: GET description: Asana Get multiple tags outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: workspace in: query type: string description: The workspace to filter tags on. - name: opt_fields in: query type: array description: This endpoint returns a compact resource, which excludes some properties by default. To include those optional properties, set this query parameter to a comma-s - name: createtag method: POST description: Asana Create a tag outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: opt_fields in: query type: array description: This endpoint returns a compact resource, which excludes some properties by default. To include those optional properties, set this query parameter to a comma-s - name: body in: body type: object description: Request body (JSON). required: true - name: tags-tag_gid path: /tags/{tag_gid} operations: - name: gettag method: GET description: Asana Get a tag outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: opt_fields in: query type: array description: This endpoint returns a compact resource, which excludes some properties by default. To include those optional properties, set this query parameter to a comma-s - name: updatetag method: PUT description: Asana Update a tag outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: opt_fields in: query type: array description: This endpoint returns a compact resource, which excludes some properties by default. To include those optional properties, set this query parameter to a comma-s - name: deletetag method: DELETE description: Asana Delete a tag outputRawFormat: json outputParameters: - name: result type: object value: $. - name: tasks-task_gid-tags path: /tasks/{task_gid}/tags operations: - name: gettagsfortask method: GET description: Asana Get a task's tags outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: opt_fields in: query type: array description: This endpoint returns a compact resource, which excludes some properties by default. To include those optional properties, set this query parameter to a comma-s - name: workspaces-workspace_gid-tags path: /workspaces/{workspace_gid}/tags operations: - name: gettagsforworkspace method: GET description: Asana Get tags in a workspace outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: opt_fields in: query type: array description: This endpoint returns a compact resource, which excludes some properties by default. To include those optional properties, set this query parameter to a comma-s - name: createtagforworkspace method: POST description: Asana Create a tag in a workspace outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: opt_fields in: query type: array description: This endpoint returns a compact resource, which excludes some properties by default. To include those optional properties, set this query parameter to a comma-s - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.ASANA_API_KEY}}' exposes: - type: rest namespace: asana-general-rest port: 8080 description: REST adapter for Asana. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/tags name: tags description: REST surface for tags. operations: - method: GET name: gettags description: Asana Get multiple tags call: asana-general.gettags with: workspace: rest.workspace opt_fields: rest.opt_fields outputParameters: - type: object mapping: $. - method: POST name: createtag description: Asana Create a tag call: asana-general.createtag with: opt_fields: rest.opt_fields body: rest.body outputParameters: - type: object mapping: $. - path: /v1/tags/{tag-gid} name: tags-tag-gid description: REST surface for tags-tag_gid. operations: - method: GET name: gettag description: Asana Get a tag call: asana-general.gettag with: opt_fields: rest.opt_fields outputParameters: - type: object mapping: $. - method: PUT name: updatetag description: Asana Update a tag call: asana-general.updatetag with: opt_fields: rest.opt_fields outputParameters: - type: object mapping: $. - method: DELETE name: deletetag description: Asana Delete a tag call: asana-general.deletetag outputParameters: - type: object mapping: $. - path: /v1/tasks/{task-gid}/tags name: tasks-task-gid-tags description: REST surface for tasks-task_gid-tags. operations: - method: GET name: gettagsfortask description: Asana Get a task's tags call: asana-general.gettagsfortask with: opt_fields: rest.opt_fields outputParameters: - type: object mapping: $. - path: /v1/workspaces/{workspace-gid}/tags name: workspaces-workspace-gid-tags description: REST surface for workspaces-workspace_gid-tags. operations: - method: GET name: gettagsforworkspace description: Asana Get tags in a workspace call: asana-general.gettagsforworkspace with: opt_fields: rest.opt_fields outputParameters: - type: object mapping: $. - method: POST name: createtagforworkspace description: Asana Create a tag in a workspace call: asana-general.createtagforworkspace with: opt_fields: rest.opt_fields body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: asana-general-mcp port: 9090 transport: http description: MCP adapter for Asana. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: asana-get-multiple-tags description: Asana Get multiple tags hints: readOnly: true destructive: false idempotent: true call: asana-general.gettags with: workspace: tools.workspace opt_fields: tools.opt_fields outputParameters: - type: object mapping: $. - name: asana-create-tag description: Asana Create a tag hints: readOnly: false destructive: false idempotent: false call: asana-general.createtag with: opt_fields: tools.opt_fields body: tools.body outputParameters: - type: object mapping: $. - name: asana-get-tag description: Asana Get a tag hints: readOnly: true destructive: false idempotent: true call: asana-general.gettag with: opt_fields: tools.opt_fields outputParameters: - type: object mapping: $. - name: asana-update-tag description: Asana Update a tag hints: readOnly: false destructive: false idempotent: true call: asana-general.updatetag with: opt_fields: tools.opt_fields outputParameters: - type: object mapping: $. - name: asana-delete-tag description: Asana Delete a tag hints: readOnly: false destructive: true idempotent: true call: asana-general.deletetag outputParameters: - type: object mapping: $. - name: asana-get-task-s-tags description: Asana Get a task's tags hints: readOnly: true destructive: false idempotent: true call: asana-general.gettagsfortask with: opt_fields: tools.opt_fields outputParameters: - type: object mapping: $. - name: asana-get-tags-workspace description: Asana Get tags in a workspace hints: readOnly: true destructive: false idempotent: true call: asana-general.gettagsforworkspace with: opt_fields: tools.opt_fields outputParameters: - type: object mapping: $. - name: asana-create-tag-workspace description: Asana Create a tag in a workspace hints: readOnly: false destructive: false idempotent: false call: asana-general.createtagforworkspace with: opt_fields: tools.opt_fields body: tools.body outputParameters: - type: object mapping: $.