Skip to main content
Glama

docswrite-publish-post

Publish Google Docs to one or more Docswrite connections as drafts, live posts, or scheduled posts; converts headings, images, links, and tables, then returns status and URL.

Instructions

Publish a Google Doc to one or more connections of the organization (ids from docswrite-list-connections). Docswrite converts the doc (headings, images, links, tables) and publishes it; one request per connection. state: draft (default), published, or scheduled (with publish_date, optionally timezone). Basic options (tags, categories, canonical_url, excerpt, slug, featured_image_url, author, post_type) apply where the platform supports them; a connection that does not support a given option is skipped with an explanation instead of being published without it. Waits up to wait_seconds for the results and returns each connection's status and live URL (or error). The Google Doc must be readable by the Docswrite user who created the API key. X and LinkedIn cannot be published to through the API.

Input Schema

NameRequiredDescriptionDefault
slugNoURL slug (WordPress, hosted blog, Shopify, GitHub, Ghost)
tagsNoTag names (array or comma-separated). WordPress creates missing tags; Dev.to keeps 4, Hashnode 5, Medium 3
stateNodraft (default), published (live now), or scheduled (needs publish_date)draft
titleNoPost title. Defaults to the Google Doc title
authorNoAuthor name, username or email (WordPress, Shopify, GitHub)
excerptNoExcerpt / description (WordPress, hosted blog, GitHub, Dev.to, Ghost)
timezoneNoIANA time zone for a wall-clock publish_date, e.g. America/New_York. Defaults to the connection's time zone
post_typeNoWordPress only: post (default) or page
categoriesNoCategory names (WordPress, GitHub)
google_docYesGoogle Doc URL (https://docs.google.com/document/d/<id>/edit) or document ID
publish_dateNoFor state=scheduled: a future date, either ISO 8601 with offset (2026-10-01T09:00:00Z) or a wall-clock time YYYY-MM-DDTHH:mm read in `timezone`
wait_secondsNoHow long to wait for the results (default 90, 0 = return job ids at once)
canonical_urlNoCanonical URL (Dev.to, Hashnode, Medium, Ghost; WordPress via Yoast SEO)
connection_idsYesConnection ids to publish to (array, or one id / comma-separated ids)
idempotency_keyNoReuse the same key to retry safely: within 24 h a repeat returns the first result instead of publishing twice. Default: a new key per call
platform_optionsNoAdvanced per-platform options; each block only applies to connections on that platform
featured_image_urlNoFeatured/cover image URL. By default the first image in the doc is used where supported

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description carries the full burden, and it discloses real behavioral nuance: one request per connection, connections that don't support an option are skipped with an explanation rather than published incorrectly, wait_seconds bounds the wait and each connection returns status plus live URL or error, the doc must be readable by the API-key user, and X/LinkedIn are unsupported. It does not state whether publishing is irreversible or how retries interact with idempotency_key, which are the remaining gaps for a write tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action and its scope are front-loaded, followed by state handling, option application, and waiting/return behavior. It is dense but nearly every sentence adds operative detail; the description is one long paragraph rather than clearly delimited ideas, which slightly hurts scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter tool with nested platform_options and no output schema, the description covers the essentials: what is published, how options are applied per platform, the timeout behavior, and the shape of the result (per-connection status and live URL or error). It does not explain how to retrieve results when wait_seconds=0 returns job ids early, leaving a small gap given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3, but the description adds cross-parameter relationships the schema cannot express: scheduled requires publish_date (and optionally timezone), basic options are applied only where the platform supports them, and unsupported options cause a skip rather than a silent drop. These are genuine additions on top of the per-field schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Publish a Google Doc to one or more connections of the organization') and explicitly distinguishes its sibling by naming docswrite-list-connections as the source of ids. It also names the unsupported platforms (X, LinkedIn), so an agent can rule the tool in or out without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditions for the state parameter (draft default, scheduled requires publish_date) and routes the agent to docswrite-list-connections for ids. It stops short of saying what to do after the call returns early (e.g. use docswrite-get-post-status when wait_seconds=0 returns job ids), which is the main sibling-routing gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.