Linear (API key) ACTION
Create Document
Create a new Linear document (a spec, brief, runbook or meeting notes) and attach it to exactly one project, initiative, team or issue so teammates can find it. Set exactly one of
projectId, initiativeId, teamId or issueId. If the user did not say where the document belongs and the choice is ambiguous, ask them before calling this tool rather than guessing. Use List Projects, List Initiatives, Get Teams or Search Issues to look up the ID. To change an existing document, use Update Document instead; to check whether a document already exists, use Search Documents. content is markdown. The response does not echo the body back; use Get Document to read it. Example: title: "Dust Storm Shelter Spec", content: "# Overview\n\nShelter requirements...", projectId: "a1b2c3d4-0000-0000-0000-000000000001" → returns {success: true, document: {id: "29a25062-...", title: "Dust Storm Shelter Spec", slugId: "10b5bc2940c7", url: "https://linear.app/.../document/dust-storm-shelter-spec-10b5bc2940c7", project: {id: "a1b2c3d4-...", name: "Mars Colony"}}}. See the documentation- Action
- Writes data
- API key
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Linear (API key) account once, then configure and run Create Document 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: "linear_app-create-document",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
linear_app: { authProvisionId: "apn_xxxxxxx" },
title: "Title",
content: "Content",
},
})
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": "linear_app-create-document",
"configured_props": {
"linear_app": { "authProvisionId": "apn_xxxxxxx" },
"title": "Title",
"content": "Content"
}
}'// 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": "linear_app",
},
},
},
)
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: "linear_app-create-document",
arguments: {
title: "Title",
content: "Content",
},
})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 |
|---|---|---|
title Title | string | The title of the document. Example: Q3 Hiring Plan. Required |
content Content | string | The document body in markdown. Example: # Goals\n\n- Hire two engineers. Optional |
projectId Project | string | The UUID or identifier of the project to attach the document to (e.g. a1b2c3d4-0000-0000-0000-000000000001 or P-LIN-123). Set exactly one of projectId, initiativeId, teamId or issueId. Use List Projects to find valid project IDs. Optional |
initiativeId Initiative | string | The UUID or identifier of the initiative to attach the document to (e.g. b2c3d4e5-0000-0000-0000-000000000002 or I-12). Set exactly one of projectId, initiativeId, teamId or issueId. Use List Initiatives to find valid initiative IDs. Optional |
teamId Team | string | The UUID of the team to attach the document to (e.g. 9d1c3f7e-2b48-4c6a-9f1e-5a7b8c9d0e1f). The short team key such as ENG is rejected. Set exactly one of projectId, initiativeId, teamId or issueId. Use Get Teams to find valid team IDs. Optional |
issueId Issue | string | The UUID or identifier of the issue to attach the document to (e.g. 7df5e7f9-a357-4539-ae94-4a004fec635f or ENG-123). Set exactly one of projectId, initiativeId, teamId or issueId. Use Search Issues to find valid issues. Optional |
ownerId Owner | string | The UUID of the user who owns the document (e.g. abc12345-0000-0000-0000-000000000001). Use List Users to find valid user IDs. Optional |
icon Icon | string | The document icon, as an emoji shortcode. Raw emoji such as 📄 are rejected. Example: :page_facing_up:. Optional |
color Color | string | The color of the document icon, as a hex code. Example: #5e6ad2. 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
- linear_app-create-document
- Version
- 0.0.2
- App
- Linear (API key)
- Authentication
- API key
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗