Pipepost
Pipepost is a content publishing pipeline MCP server for Claude Code, enabling you to optimize, publish, promote, and analyze content across multiple platforms directly from the terminal.
SEO & Indexing: Score content for readability/keyword density (
seo_score), generate meta tags and Open Graph tags (seo_meta), generate JSON-LD structured data (seo_schema), and submit URLs to search engines via IndexNow (index_now).Publishing: Publish to Dev.to, Ghost, Hashnode, WordPress, Medium, and Substack (
publish); cross-publish to multiple platforms simultaneously with automatic canonical URL wiring (cross_publish); list existing posts (list_posts).Draft Management: Save, list, retrieve, and delete local drafts (
save_draft,list_drafts,get_draft,delete_draft).Content Quality: Audit markdown for readability, structure, and heading hierarchy (
content_audit), and validate all links (check_links).Content Repurposing: Generate platform-optimized social posts for Twitter, LinkedIn, Reddit, and Bluesky (
generate_social_posts), and transform blog posts into Twitter threads, LinkedIn posts, Reddit posts, newsletter intros, and more (repurpose).Direct Social Posting: Post single posts or threads to Bluesky, Mastodon, LinkedIn, and X/Twitter (
bluesky_post,mastodon_post,linkedin_post,x_post).Social Listening & Engagement: Monitor Bluesky mentions (
bluesky_mentions), search public Bluesky posts (bluesky_search), fetch conversation threads (bluesky_thread), and reply to posts (bluesky_reply).Images & Formatting: Search Unsplash for attributed cover images (
cover_image), and generate frontmatter for Hugo, Jekyll, Astro, Next.js, Dev.to, Hashnode, and Ghost (frontmatter).Analytics: Fetch views, reactions, and comments across all configured platforms (
analytics).Account Management: Configure API credentials (
setup), activate credit packs (activate), and check configuration and credit balance (status).
Generates frontmatter for Astro content management system, auto-extracting description, reading time, slug, and tags from content.
Posts directly to Bluesky as single posts or threaded series, searches public posts, fetches conversations, replies to posts, and lists mentions for the configured account.
Publishes content to Dev.to platform, lists published posts, fetches analytics, and supports featured images through API integration.
Publishes content to Ghost CMS, lists published posts, fetches analytics, and supports featured images through Ghost Admin API.
Integrates with Hashnode's GraphQL API for publishing content, listing posts, fetching analytics, and managing featured images.
Publishes content to Hashnode platform, lists published posts, fetches analytics, and supports featured images through GraphQL API.
Generates frontmatter for Hugo static site generator, auto-extracting description, reading time, slug, and tags from content.
Generates frontmatter for Jekyll static site generator, auto-extracting description, reading time, slug, and tags from content.
Posts directly to any Mastodon instance as single posts or threaded series with write:statuses scope.
Publishes content to Medium platform and supports featured images through Medium API integration.
Generates frontmatter for Next.js framework, auto-extracting description, reading time, slug, and tags from content.
Generates platform-optimized Reddit posts with titles, bodies, and suggested subreddits for content repurposing.
Searches Unsplash for cover images with proper attribution through Unsplash API integration.
Publishes content to WordPress sites, lists published posts, and fetches analytics through WordPress REST API.
|> Pipepost
Publish from your terminal.
MCP server that turns Claude Code into a complete content publishing pipeline — SEO, multi-platform publishing, social promotion, and analytics.
See it in one chat turn
→ Real agent-loop transcript — Claude Code takes a draft, audits it, scores SEO, fixes issues, cross-publishes to 5 CMS platforms with canonical URL wiring, generates social promo posts for Twitter/LinkedIn/Bluesky, and submits to IndexNow. One prompt. ~90 seconds. 2 credits.
Related MCP server: markpost
Why Pipepost?
Task | Without Pipepost | With Pipepost |
Publish to Dev.to | Copy-paste into browser, format, add tags, submit | "Publish this to Dev.to as a draft" |
Cross-post to 5 platforms | Repeat the above five times | "Cross-publish to all platforms" |
SEO optimization | Switch between 3 tools, copy results back | "Score this for SEO targeting 'mcp servers'" |
Social promotion | Write separate posts for each network | "Generate social posts for Twitter, LinkedIn, and Reddit" |
Cover images | Browse Unsplash, download, upload, add attribution | "Find a cover image for this article" |
Search indexing | Wait days for crawlers to find your content | "Submit this URL to IndexNow" |
Content analytics | Log into 5 dashboards, compare manually | "Show my analytics across all platforms" |
Pre-publish QA | Manually check links, readability, structure | "Audit this article and check all links" |
Draft management | Copy between editors, lose track of versions | "Save this as a draft targeting Dev.to and Ghost" |
Canonical URLs | Manually set on each platform after cross-posting | Automatic — first platform URL wired to all others |
Quick Start
npx pipepost-mcp initAdd Pipepost to your Claude Code config (~/.claude/settings.json):
{
"mcpServers": {
"pipepost": {
"command": "npx",
"args": ["-y", "pipepost-mcp"]
}
}
}That's it. Try asking Claude:
Score this article for SEO targeting 'mcp servers'
Tools
SEO (4 tools)
Tool | Description | Cost |
| Analyze content for readability, keyword density, and heading structure | Free (basic) / Credits (full) |
| Generate meta title, description, and Open Graph tags | Credits |
| Generate JSON-LD structured data (Article, FAQ, HowTo) | Credits |
| Submit URLs to search engines for instant indexing via IndexNow | Free |
Publishing (3 tools)
Tool | Description | Cost |
| Publish to Dev.to, Ghost, Hashnode, WordPress, Medium, or Substack | 1 credit |
| Publish to multiple platforms with automatic canonical URL wiring | 1 credit |
| List published and draft posts from any platform | Free |
Drafts (4 tools)
Tool | Description | Cost |
| Save content as a local draft for later publishing | Free |
| List all saved drafts with status, platforms, and dates | Free |
| Retrieve a saved draft by ID | Free |
| Delete a saved draft by ID | Free |
Content Quality (2 tools)
Tool | Description | Cost |
| Audit markdown for quality issues — readability, structure, heading hierarchy | Free (basic) / Credits (full) |
| Validate all URLs in markdown — reports broken, redirected, and timed-out links | Free |
Content Repurposing (2 tools)
Tool | Description | Cost |
| Generate platform-optimized posts for Twitter, LinkedIn, Reddit, Bluesky | Credits |
| Transform a blog post into Twitter threads, LinkedIn posts, Reddit posts, HN titles, Bluesky posts, newsletter intros | Credits |
Broadcast (4 tools)
Tool | Description | Cost |
| Post directly to Bluesky as a single post or a threaded series. Bare URLs auto-linkified | Free |
| Post directly to any Mastodon instance as a single post or a threaded series | Free |
| Post to LinkedIn (personal). Person URN resolved automatically on first use and cached | Free |
| Post to X as a single tweet or reply-chained thread. OAuth 1.0a HMAC-SHA1 signing built in | Free |
Listening & Reply (4 tools)
Tool | Description | Cost |
| List notifications addressed to the configured account — mentions and replies by default | Free |
| Search public Bluesky posts by keyword, author, mentions, tag, or language. No auth needed | Free |
| Fetch the full conversation around a post — parents above, replies below, for reply context | Free |
| Reply to a Bluesky post (single reply or chained thread) — root + parent refs computed automatically | Free |
Images (1 tool)
Tool | Description | Cost |
| Search Unsplash for cover images with proper attribution | Free |
Content (1 tool)
Tool | Description | Cost |
| Generate frontmatter for Hugo, Jekyll, Astro, Next.js, Dev.to, Hashnode, Ghost | Free |
Analytics (1 tool)
Tool | Description | Cost |
| Fetch post views, reactions, and comments across all configured platforms | Free |
Account (3 tools)
Tool | Description | Cost |
| Configure API credentials for any platform | Free |
| Activate a credit pack license key | Free |
| Show current configuration and credit balance | Free |
How It Works
Install -- add the MCP server to Claude Code with
npx pipepost-mcp initConfigure -- use the
setuptool to store your platform API keys locallyCreate -- write content in Claude Code, then use SEO tools to optimize it
Publish -- publish to any platform with natural language, then promote with generated social posts
Pricing
Free | Starter ($8) | Pro ($19) | Power ($49) | |
Credits | 3/month | 10 | 30 | 100 |
SEO scoring | Basic | Full analysis | Full analysis | Full analysis |
SEO meta + schema | -- | ✔ | ✔ | ✔ |
Publish | ✔ | ✔ | ✔ | ✔ |
Cross-publish | ✔ | ✔ | ✔ | ✔ |
Social generation | -- | ✔ | ✔ | ✔ |
Repurpose | -- | ✔ | ✔ | ✔ |
3 free credits every month. Purchased credits never expire.
Cross-publishing to 5 platforms costs just 1 credit. Publishing + social generation for a single article costs 2 credits total.
Platform Support
CMS Platforms
Platform | Publish | List Posts | Analytics | Featured Images |
Dev.to | ✔ | ✔ | ✔ | ✔ |
Ghost | ✔ | ✔ | ✔ | ✔ |
Hashnode | ✔ | ✔ | ✔ | ✔ |
WordPress | ✔ | ✔ | ✔ | ✘ |
Medium | ✔ | ✘ | ✘ | ✔ |
Substack | ✔ | ✔ | ✘ | ✘ |
Social Platforms (Generation)
Platform | Format |
Twitter/X | Threads with hook, key points, and CTA |
Professional long-form posts | |
Post with title, body, and suggested subreddits | |
Bluesky | Short-form posts within character limits |
Hacker News | Optimized submission titles |
Newsletter | Intro paragraphs for email digests |
Frontmatter Formats
Hugo, Jekyll, Astro, Next.js, Dev.to, Hashnode, Ghost -- auto-extracts description, reading time, slug, and tags from your content.
Privacy & Security
Pipepost runs as alocal stdio process. Your API keys are stored in ~/.pipepost/config.json and never leave your machine. No cloud server, no telemetry, no data collection.
Architecture
Claude Code
|
| stdio
v
Pipepost MCP Server
|
|--- SEO Engine (local scoring, meta generation, JSON-LD)
|--- IndexNow API (Bing, Yandex, search engines)
|--- Unsplash API (cover images)
|--- Dev.to / Ghost / Hashnode / WordPress / Medium / Substack APIs
|--- Bluesky AT Protocol (post, search, reply)
|--- Mastodon API (any instance)
|--- LinkedIn /v2/ugcPosts
|--- X v2 /tweets (OAuth 1.0a)All processing happens locally. Platform APIs are only called when you explicitly publish, fetch analytics, or search for images.
API Key Setup
Platform | Where to get your key |
Dev.to | |
Ghost | Ghost Admin > Settings > Integrations > Custom |
Hashnode | |
WordPress | Users > Application Passwords |
Medium | |
Substack | DevTools → Application → Cookies → |
Unsplash | |
Bluesky | |
Mastodon |
|
linkedin.com/developers/apps (scopes: | |
X | developer.x.com — OAuth 1.0a app with read+write |
Contributing
git clone https://github.com/MendleM/Pipepost.git
cd Pipepost
pnpm install
pnpm test
pnpm buildRun in development mode with file watching:
pnpm devLicense
MIT
Available Tools
29 toolsactivateA
Activate a Pipepost credit-pack license key purchased from pipepost.dev. Validates the key against the license server and adds credits to the local balance. FREE. Returns: { activated: true, plan: 'starter'|'pro'|'power', credits_added, total_credits }. Common errors: invalid or already-redeemed key (VALIDATION_ERROR), license server unreachable (NETWORK_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| license_key | Yes | Your Pipepost license key from Lemon Squeezy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool validates the key against the license server, adds credits to the local balance, and returns a structured object with fields like activated, plan, credits_added, total_credits. It also mentions common error types. It does not discuss idempotency or behavior if the key is already activated, but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences: action, validation and credit addition, then return value and errors. It is front-loaded and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description is complete: it explains the action, provides the return shape, and lists common errors. No important aspect is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is fully covered (100%) with a clear description for license_key: 'Your Pipepost license key from Lemon Squeezy'. The description adds that the key is from pipepost.dev and validates against the license server, but this adds minimal value beyond the schema description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool activates a Pipepost credit-pack license key from pipepost.dev, with a specific verb+resource. It is distinct from sibling tools which include analytics, social media posting, and content management; none duplicate this function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use (for activating a purchased license key), notes it is FREE, and lists common errors (VALIDATION_ERROR, NETWORK_ERROR) to help decide if the tool is appropriate. However, it does not explicitly state when not to use or mention alternatives, but given no sibling tool serves the same purpose, this is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyticsA
Fetch post views, reactions, and comments from every configured CMS platform (devto, ghost, hashnode, wordpress) and aggregate the totals. FREE. Requires platform credentials. Medium and Substack are listed but their APIs do not expose post-level analytics. Returns: { platforms: [{ platform, posts: [{ title, url, views?, reactions?, comments?, published_at? }], note? }], summary: { total_posts, total_views, total_reactions } }. Common errors: no platforms configured (VALIDATION_ERROR), upstream auth failure surfaces per-platform in 'note'.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Specific platform to fetch analytics for, or omit for all configured platforms | |
| limit | No | Max posts to fetch per platform (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, description fully covers behavior: requires credentials, free, platform limitations, return format, and common errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficiently structured with two main sentences plus error notes. Front-loaded purpose, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description provides comprehensive return structure and error scenarios. Complete for a 2-parameter fetch tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value by explaining 'omit for all configured platforms' for platform parameter and default/behavior for limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it fetches post views, reactions, and comments from multiple CMS platforms and aggregates totals. Distinguishes from siblings which are social media or publishing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on required credentials, free usage, platform limitations, and common errors. Lacks explicit when-to-use vs alternatives but still helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_mentionsA
List notifications addressed to the configured Bluesky account: mentions and replies by default, optionally include reposts/likes/follows. FREE. Requires social.bluesky.handle and app_password. Returns: { notifications: [{ uri, cid, reason, author, record, indexed_at, is_read }] }. Common errors: missing credentials (VALIDATION_ERROR), AppView temporarily unavailable (PLATFORM_ERROR; the client falls back to bsky.social).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max notifications to return (default 50, max 100). | |
| cursor | No | Pagination cursor from a prior response. | |
| reasons | No | Filter by notification reason. Default: ["mention","reply"]. Other valid: like, repost, follow, quote. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description partially fills the gap by stating it lists notifications, returns a specific object, and mentions common errors and fallback behavior. However, it does not disclose rate limits, side effects, or confirm read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using three sentences to cover purpose, defaults, FREE status, required configuration, return format, and errors. It is front-loaded with the main action and avoids unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description provides a good level of completeness: it states the return structure, common errors, and fallback. It lacks ordering information but covers the essential context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the schema (100% coverage), so baseline is 3. The description adds the default reasons ('mention','reply') and valid values for 'reasons', but does not provide additional meaning for 'limit' or 'cursor' beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists notifications (mentions/replies) for the configured Bluesky account, with optional inclusion of reposts/likes/follows. It distinguishes itself from siblings like bluesky_post, bluesky_reply, and bluesky_search by focusing on the user's own notifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking notifications but does not explicitly provide when-to-use or when-not-to-use guidance relative to sibling tools. It mentions 'FREE' and required credentials, but no alternatives are suggested.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_postA
Post directly to Bluesky as a single post or a reply-chained thread. FREE. Requires social.bluesky.handle and social.bluesky.app_password configured via setup (app password from bsky.app/settings/app-passwords). 300 grapheme limit per post; bare URLs are auto-linkified into facets. Returns: { uri, cid, posts?: [{ uri, cid }] }. Common errors: missing credentials (VALIDATION_ERROR), grapheme overflow (VALIDATION_ERROR), Bluesky API 4xx (PLATFORM_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Single post text (<= 300 chars). Mutually exclusive with `thread`. | |
| thread | No | Array of posts to chain as a reply thread. Each <= 300 chars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure. It covers limits (300 graphemes), URL handling, return format (uri, cid, posts array), and common errors. It doesn't detail rate limits or visibility, but these are standard for posting tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with three sentences covering purpose, prerequisites, behavior, and errors. It front-loads the primary function and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two params, no output schema, no annotations), the description adequately covers purpose, prerequisites, limits, error types, and return format. Minor gaps include lack of detail on response handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description repeats the mutual exclusivity and character limits already present in the schema. It adds no new semantic information beyond what the input schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool posts directly to Bluesky as a single post or reply-chained thread. It uses specific verbs and resources, distinguishing it from sibling tools like bluesky_mentions or bluesky_reply.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context including prerequisites (configured handle and app password), grapheme limits, and URL auto-linkification. However, it doesn't explicitly exclude scenarios or mention alternative tools for replying or reading, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_replyA
Reply to a Bluesky post as a single reply or a chained thread. The root and parent strong-references required by the AT Protocol are computed automatically from the parent_uri. FREE. Requires social.bluesky.handle + app_password. 300 grapheme limit per post. Returns: { uri, cid, posts?: [{ uri, cid }] }. Common errors: missing credentials (VALIDATION_ERROR), parent post not found (VALIDATION_ERROR), grapheme overflow (VALIDATION_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| parent_uri | Yes | AT-URI of the post being replied to. | |
| text | No | Single reply text (<= 300 chars). Mutually exclusive with `thread`. | |
| thread | No | Chain of replies — first reply points at parent_uri, subsequent posts chain off the prior reply. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses credential requirements, grapheme limit, automatic computation of root/parent references, return format, and common errors. Lacks information on rate limits or idempotency, but covers key behaviors adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five concise sentences, front-loaded with primary action, no redundant parts. Efficiently conveys all necessary information without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description returns format and errors well. It lacks explicit mention of mutual exclusivity between text and thread (though schema covers it). Overall sufficient for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, yet description adds meaningful context: explains automatic computation of AT Protocol references, reinforces character limit, and clarifies the thread chain behavior. This goes beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Reply to a Bluesky post as a single reply or a chained thread,' specifying both the action and the resource. It effectively distinguishes from sibling tools like bluesky_post (new post) and bluesky_thread (view thread).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions requirements (credentials, grapheme limit) and common errors, guiding proper use. It implicitly differentiates from posting new content but could explicitly state when not to use it (e.g., for creating original posts). Still, it provides clear context for typical usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_searchA
Search public Bluesky posts by keyword, author, mentions, tag, or language via app.bsky.feed.searchPosts. FREE. Now requires Bluesky auth (handle + app password) because the AppView gates this endpoint. Returns: { posts: [{ uri, cid, author, text, created_at, like_count, repost_count }], cursor? }. Common errors: missing credentials (VALIDATION_ERROR), AppView 5xx (PLATFORM_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Lucene-style search query. Examples: 'claude code', '"MCP server"', 'content publishing'. | |
| limit | No | Max posts to return (default 25, max 100). | |
| cursor | No | ||
| sort | No | 'latest' (default) for freshness, 'top' for engagement. | |
| since | No | ISO date or datetime — only posts after this time. | |
| mentions | No | Filter to posts that mention this handle. | |
| author | No | Filter to posts by this handle. | |
| lang | No | BCP-47 language code (e.g. 'en'). | |
| tag | No | Filter to posts with ALL of these hashtags (no # prefix). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses the return format (posts array with fields), the need for authentication, the fact it's free, and common error types. This provides complete behavioral transparency for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences: purpose, auth requirement, return format and errors. It is front-loaded with the main action and avoids any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters and no output schema, the description covers the return structure, auth requirements, and common errors. It explains the key aspects needed for the agent to invoke the tool correctly, including the default for sort and the need for no hashtag prefix on tags (though tag detail is in schema). It feels complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (89%), so baseline is 3. The description adds value by clarifying the query format (Lucene-style, with examples) and explaining the sort enum meanings ('latest' for freshness, 'top' for engagement). This goes beyond the schema's minimal descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches public Bluesky posts with filters by keyword, author, mentions, tag, or language, using the specific endpoint. This differentiates it from sibling tools like bluesky_mentions (which may focus on mentions only) and bluesky_post (which creates posts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that authentication is now required (handle + app password) and lists common errors (VALIDATION_ERROR, PLATFORM_ERROR), guiding the user on prerequisites and error handling. However, it does not explicitly contrast this tool with alternatives like bluesky_mentions for mention-specific searches, leaving some ambiguity for the AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_threadA
Fetch the full conversation around a Bluesky post: parent posts above, reply tree below. Use this before bluesky_reply to understand the conversation. FREE. No credentials required for public threads. Returns: { thread: { post, parent?, replies?: thread[] } }. Common errors: post URI not found (VALIDATION_ERROR), AppView 5xx (PLATFORM_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | AT-URI of the post to fetch context for (e.g. at://did:plc:.../app.bsky.feed.post/xyz). | |
| depth | No | How many reply levels below to include (default 6). | |
| parent_height | No | How many parent levels above to include (default 80). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral disclosure burden. It mentions the tool is free, requires no credentials for public threads, describes the return format, and lists common errors (VALIDATION_ERROR, PLATFORM_ERROR). It does not mention rate limits or side effects, but for a read-only tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences front-load purpose, usage guideline, output/errors. Every sentence adds unique value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description specifies the return shape ({ thread: { post, parent?, replies?: thread[] } }) and mentions common errors. It covers all essential context for a read-only conversation fetch tool given the sibling list and annotations absence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% parameter description coverage (uri, depth, parent_height). The description adds value by stating defaults (depth default 6, parent_height default 80) beyond the schema's min/max constraints, making parameter usage clearer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function with specific verb 'Fetch' and resource 'full conversation around a Bluesky post', and distinguishes it from siblings like bluesky_reply by stating it should be used before replying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this before bluesky_reply to understand the conversation', giving clear context for when to use. Also notes 'FREE' and 'No credentials required' for public threads. Missing explicit when-not-to-use statements, but the direction is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_linksA
Validate every URL in a markdown document by issuing HEAD (then GET fallback) requests. FREE. Concurrency-limited to 10 in-flight requests; per-URL timeout 8s. Reports broken (4xx/5xx), redirected (3xx), and timed-out links. Returns: { total, ok, broken: [{ url, status }], redirects: [{ url, to }], timeouts: string[] }. Common errors: malformed markdown produces zero results without throwing.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The markdown content containing URLs to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses behavior: HEAD then GET fallback, reporting broken/redirected/timeout links, concurrency limits, per-URL timeout, and error handling (malformed markdown returns empty results). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: two sentences plus a clear output format list. It front-loads the purpose and key behavioral traits, making it efficient for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all relevant aspects: input, method, limits, output structure, and error cases. Given no output schema, it provides the return format explicitly. It is complete for a link validation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'content' is fully described in the schema. The tool description adds context about expected markdown input and outputs but does not add meaning beyond the schema for the parameter itself. Baseline 3 for 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates URLs in markdown documents using HEAD then GET fallback. It specifies the resource (URLs in markdown) and verb (validate), and implicitly distinguishes from siblings as no other tool does link checking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: it's free, concurrency-limited to 10 requests, timeout 8s, and common errors like malformed markdown. It doesn't explicitly contrast with alternatives, but no sibling does similar work, so it's adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_auditA
Audit a markdown article for pre-publish quality issues: heading hierarchy, paragraph length, sentence complexity, passive voice, missing alt text, broken header order. Basic audit (counts, summary) is FREE. Full audit (per-issue line numbers, severity, fix suggestions) costs 1 credit. Returns: { score, word_count, reading_time_min, issues: [{ severity, line?, message, fix? }] }. Common errors: insufficient credits for full audit (PAYMENT_REQUIRED).
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Run full analysis (requires credits). Includes readability, structure, tags, and heading hierarchy. | |
| content | Yes | The markdown content to audit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the cost model (free basic, paid full) and the return format. It does not explicitly state read-only, but the nature of an audit implies no destructive side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two paragraphs with no fluff. Every sentence adds value—purpose, checks, cost, return format, common errors. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's functionality, cost, return format, and common error. Without an output schema, it adequately describes the return object. It could mention handling of invalid or empty content, but overall it is complete for an audit tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions, but the tool description adds significant value by explaining what 'full' does (readability, structure, tags, heading hierarchy) and what basic provides (counts, summary). It also details the return object structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'audit' and the resource 'markdown article', listing specific checks (heading hierarchy, paragraph length, etc.). It differentiates from sibling tools by focusing on content quality rather than SEO or publishing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use basic vs full audit based on credit cost and mentions a common error (PAYMENT_REQUIRED). It does not explicitly compare to sibling tools, but the context of pre-publish quality is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cover_imageA
Search Unsplash for cover images. FREE. Requires Unsplash access_key via setup. Subject to Unsplash's 50 req/h demo or 5000 req/h production rate limit. Returns: { results: [{ url_full, url_regular, url_small, photographer, photographer_url, attribution_html, alt }] }. Common errors: missing Unsplash key (VALIDATION_ERROR), rate-limit exceeded (PLATFORM_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search terms for the image | |
| orientation | No | Image orientation (default: landscape) | |
| count | No | Number of results 1-5 (default: 3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool is free, requires an access key, has rate limits, and returns specific data. It also mentions common errors. It does not explicitly state that it is read-only, but the context implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using two sentences plus a compact representation of return format and errors. It is front-loaded with the core purpose. The return format could be more formal, but it is still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple external API search tool with three parameters, the description covers setup, rate limits, common errors, and return format. It could include pagination or ordering details, but it is largely complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the description adds no new information beyond the schema. It repeats the high-level purpose but does not provide additional semantic value for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search Unsplash for cover images,' specifying the external service, action, and resource. It distinguishes itself from sibling tools that perform different actions like 'get_draft' or 'publish'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by mentioning the free nature, required setup of an access key, and rate limits. It also lists common errors. However, it does not explicitly guide when to use this tool versus alternatives like other social media posting tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cross_publishA
Publish one article to multiple CMS platforms in a single call. Costs 1 credit total regardless of how many platforms (typical use: 5 platforms). The first successful platform's URL is wired as the canonical for the rest. Requires credentials for every target platform. Returns: { results: [{ platform, status: 'success'|'error', url?, error? }], canonical_url, summary: { ok, failed } }. Common errors: zero platforms configured (VALIDATION_ERROR), credit exhaustion (PAYMENT_REQUIRED). Per-platform failures are reported in results without aborting the whole call.
| Name | Required | Description | Default |
|---|---|---|---|
| platforms | Yes | Platforms to publish to: devto, ghost, hashnode, wordpress, medium, substack | |
| title | Yes | Article title | |
| content | Yes | Article content in markdown | |
| subtitle | No | Subtitle / dek (used by Substack) | |
| tags | No | Tags for the article | |
| status | No | Publish status | draft |
| featured_image_url | No | Featured image URL | |
| canonical_url | No | Canonical URL for cross-posting | |
| series | No | Series name (supported on Dev.to and Hashnode) | |
| primary_platform | No | Platform to treat as canonical source. Its published URL becomes the canonical_url for all other platforms. Defaults to the first platform in the list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It covers canonical URL wiring, per-platform failure behavior, common errors, and credit cost. This is comprehensive behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph but efficiently packs information. It could be structured into bullets for readability, but it is not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters and no output schema, the description provides return value structure, common errors, and per-platform result handling. It covers all necessary context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions. The description adds value by explaining canonical URL wiring, platform-specific notes (e.g., subtitle for Substack, series for Dev.to/Hashnode), and primary_platform behavior, which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Publish one article to multiple CMS platforms in a single call', which is a specific verb+resource. It distinguishes from sibling tools like 'publish' (likely single platform) and platform-specific tools (bluesky_post, linkedin_post, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions credit cost, credential requirement, and error handling. It doesn't explicitly state when to use this vs alternative tools like 'publish' or 'repurpose', but the context of multi-platform publishing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_draftA
Permanently delete a saved draft by id. FREE. Operation is irreversible. Returns: { deleted: true, id }. Common errors: draft id not found (VALIDATION_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Draft ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses key behaviors: irreversible deletion, return format, common errors. Could add auth or scope info, but sufficient for simple operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with action. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete with 1 param and no output schema, covers action, irreversibility, return shape, and common error. Fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with description 'Draft ID to delete'. Description adds minimal extra (e.g., 'by id'), not enhancing meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Permanently delete a saved draft by id.' Specific verb and resource, distinguishes from siblings like save_draft, get_draft, list_drafts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage from description, but no explicit when-to-use or when-not-to-use guidance. Does not mention alternatives or context beyond the action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
frontmatterA
Generate correctly-formatted frontmatter for SSGs and publishing platforms: hugo, jekyll, astro, nextjs, devto, hashnode, ghost. FREE. Auto-extracts description, reading_time, slug, and suggests tags from content. No external calls. Returns: { frontmatter: string, format, extracted: { slug, reading_time_min, description } }. Common errors: unknown format (VALIDATION_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The article title | |
| content | Yes | The article content — used to auto-extract description, reading time, tags | |
| format | Yes | Target frontmatter format | |
| tags | No | Optional tags — auto-extracted from content if omitted | |
| canonical_url | No | Canonical URL for the article | |
| featured_image | No | Featured/cover image URL | |
| author | No | Author name | |
| draft | No | Whether the post is a draft (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explicitly states 'No external calls' and describes auto-extraction of description, reading time, slug, and tags. It also specifies the return format and common errors (VALIDATION_ERROR for unknown format). This covers key behavioral aspects thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that packs important information efficiently: purpose, formats, features, return, and common errors. It is front-loaded and every sentence adds value. However, it could be slightly more structured (e.g., bullet points) for clarity, but it remains effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters (3 required) and no output schema, the description compensates by explaining the return value and extracted fields. It mentions common errors. The schema covers parameter meanings. The description is sufficient for an AI agent to use the tool, though edge cases (e.g., empty content) are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds context about auto-extraction from content but does not add substantial new meaning beyond what the schema already provides for each parameter. The explanation of auto-extraction is already implied by the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates frontmatter for specific SSGs and platforms, listing supported formats (hugo, jekyll, etc.). It uses a specific verb ('Generate') and resource ('frontmatter'), and the scope is clearly defined. The tool is distinct from siblings like publish or save_draft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is FREE and makes no external calls, which helps with usage decisions. It implies this is a utility step before publishing, but does not explicitly state when not to use it or alternatives. However, the context of sibling tools (publish, save_draft, etc.) makes the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_social_postsA
Generate platform-optimized social copy from an article: twitter (thread), linkedin (long form), reddit (post + suggested subreddits), bluesky (single post within 300 graphemes). Costs 1 credit per call regardless of platform count. No platform credentials required (this generates copy; use bluesky_post / linkedin_post / x_post / mastodon_post to actually post). Returns: { posts: { twitter?, linkedin?, reddit?, bluesky? } }. Common errors: insufficient credits (PAYMENT_REQUIRED).
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | Full article markdown content for rich generation | |
| title | No | Article title (used if content not provided) | |
| summary | No | Article summary (used if content not provided) | |
| url | No | Article URL for links and CTAs | |
| platforms | Yes | Platforms: twitter, linkedin, reddit, bluesky |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. Discloses cost, credential requirements, return structure, and common error. Slightly vague on whether it modifies any state, but generation is inherently read-like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with platforms and cost, then returns, then errors. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers inputs, outputs, error cases, cost, and alternatives. No output schema, but return structure is described clearly. Complete for the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, but description adds context: explains that content is preferred over title/summary, and platforms are listed. Clarifies usage of alternative fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes generating platform-optimized social copy from an article, lists specific platforms (twitter, linkedin, reddit, bluesky) with formats. Clearly distinguishes from posting tools by naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool: to generate copy (not post), and names alternatives for posting (bluesky_post, linkedin_post, etc.). Also notes cost (1 credit per call) and that no platform credentials are required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_draftA
Retrieve the full content of a saved draft by id. FREE. Returns: { id, title, content, created_at, platforms?: string[] }. Common errors: draft id not found (VALIDATION_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Draft ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses 'FREE' status, return format, and error condition. No annotations provided, so description carries burden; lacks mention of authorization or rate limits but adequate for simple read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded verb 'Retrieve', zero wasted words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for simple tool: specifies action, return shape, error. Minor gap: could mention relation to 'save_draft' or 'list_drafts'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with description. Description adds no new parameter semantics beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves draft content by ID. Distinguishes from siblings like 'list_drafts' (list all) and 'delete_draft' (delete).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use when you have a draft ID. Mentions common error (ID not found) but lacks explicit when-not or alternatives like using 'list_drafts' to get IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
index_nowA
Submit one or more URLs to the IndexNow API for instant search-engine indexing across Bing, Yandex, Naver, and Seznam (Google does not participate in IndexNow). FREE. No platform credentials required; uses the Pipepost shared key. Returns: { submitted: number, key, accepted: string[], rejected: string[] }. Common errors: malformed URL or non-https scheme (VALIDATION_ERROR), upstream 4xx from IndexNow (PLATFORM_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to submit for indexing | |
| urls | No | Batch of URLs to submit (max 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It transparently explains the API submission behavior, return format, and error types. It also states it's free and uses a shared key. However, it does not mention rate limits or potential side effects on the user's account, which would enhance completeness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: three sentences covering purpose, cost/credentials, and return/errors. It is front-loaded with the primary action. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple API submission tool, the description sufficiently covers the purpose, supported engines, cost, return format, and common errors. It lacks details on prerequisites (e.g., URL validity or domain ownership) and daily limits, but overall it is adequately complete given the lack of output schema and simple parameter schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters (url and urls) with clear descriptions and constraints. The description adds context about submitting 'one or more URLs' but does not provide additional semantics beyond the schema. Given 100% schema coverage, a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Submit one or more URLs to the IndexNow API for instant search-engine indexing' and specifies the target search engines (Bing, Yandex, Naver, Seznam) and excludes Google. This distinguishes it from sibling tools which focus on analytics, social posting, or content management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use (for submitting URLs to indexing across specific engines) and notes that no platform credentials are required and it's free. It also lists common errors, aiding proper usage. However, it does not explicitly contrast with sibling tools or mention when not to use, but the distinct purpose makes it clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_postA
Post directly to LinkedIn as a single feed post (max 3000 chars). FREE. Requires social.linkedin.access_token (w_member_social scope). Person URN is auto-resolved from /v2/userinfo on first use and cached. LinkedIn has no public threading API, so only single posts are supported. Returns: { urn, url }. Common errors: missing or expired access_token (VALIDATION_ERROR), LinkedIn 401 (PLATFORM_ERROR), 3000-char overflow (VALIDATION_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Post body (<= 3000 chars). LinkedIn has no threading primitive, so only single posts are supported. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: it's free, requires a specific access token and scope, auto-resolves and caches the person URN, and describes the return format along with common error conditions. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, with three short sentences, each providing essential information. It front-loads the core action and uses clear punctuation, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and no output schema, the description is fully complete. It covers the action, requirements, limitations, return format, and errors, leaving no significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a description for the 'text' parameter. The description adds meaningful context beyond the schema by specifying the 3000-character limit and the threading limitation, adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool posts directly to LinkedIn as a single feed post, with a max length of 3000 chars. It distinguishes itself from potential siblings that might do threading by explicitly noting LinkedIn has no public threading API.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions that only single posts are supported due to LinkedIn's lack of threading API, and lists common errors. This provides clear guidance on when to use this tool and what to expect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_draftsA
List every saved local draft with id, title, created_at, target platforms, and short preview. FREE. Reads from ~/.pipepost/drafts/. Returns: { drafts: [{ id, title, created_at, platforms?: string[], preview }] }. No errors.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations; description discloses read-only nature, file path, and specifies return format with 'No errors.' Adequate for a list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus one line for return type. No wasted words; all information is relevant and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description accurately defines return structure inline. Covers location, fields, and error behavior comprehensively for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage for the only parameter 'status' with enum and description. Description adds no extra detail, meeting baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List every saved local draft' with specific fields, distinguishing it from siblings like get_draft and delete_draft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States it is FREE and reads from a local path, implying no side effects. Does not explicitly contrast with alternatives, but purpose is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_postsA
List your published and draft posts on a configured platform (devto, ghost, hashnode, wordpress, medium, substack). FREE. Requires platform credentials. Returns: { posts: [{ id, title, status, url, published_at }] }. Common errors: platform not configured (VALIDATION_ERROR), upstream auth failure (PLATFORM_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Platform to list posts from | |
| status | No | all | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses it's a read operation (FREE), requires credentials, return shape, and common errors. Lacks pagination or rate limit details, but acceptable for a listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with main action. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides return format and common errors. Missing pagination info but otherwise complete for a simple listing tool with 3 params and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (33%) with only platform described. Description does not elaborate on status or limit beyond what schema shows. Does not compensate for missing param descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List your published and draft posts on a configured platform' with specific verb (List) and resource (posts), and enumerates supported platforms. It distinguishes from siblings like list_drafts which is a subset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: requires configured platform credentials, FREE, common errors. Does not explicitly exclude alternatives or state when not to use, but the context implies it's for listing posts on configured platforms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mastodon_postA
Post directly to any Mastodon instance as a single status or a threaded series. FREE. Requires social.mastodon.instance_url and social.mastodon.access_token (scope: write:statuses) via setup. Per-instance character limit usually 500. Returns: { id, url, posts?: [{ id, url }] }. Common errors: missing credentials (VALIDATION_ERROR), instance API 4xx (PLATFORM_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Single post text. Mutually exclusive with `thread`. | |
| thread | No | Array of posts to chain as a reply thread. | |
| max_length | No | Override the default 500-character limit if your instance allows longer posts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses character limit (500), return format, and common errors (VALIDATION_ERROR, PLATFORM_ERROR). Adds behavioral context beyond basic post action, though could mention rate limits or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences; each conveys essential info (action, credentials, limits, return, errors). No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, return format is described. Errors, credentials, and behavior are covered. All parameters are explained in schema or description. Sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but description adds value by explaining mutual exclusivity of 'text' and 'thread', and that 'max_length' overrides default limit. Could clarify that thread creates replies referencing previous posts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes specific verb 'post' and resource 'Mastodon instance', with distinction between single status and threaded series. Clearly differentiates from sibling tools targeting other platforms like Bluesky or X.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions required credentials (instance_url, access_token) and scope, and notes that the tool is free. Implicitly distinguishes from other platform-specific tools via platform name, but no explicit when-not-to-use or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publishA
Publish a markdown article to one CMS platform: devto, ghost, hashnode, wordpress, medium, or substack. Costs 1 credit per call. Requires platform credentials configured via the 'setup' tool. Supports draft|published status, tags, canonical_url, series, and cover image. Substack is published via reverse-engineered cookie auth. Returns: { url, id, platform, status }. Common errors: platform not configured (VALIDATION_ERROR), credit exhaustion (PAYMENT_REQUIRED), upstream 4xx/5xx (PLATFORM_ERROR), network timeout (NETWORK_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Publishing platform: devto, ghost, hashnode, wordpress, medium, substack | |
| title | Yes | Article title | |
| content | Yes | Article content in markdown | |
| subtitle | No | Subtitle / dek (used by Substack) | |
| tags | No | Tags for the article | |
| status | No | Publish status | draft |
| featured_image_url | No | Featured image URL | |
| canonical_url | No | Canonical URL for cross-posting | |
| series | No | Series name (supported on Dev.to and Hashnode) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses Substack's reverse-engineered cookie auth, return structure, common error scenarios, and costs. For a mutation tool, this is exceptional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph packs maximum information: platform list, cost, prerequisites, supported features, auth detail, return format, and common errors. No superfluous content; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema or annotations, description covers all necessary context: purpose, usage rules, parameter nuances, error handling, and return value. Agent has sufficient information to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 9 parameters are described in schema (100% coverage). Description adds value by noting platform-specific behavior (e.g., 'subtitle' only for Substack, 'series' only for Dev.to/Hashnode) and optionality, exceeding schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states action (publish), resource (markdown article), and target (one of six specific CMS platforms). Distinguishes from sibling tools like cross_publish and save_draft by specifying single-platform publishing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions prerequisite (platform credentials via 'setup' tool), cost (1 credit per call), and lists common error types with codes. Guides agent on when to use and what to check before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repurposeA
Transform a full blog post into platform-native content for twitter, linkedin, reddit, hackernews (title only), bluesky, newsletter (intro paragraph). Costs 1 credit per call. Output preserves URLs and respects each platform's character limits. Returns: { outputs: { twitter?: string[], linkedin?: string, reddit?: { title, body, subreddits }, hackernews?: string, bluesky?: string, newsletter?: string } }. Common errors: insufficient credits (PAYMENT_REQUIRED).
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The full markdown article to repurpose | |
| title | Yes | The article title | |
| url | No | The published article URL for links and CTAs | |
| platforms | Yes | Target platforms: twitter, linkedin, reddit, hackernews, bluesky, newsletter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses credit cost, output preservation of URLs and character limits, and error conditions. However, it does not mention idempotency, rate limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured paragraph that front-loads the main purpose and covers cost, output format, and errors concisely without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description is comprehensive: it explains the transformation, credit cost, output shape with TypeScript-like types, and common error. This is sufficient for an agent to understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% parameter description coverage, so the description adds marginal value beyond the schema. The description reiterates some context (credit cost, output shape) but does not clarify parameter specifics further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Transform' and resource 'full blog post' into specific platform-native content for six named platforms. This distinguishes it from sibling tools like 'generate_social_posts' or 'cross_publish'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions credit cost and common error but does not explicitly state when to use this tool versus alternatives. It implies usage for repurposing a blog post to platform-native formats, but lacks exclusions or comparison to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_draftA
Save markdown content as a local draft in ~/.pipepost/drafts/ (machine-local, never transmitted). FREE. Drafts can target one or more platforms for later publishing via 'publish' or 'cross_publish'. Returns: { id, title, created_at, platforms?: string[] }. Common errors: missing 'content' (VALIDATION_ERROR), filesystem write failure (PLATFORM_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Draft title | |
| content | Yes | Draft content in markdown | |
| platforms | No | Target platforms: devto, ghost, hashnode, wordpress, medium | |
| tags | No | Tags for the draft | |
| status | No | Draft status | draft |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states the tool is machine-local and never transmitted, and lists common errors with types. It also specifies the return structure. However, it does not mention authentication or rate limits, though not critical for a local tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise at 5 sentences, each providing distinct value: purpose, free cost, usage context, return structure, and common errors. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description includes return structure and common errors. It references sibling tools for later publishing. All 5 parameters are documented in the schema, and the description adds meaningful context, making it complete for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description adds value by explaining the context of platforms as targeting later publishing, and notes the tool is free. This goes beyond repeating schema information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool saves markdown content as a local draft in a specific path, distinguishing it from sibling tools like publish and cross_publish. The verb 'save' and resource 'local draft' are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description indicates when to use the tool (save locally for later publishing) and mentions alternatives (publish, cross_publish). It lacks explicit 'when not to use' but provides sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seo_metaA
Generate SEO-optimized meta title (<60 chars), meta description (<160 chars), and Open Graph tags from article content. No external API calls; runs locally. Costs 1 credit per call. Returns: { title, description, og: { title, description, image_alt }, twitter: { card, title, description } }. Common errors: insufficient credits (PAYMENT_REQUIRED).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The article title | |
| content | Yes | The article content | |
| keyword | No | Optional target keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral info. It discloses local execution, credit cost, and common error (PAYMENT_REQUIRED). However, it does not specify behavior for missing keyword or very long content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first sentence captures core function and constraints; second adds cost, return structure, and common error. No wasted words, front-loaded with essential info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description reasonably covers purpose, parameters, cost, error, and return format. Could slightly improve by mentioning how to handle long content, but sufficiently complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. The description adds no additional parameter semantics beyond what the schema provides, meeting baseline expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates SEO-optimized meta tags (title, description, Open Graph) from article content with specific character limits, and distinct from siblings like seo_schema or seo_score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions no external calls, runs locally, and cost of 1 credit, but does not explicitly compare to sibling tools like seo_schema (for schema markup) or seo_score (for scoring). Use context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seo_schemaA
Generate valid JSON-LD structured data for Schema.org Article, FAQPage, or HowTo types. Output is ready to paste into a tag. Costs 1 credit per call. Returns: { jsonld: string, type: 'Article'|'FAQPage'|'HowTo' }. Common errors: invalid type for the supplied content shape (VALIDATION_ERROR), insufficient credits (PAYMENT_REQUIRED).
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Schema type | |
| data | Yes | Schema data (varies by type) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses cost (1 credit), output format, and common errors (VALIDATION_ERROR, PAYMENT_REQUIRED). Could be more explicit about side effects (e.g., read-only nature), but effectively communicates behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with three sentences: purpose, output format, and common errors. No redundant information, front-loaded with core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description covers input, output structure, errors, and cost. Could expand on data parameter constraints per type, but sufficient for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description adds error context (invalid type/content) but does not significantly enhance parameter semantics beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates JSON-LD structured data for specific Schema.org types (Article, FAQPage, HowTo), with output ready for script tags. It distinguishes from siblings like seo_meta and seo_score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions cost and output but does not provide explicit guidance on when to use this tool versus alternatives (e.g., seo_meta, seo_score). Usage is implied but no exclusions or comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seo_scoreA
Analyze markdown content for SEO quality and return a 0-100 score with grade. Basic scoring (heading structure, word count, keyword density, readability) requires no credentials and is FREE. Full analysis (issue list, prioritized suggestions, related-keyword gaps) costs 1 credit. Returns: { score, grade, breakdown, issues?, suggestions? }. Common errors: missing 'content' (VALIDATION_ERROR), insufficient credits for full analysis (PAYMENT_REQUIRED).
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The markdown content to analyze | |
| keyword | Yes | The target keyword or phrase |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: basic scoring is free, full analysis costs 1 credit, output includes optional fields (issues, suggestions), and common errors (VALIDATION_ERROR, PAYMENT_REQUIRED). This exceeds disclosure needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two main sentences plus return and error notes. It front-loads the core purpose. While not using bullet points, it remains clear and efficient without redundant phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers all essential aspects: tool purpose, parameters, free vs. paid tiers, return structure (with optional fields), and error conditions. It is sufficiently complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context by linking the keyword parameter to scoring criteria (keyword density) and mentioning the 'content' parameter in error handling. This adds meaningful value beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes markdown content for SEO quality, returning a 0-100 score with grade. It distinguishes basic (free) and full (paid) analysis, and differentiates from siblings like seo_meta (metadata) and seo_schema (schema markup) through the focus on content quality scoring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (for SEO analysis of markdown) and explains the two tiers (free vs. credit-costing). It does not explicitly compare to sibling tools or state when not to use, but the error conditions (e.g., missing content, insufficient credits) guide proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setupA
Configure and persist platform credentials to ~/.pipepost/config.json (local file, never transmitted). Supports devto, ghost, hashnode, wordpress, medium, substack, unsplash. Replaces any existing credentials for the same platform. FREE. Returns: { platform, status: 'configured', validated: boolean }. Common errors: missing required fields for the chosen platform (VALIDATION_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Platform to configure: devto, ghost, hashnode, wordpress, medium, substack, x, linkedin, reddit, bluesky, mastodon, unsplash | |
| credentials | Yes | API credentials as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral traits: it writes to a local file, never transmits data, replaces existing credentials, returns a structured response with validation status, and mentions common errors. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with 3 sentences and no fluff, but it could be more structured (e.g., bullets for platforms). The front-loading of purpose is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return format and a common error. It does not cover all edge cases (e.g., invalid credentials not just missing) or rate limits, but it's sufficient for a simple configuration tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the two parameters. The description adds that credentials are 'API credentials as key-value pairs' and mentions missing fields cause VALIDATION_ERROR, but it incompletely lists platforms (missing x, linkedin, reddit, bluesky, mastodon) compared to the schema, which could mislead. Baseline 3, adjusted down slightly for the omission.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool configures and persists platform credentials to a specific file, using the verb 'Configure and persist' and specifying the resource '~/.pipepost/config.json'. It distinguishes itself from sibling tools like 'publish' or 'activate' by being the only credential setup tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists supported platforms and notes that existing credentials are replaced, giving context for when to use. It does not explicitly state when not to use or mention alternatives, but the sibling tool names imply it's for initial setup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusA
Show the current Pipepost configuration: configured platforms, credit balance, monthly free-credit reset date, and active license plan. FREE. No arguments. Returns: { version, credits: { remaining, free_remaining, next_reset }, platforms: string[], plan }. No errors.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It declares 'No errors,' indicating safe execution, and lists the return structure. This adequately discloses behavioral traits for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: one sentence for purpose, two brief statements for usage, and a clear return struct. Every sentence adds value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully specifies the return fields ({ version, credits, platforms, plan }). Combined with the clear purpose and 'No errors' statement, it provides complete context for a status tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage (empty schema), the description adds value by explicitly stating 'No arguments.' This confirms the lack of parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Show' and specifies the exact resources (configured platforms, credit balance, reset date, license plan), making the tool's purpose immediately clear. It distinguishes from sibling tools that perform actions like posting or publishing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states 'FREE. No arguments,' implying it can be called anytime with no prerequisites. While it does not explicitly mention when not to use it or alternatives, the context is clear for a status check tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x_postA
Post directly to X (Twitter) as a single tweet (max 280 graphemes) or a reply-chained thread via X v2 /tweets. OAuth 1.0a HMAC-SHA1 signing built in. FREE in this server, but X's free API tier caps writes at 17 tweets per 24h. Requires social.x.api_key, api_secret, access_token, access_token_secret via setup. Returns: { id, url, tweets?: [{ id, url }] }. Common errors: missing credentials (VALIDATION_ERROR), 280-grapheme overflow (VALIDATION_ERROR), 429 rate-limit (PLATFORM_ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Single post text (<= 280 chars). Mutually exclusive with `thread`. | |
| thread | No | Array of posts to chain as a reply thread. Each <= 280 chars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries full burden. Fully discloses OAuth 1.0a signing, free API cap, return format, and error types. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise paragraph with distinct info chunks. Some technical detail (OAuth HMAC-SHA1) is extra but not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description specifies return shape with optional thread array. Covers common errors, setup requirement, and rate limits. Complete for a single social posting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline 3. Description adds minor context (grapheme vs char, v2 API) but does not significantly extend beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it posts directly to X (Twitter) as a single tweet or reply-chained thread via X v2 API. It specifies max length (280 graphemes). Distinguishes from siblings like bluesky_post, linkedin_post by platform.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions required credentials, rate limit (17 tweets/24h), and common errors. Does not explicitly contrast with alternatives like cross_publish, but sibling names make platform clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v0.9.0- Changed
cross_publish2 fields changed- changed
Input schema / properties / platforms / descriptionPrevious value: -"Platforms to publish to: devto, ghost, hashnode, wordpress, medium"New value: +"Platforms to publish to: devto, ghost, hashnode, wordpress, medium, substack" - added
Input schema / properties / subtitleAdded value: +{ + "description": "Subtitle / dek (used by Substack)", + "type": "string" +}
- Changed
publish2 fields changed- changed
Input schema / properties / platform / descriptionPrevious value: -"Publishing platform: devto, ghost, hashnode, wordpress, medium"New value: +"Publishing platform: devto, ghost, hashnode, wordpress, medium, substack" - added
Input schema / properties / subtitleAdded value: +{ + "description": "Subtitle / dek (used by Substack)", + "type": "string" +}
- Changed
setup1 field changed- changed
Input schema / properties / platform / descriptionPrevious value: -"Platform to configure: devto, ghost, hashnode, wordpress, medium, x, linkedin, reddit, bluesky, mastodon, unsplash"New value: +"Platform to configure: devto, ghost, hashnode, wordpress, medium, substack, x, linkedin, reddit, bluesky, mastodon, unsplash"
29 tool updates
v0.8.0- First observed
activate - First observed
analytics - First observed
bluesky_mentions - First observed
bluesky_post - First observed
bluesky_reply - First observed
bluesky_search - First observed
bluesky_thread - First observed
check_links - First observed
content_audit - First observed
cover_image - First observed
cross_publish - First observed
delete_draft - First observed
frontmatter - First observed
generate_social_posts - First observed
get_draft - First observed
index_now - First observed
linkedin_post - First observed
list_drafts - First observed
list_posts - First observed
mastodon_post - First observed
publish - First observed
repurpose - First observed
save_draft - First observed
seo_meta - First observed
seo_schema - First observed
seo_score - First observed
setup - First observed
status - First observed
x_post
TDQS
Each tool has a clearly distinct purpose. Even overlapping tools like generate_social_posts and repurpose are differentiated by their specific outputs and use cases. All platform-specific posting tools target different social networks, and management tools (drafts, publishing, SEO) are neatly separated.
Tool names follow a consistent verb_noun pattern (e.g., activate, bluesky_post, check_links, generate_social_posts, save_draft). The naming is descriptive and predictable, making it easy for an agent to infer functionality.
With 28 tools, the server is comprehensive but slightly heavy. However, each tool serves a specific need within the content marketing domain, and the count is justified by the breadth of platforms and features covered. It is not excessive given the scope.
The tool surface covers major workflows (drafting, publishing to multiple platforms, SEO, analytics, social posts) but has notable gaps like no edit/update for published posts, no scheduling, and no comment management. Some features require external tools or manual steps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Publish and share access-controlled Markdown documents from any MCP-enabled AI tool.
Hosted MCP for Instagram, Facebook, X, LinkedIn, Pinterest, and Ghost. OAuth 2.1, 38 tools.
Draft, schedule and publish social posts to nine platforms from any AI agent.
Related MCP Servers
- AlicenseAqualityDmaintenanceThis server that distributes a single piece of content across 8+ channels (DEV.to, Hashnode, GitHub Discussions, Reddit, Bluesky, LinkedIn, Medium, Twitter) with automatic platform-specific adaptation, idempotent publishing, per-community anti-spam rules, and centralized state management.81025MIT
- FlicenseAqualityDmaintenanceAn MCP server that formats and syndicates Markdown content to Twitter/X, Threads, and a static blog on S3, with automatic thread splitting and preview capabilities.3-
- FlicenseNot gradedqualityDmaintenanceMulti-platform blog publishing tool that enables users to save, schedule, and publish SEO-optimized articles to platforms like websites, LinkedIn, Twitter, and Substack directly from Claude.-
- AlicenseAqualityAmaintenanceMCP server for publishing to WordPress. 13 tools cover posts, categories, tags, image hosting, featured images, and SEO metadata (Rank Math, etc.) One call runs the full markdown-to-live-URL pipeline.13453AGPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MendleM/pipepost'
If you have feedback or need assistance with the MCP directory API, please join our Discord server