Google Docs ACTION
List Tabs
List the tabs in a Google Doc — each tab's ID, title, position and nesting. A Google Doc can hold many tabs, and an omitted Tab ID means different things per operation: content writes (Insert Text, Insert Table, Insert Image, Insert Page Break, Write Table, Delete Table) go to the first tab; Replace Text replaces in every tab; the styling tools (Format Text, Format Paragraph, Format Table Cell, Apply Bullets, Remove Bullets) cover every tab when the target is located by Find Text, but only the first tab when given explicit indices. So call this first whenever the job names a tab ("add this to the Budget tab") or the document might have more than one. Returns
{documentId, tabCount, tabs: [{tabId, title, index, nestingLevel, parentTabId}]}, in document order, with each parent followed by its nested child tabs. Pass a tabId from this list to Get Document to read one tab, or to Insert Text, Write Table, Insert Image, Insert Table, Insert Page Break, Delete Table or Replace Text to edit one. Use Find Document to resolve a document's name to its ID. This tool set can list tabs, add a tab (Create Tab) and read or write a named tab; it cannot rename, reorder or delete an existing tab — say so plainly rather than attempting a workaround. See the documentation- Action
- Read only
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Google Docs account once, then configure and run List Tabs 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: "google_docs-list-tabs",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
google_docs: { authProvisionId: "apn_xxxxxxx" },
documentId: "Document ID",
},
})
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": "google_docs-list-tabs",
"configured_props": {
"google_docs": { "authProvisionId": "apn_xxxxxxx" },
"documentId": "Document ID"
}
}'// 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": "google_docs",
},
},
},
)
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: "google_docs-list-tabs",
arguments: {
documentId: "Document ID",
},
})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 |
|---|---|---|
documentId Document ID | string | The ID of the Google Doc. This is the long string in the document's URL: https://docs.google.com/document/d/{DOCUMENT_ID}/edit. Use Find Document to resolve a document's name to its ID. Required |
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
- google_docs-list-tabs
- Version
- 0.0.1
- App
- Google Docs
- Authentication
- OAuth
- Read-only
- Yes
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗