PollyHub

Asana Connector

Clean

Access Asana with managed OAuth to create, search, update, and manage tasks, projects, and workspaces using the Asana API.

SKILL.md

---
name: asana-connector
description: "Access Asana project management with managed OAuth. Create, search, update, and manage tasks, projects, and workspaces. Use when the user wants to create an Asana task, list tasks in a project, update task status, search tasks, or manage Asana projects."
metadata:
  polly:
    polly_managed_connector: true
    auth:
      - env: ASANA_ACCESS_TOKEN
        type: oauth2
        integration_id: asana
        description: Asana OAuth access
    primaryEnv: ASANA_ACCESS_TOKEN
---

# Asana Connector

Access Asana through the Asana REST API v1 using managed OAuth.

## First-Time Setup

If Asana is not connected yet, run:

`manage_auth(action="connect", integration_id="asana", auth_env="ASANA_ACCESS_TOKEN")`

## Auth & Security

- Authentication is managed by Polly + Nango from `metadata.polly.auth`
- Never ask users to paste tokens in chat
- Never print or log token values
- If auth fails, reconnect with:
  `manage_auth(action="connect", integration_id="asana", auth_env="ASANA_ACCESS_TOKEN")`

## Base URL

`https://app.asana.com/api/1.0`

All requests include:

`Authorization: Bearer $ASANA_ACCESS_TOKEN`

## Quick Usage

List workspaces:

```bash
curl -sS \
  -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
  "https://app.asana.com/api/1.0/workspaces"
```

List projects in a workspace:

```bash
curl -sS \
  -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
  "https://app.asana.com/api/1.0/projects?workspace=<workspaceId>"
```

List tasks in a project:

```bash
curl -sS \
  -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
  "https://app.asana.com/api/1.0/tasks?project=<projectId>"
```

Get a task:

```bash
curl -sS \
  -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
  "https://app.asana.com/api/1.0/tasks/<taskId>"
```

Create a task:

```bash
curl -sS -X POST \
  -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"data":{"name":"New Task","workspace":"<workspaceId>","projects":["<projectId>"]}}' \
  "https://app.asana.com/api/1.0/tasks"
```

Update a task:

```bash
curl -sS -X PUT \
  -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"data":{"completed":true}}' \
  "https://app.asana.com/api/1.0/tasks/<taskId>"
```

Search tasks in a workspace:

```bash
curl -sS \
  -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
  "https://app.asana.com/api/1.0/workspaces/<workspaceId>/tasks/search?text=bug+fix"
```

## Rules

- Use `opt_fields` query parameter to request only needed fields and reduce response size
- For pagination, pass `offset` from prior responses
- Wrap create/update payloads in a `{"data": {...}}` envelope
- On API errors, surface status + response body clearly
- On 401/403, reconnect with:
  `manage_auth(action="connect", integration_id="asana", auth_env="ASANA_ACCESS_TOKEN")`
- Never log, echo, or expose credential values in any output
Authorstella
Downloads3
Versions2
Published1d ago
Auth Requirements
ASANA_ACCESS_TOKENoauth2

integration: asana

Version History

v1.1.0latest

Add polly_managed_connector flag and connector-skill tag

Apr 9, 2026

Clean.zip
v1.0.0

Initial release of v0.8 Tier 3 connectors

Apr 9, 2026

Clean.zip

SHA-256 (latest)

05af7a3771c75095111ab6576cb65825b734a5dc1614cd88fed7f9994e37701d