List workspaces
asana-list-workspaces
List the workspaces and organizations the token can reach, 25 per page, with each one's gid and name. Asana returns next_page.offset when there are more; pass it as offset for the next page.
AnlyonTasks integration
Let an agent run the follow-ups without rewriting the plan. It reads projects and tasks, creates, updates and comments under a daily limit, and completing or deleting a task can wait for a person.
Connect
bound to app.asana.com
What you create
Connecting allows nothing by itself. No API returns the credential afterwards, to you, to the console or to an agent, and Anlyon refuses to send it anywhere but app.asana.com.
Operations
Each one is a named tool, off until you switch it on, and Anlyon makes every call with the credential your agent never sees. Reads return what Asana answers and change nothing. Writes count against a limit you set, can wait for a person, and are read back from Asana wherever it allows.
Reads
asana-list-workspaces
List the workspaces and organizations the token can reach, 25 per page, with each one's gid and name. Asana returns next_page.offset when there are more; pass it as offset for the next page.
asana-list-projects
List the projects in one workspace, 25 per page, with name, archived, team and permalink. Pass archived=false to leave archived projects out. Asana returns next_page.offset when there are more; pass it as offset for the next page. Asana warns this can time out in very large organizations.
asana-get-project
Get one project: name, notes, owner, team, workspace, dates, archived and completed state, the latest status update's title, and its permalink.
asana-list-sections
List the sections of one project, 50 per page, with each one's gid and name, in project order. Asana returns next_page.offset when there are more; pass it as offset for the next page.
asana-list-project-tasks
List the tasks in one project, 25 per page, with name, completed, assignee, due date and permalink. Pass completed_since=now for incomplete tasks only (or an ISO 8601 date-time for tasks incomplete or completed since then). Asana returns next_page.offset when there are more; pass it as offset for the next page.
asana-list-section-tasks
List the tasks in one section, 25 per page, with name, completed, assignee, due date and permalink. Pass completed_since=now for incomplete tasks only. Asana returns next_page.offset when there are more; pass it as offset for the next page. Asana's reference labels this endpoint "board view only"; if it fails for a list-view project, use list-project-tasks.
asana-get-task
Get one task: name, notes, completed state, assignee, dates, parent, projects and sections, tags, followers, number of subtasks and permalink. Notes are returned in full; a very long task can be cut at 64 KB.
asana-list-subtasks
List the subtasks of one task, 25 per page, with name, completed, assignee, due date and permalink. Asana returns next_page.offset when there are more; pass it as offset for the next page.
asana-list-task-stories
List a task's stories (comments and activity such as assignments and due-date changes), 20 per page, oldest first, with text, author, type and time. Pass resource_subtype=comment_added for comments only, and sort_ascending=false for newest first. Asana returns next_page.offset when there are more; pass it as offset for the next page.
asana-list-tags
List the tags in one workspace, 50 per page, with each one's gid, name and color. Asana returns next_page.offset when there are more; pass it as offset for the next page.
Writes
asana-create-task
Create one task in a project, with a name and notes.
project_gidnamenotes
Read back
Read back by task id; the name must match.
asana-comment-on-task
Add one comment to a task.
task_gidtext
Read back
Read back by the comment's id; the text must match.
asana-complete-task
Mark one task complete.
task_gid
Read back
Read back from the task; it must be completed.
asana-reopen-task
Mark one completed task incomplete.
task_gid
Read back
Read back from the task; it must not be completed.
asana-update-task
Change one task's name, notes, due date (YYYY-MM-DD) or assignee ("me", a user gid or an email); only the fields given change.
task_gidnamenotesdue_onassignee
Read back
Read back from the task; its name, notes, due date and last-modified time must equal what Asana returned for this update. Limitations: it cannot clear a due date or unassign a task, and the read-back fails if someone else edits the task in between.
asana-create-subtask
Create one subtask under a task, with a name and optional notes, assignee ("me", a user gid or an email) and due date.
task_gidnamenotesassigneedue_on
Read back
Read back by the new subtask's id; the name and parent must match.
asana-add-task-to-section
Move one task into a section of a project it is already in, at the top of the section; Asana removes it from the project's other sections.
section_gidtask_gid
Read back
Read back from the task; its first project membership must be in this section.
asana-add-follower
Add one follower ("me", a user gid or an email) to a task. A follower is notified of changes and can see the task even outside its projects.
task_gidfollower
Acknowledged
Sent once and acknowledged; not read back: a follower can be named as "me", a user gid or an email, while Asana lists followers by gid only, so a read-back cannot compare them.
asana-remove-follower
Remove one follower ("me", a user gid or an email) from a task.
task_gidfollower
Acknowledged
Sent once and acknowledged; not read back: a follower can be named as "me", a user gid or an email, while Asana lists followers by gid only, so a read-back cannot compare them.
asana-add-tag
Add one existing tag (by gid, from list-tags) to a task.
task_gidtag_gid
Read back
Read back from the task; the tag must be among its tags.
asana-remove-tag
Remove one tag (by gid) from a task.
task_gidtag_gid
Read back
Read back from the task; the tag must no longer be among its tags.
asana-delete-task
Delete one task (or subtask). Asana moves it to the deleting user's trash, where it can be restored in the Asana app for 30 days.
task_gid
Acknowledged
Sent once and acknowledged; not read back: Asana does not document what reading a deleted task returns.
asana-create-section
Create one section in a project.
project_gidname
Read back
Read back by the new section's id; the name and project must match.
asana-delete-section
Delete one empty section. Asana refuses a section that still has tasks, and the last section of a project.
section_gid
Acknowledged
Sent once and acknowledged; not read back: Asana does not document what reading a deleted section returns.
The brake
Suggested limits
Shared by every agent, session and key in the environment. You set the number.
Suggested approvals
Installed turned off. The reviewer sees the exact request, and the approved request is the one that runs.
Before you rely on it
Use it
npm install -g @anlyonhq/cli
anlyon auth login
# Shows where to create the key, then asks for it without echoing
anlyon connections add asana --secret ASANA
# From a clone of github.com/AnlyonHQ/anlyon-platform:
# see what would be installed, then switch on one operation
anlyon packs plan ./packs/asana
anlyon packs install ./packs/asana --action create-task --yesimport { Client } from "@anlyonhq/sdk";
const anlyon = new Client({ apiKey: process.env.ANLYON_AGENT_KEY! });
const { data } = await anlyon.actions.invoke(
"asana-create-task",
{
"project_gid": "1208801234567890",
"name": "Follow up with Acme",
"notes": "They asked for the security review."
},
);
if (data?.pendingApproval) {
console.log("Waiting for a person", data.approvalId);
} else {
console.log(data?.status, data?.responseStatus);
}# Claude Code. Sign in with the browser, no key to paste.
claude mcp add --transport http anlyon https://api.anlyon.com/mcp
# Then ask in plain words. Each operation you switched on is a tool.Prefer to click?
The console does all of it: connect, switch operations on, set the limit, and copy the setup for your agent.
More integrations
Free tier, no credit card. One command if you use Claude or Cursor.
$ claude mcp add anlyon -- npx -y @anlyonhq/mcp-server