Asana ACTION
Search Projects
Finds projects across an entire Asana workspace, optionally filtered by name (e.g.
Website Redesign). Results are workspace-wide and are not limited to any portfolio, and there is no due-date filter. Archived projects are included unless you set archived: false. Every result includes workspace.gid — reuse that value directly for the workspace param on a follow-up action like Create Task, no need to look it up separately. If you need portfolio-scoped results, use List Portfolios and List Portfolio Items instead. Example: call with workspace: '1200123456789012', name: 'Marketing' → returns [{gid: '1204567890123456', name: 'Q4 Marketing Campaign', workspace: {gid: '1200123456789012'}}, ...]. See the documentation- Action
- Read only
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Asana account once, then configure and run Search Projects 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-search-projects",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
asana: { authProvisionId: "apn_xxxxxxx" },
name: "Name",
workspace: "Workspace",
},
})
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-search-projects",
"configured_props": {
"asana": { "authProvisionId": "apn_xxxxxxx" },
"name": "Name",
"workspace": "Workspace"
}
}'// 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-search-projects",
arguments: {
name: "Name",
workspace: "Workspace",
},
})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 |
|---|---|---|
name Name | string | The name to filter projects on (client-side substring match), e.g. Website Redesign. Optional |
workspace Workspace | string | The workspace or organization GID to filter projects on, e.g. 1201234567890123. Use the List Workspaces action to find available workspace GIDs. If omitted, projects across all accessible workspaces are returned. Optional |
archived Archived | boolean | Only return projects whose archived field matches this value. Set to false to exclude archived projects; if omitted, both archived and non-archived projects are returned. Example: false. Optional |
optFields Opt Fields | string[] | Optional project properties to include in the response (e.g. created_at, start_on, due_on, archived, custom_fields). Nested paths are allowed; gid is always returned. Optional |
maxResults Max Results | integer | Maximum number of projects to return (min 1, max 9999), e.g. 100. 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-search-projects
- Version
- 0.3.4
- App
- Asana
- Authentication
- OAuth
- Read-only
- Yes
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗