Asana ACTION
List Teams
Retrieves all teams in a specified Asana workspace. Use this action to discover available team GIDs for creating projects or organizing work by department. Requires a workspace GID from List Workspaces. Results are paginated (default 25 per page); pass the returned
next_offset as offset to fetch additional pages. Consider following up with Create Project to create a project under a team. Example: call with workspace: '1200123456789012' → returns {data: [{gid: '1203456789012345', name: 'Design'}, ...], next_offset: null}. See the documentation- Action
- Read only
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Asana account once, then configure and run List Teams from your backend or agent.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "asana-list-teams",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
asana: { authProvisionId: "apn_xxxxxxx" },
workspace: "Workspace",
optFields: ["Opt Fields"],
},
})
console.log(result)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "asana-list-teams",
"configured_props": {
"asana": { "authProvisionId": "apn_xxxxxxx" },
"workspace": "Workspace",
"optFields": ["Opt Fields"]
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "asana",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
name: "asana-list-teams",
arguments: {
workspace: "Workspace",
optFields: ["Opt Fields"],
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
workspace Workspace | string | The workspace to list teams for (a real workspace GID, not the example value below). Use List Workspaces to find valid GIDs — do not guess or reuse the example shown here. Format example: "120111222333444". Required |
optFields Opt Fields | string[] | This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a list of the properties you wish to include (e.g. ["name", "description", "organization"]). Optional |
limit Limit | integer | The number of teams to return per page. Defaults to 25. Maximum is 100. Optional |
offset Offset | string | Offset token. An offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results. Note: You can only pass in an offset that was returned to you via a previously paginated request (e.g. "3:0:abcdef123456"). Optional |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- asana-list-teams
- Version
- 1.0.3
- App
- Asana
- Authentication
- OAuth
- Read-only
- Yes
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗