Skip to main content
Glama

|> 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.

npm version npm downloads CI Glama MCP server License: MIT TypeScript

Website · Docs · npm


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 init

Add 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

seo_score

Analyze content for readability, keyword density, and heading structure

Free (basic) / Credits (full)

seo_meta

Generate meta title, description, and Open Graph tags

Credits

seo_schema

Generate JSON-LD structured data (Article, FAQ, HowTo)

Credits

index_now

Submit URLs to search engines for instant indexing via IndexNow

Free

Publishing (3 tools)

Tool

Description

Cost

publish

Publish to Dev.to, Ghost, Hashnode, WordPress, Medium, or Substack

1 credit

cross_publish

Publish to multiple platforms with automatic canonical URL wiring

1 credit

list_posts

List published and draft posts from any platform

Free

Drafts (4 tools)

Tool

Description

Cost

save_draft

Save content as a local draft for later publishing

Free

list_drafts

List all saved drafts with status, platforms, and dates

Free

get_draft

Retrieve a saved draft by ID

Free

delete_draft

Delete a saved draft by ID

Free

Content Quality (2 tools)

Tool

Description

Cost

content_audit

Audit markdown for quality issues — readability, structure, heading hierarchy

Free (basic) / Credits (full)

check_links

Validate all URLs in markdown — reports broken, redirected, and timed-out links

Free

Content Repurposing (2 tools)

Tool

Description

Cost

generate_social_posts

Generate platform-optimized posts for Twitter, LinkedIn, Reddit, Bluesky

Credits

repurpose

Transform a blog post into Twitter threads, LinkedIn posts, Reddit posts, HN titles, Bluesky posts, newsletter intros

Credits

Broadcast (4 tools)

Tool

Description

Cost

bluesky_post

Post directly to Bluesky as a single post or a threaded series. Bare URLs auto-linkified

Free

mastodon_post

Post directly to any Mastodon instance as a single post or a threaded series

Free

linkedin_post

Post to LinkedIn (personal). Person URN resolved automatically on first use and cached

Free

x_post

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

bluesky_mentions

List notifications addressed to the configured account — mentions and replies by default

Free

bluesky_search

Search public Bluesky posts by keyword, author, mentions, tag, or language. No auth needed

Free

bluesky_thread

Fetch the full conversation around a post — parents above, replies below, for reply context

Free

bluesky_reply

Reply to a Bluesky post (single reply or chained thread) — root + parent refs computed automatically

Free

Images (1 tool)

Tool

Description

Cost

cover_image

Search Unsplash for cover images with proper attribution

Free

Content (1 tool)

Tool

Description

Cost

frontmatter

Generate frontmatter for Hugo, Jekyll, Astro, Next.js, Dev.to, Hashnode, Ghost

Free

Analytics (1 tool)

Tool

Description

Cost

analytics

Fetch post views, reactions, and comments across all configured platforms

Free

Account (3 tools)

Tool

Description

Cost

setup

Configure API credentials for any platform

Free

activate

Activate a credit pack license key

Free

status

Show current configuration and credit balance

Free

How It Works

  1. Install -- add the MCP server to Claude Code with npx pipepost-mcp init

  2. Configure -- use the setup tool to store your platform API keys locally

  3. Create -- write content in Claude Code, then use SEO tools to optimize it

  4. 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.

TIP

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

LinkedIn

Professional long-form posts

Reddit

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

NOTE

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

dev.to/settings/extensions

Ghost

Ghost Admin > Settings > Integrations > Custom

Hashnode

hashnode.com/settings/developer

WordPress

Users > Application Passwords

Medium

medium.com/me/settings/security

Substack

DevTools → Application → Cookies → substack.com → copy connect.sid. Pass with your publication URL (e.g. https://you.substack.com).

Unsplash

unsplash.com/developers

Bluesky

bsky.app/settings/app-passwords

Mastodon

https://<your-instance>/settings/applications (scope: write:statuses)

LinkedIn

linkedin.com/developers/apps (scopes: openid, profile, w_member_social). Run pnpm linkedin:auth for the 3-legged flow.

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 build

Run in development mode with file watching:

pnpm dev

License

MIT

Available Tools

29 tools
activateA

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
license_keyYesYour Pipepost license key from Lemon Squeezy

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNoSpecific platform to fetch analytics for, or omit for all configured platforms
limitNoMax posts to fetch per platform (default: 10)

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax notifications to return (default 50, max 100).
cursorNoPagination cursor from a prior response.
reasonsNoFilter by notification reason. Default: ["mention","reply"]. Other valid: like, repost, follow, quote.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoSingle post text (<= 300 chars). Mutually exclusive with `thread`.
threadNoArray of posts to chain as a reply thread. Each <= 300 chars.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_uriYesAT-URI of the post being replied to.
textNoSingle reply text (<= 300 chars). Mutually exclusive with `thread`.
threadNoChain of replies — first reply points at parent_uri, subsequent posts chain off the prior reply.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesAT-URI of the post to fetch context for (e.g. at://did:plc:.../app.bsky.feed.post/xyz).
depthNoHow many reply levels below to include (default 6).
parent_heightNoHow many parent levels above to include (default 80).

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoRun full analysis (requires credits). Includes readability, structure, tags, and heading hierarchy.
contentYesThe markdown content to audit

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch terms for the image
orientationNoImage orientation (default: landscape)
countNoNumber of results 1-5 (default: 3)

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformsYesPlatforms to publish to: devto, ghost, hashnode, wordpress, medium, substack
titleYesArticle title
contentYesArticle content in markdown
subtitleNoSubtitle / dek (used by Substack)
tagsNoTags for the article
statusNoPublish statusdraft
featured_image_urlNoFeatured image URL
canonical_urlNoCanonical URL for cross-posting
seriesNoSeries name (supported on Dev.to and Hashnode)
primary_platformNoPlatform 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

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDraft ID to delete

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesThe article title
contentYesThe article content — used to auto-extract description, reading time, tags
formatYesTarget frontmatter format
tagsNoOptional tags — auto-extracted from content if omitted
canonical_urlNoCanonical URL for the article
featured_imageNoFeatured/cover image URL
authorNoAuthor name
draftNoWhether the post is a draft (default: true)

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoFull article markdown content for rich generation
titleNoArticle title (used if content not provided)
summaryNoArticle summary (used if content not provided)
urlNoArticle URL for links and CTAs
platformsYesPlatforms: twitter, linkedin, reddit, bluesky

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDraft ID to retrieve

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to submit for indexing
urlsNoBatch of URLs to submit (max 10)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesPost body (<= 3000 chars). LinkedIn has no threading primitive, so only single posts are supported.

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by status

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPlatform to list posts from
statusNoall
limitNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoSingle post text. Mutually exclusive with `thread`.
threadNoArray of posts to chain as a reply thread.
max_lengthNoOverride the default 500-character limit if your instance allows longer posts.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPublishing platform: devto, ghost, hashnode, wordpress, medium, substack
titleYesArticle title
contentYesArticle content in markdown
subtitleNoSubtitle / dek (used by Substack)
tagsNoTags for the article
statusNoPublish statusdraft
featured_image_urlNoFeatured image URL
canonical_urlNoCanonical URL for cross-posting
seriesNoSeries name (supported on Dev.to and Hashnode)

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe full markdown article to repurpose
titleYesThe article title
urlNoThe published article URL for links and CTAs
platformsYesTarget platforms: twitter, linkedin, reddit, hackernews, bluesky, newsletter

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesDraft title
contentYesDraft content in markdown
platformsNoTarget platforms: devto, ghost, hashnode, wordpress, medium
tagsNoTags for the draft
statusNoDraft statusdraft

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesThe article title
contentYesThe article content
keywordNoOptional target keyword

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesSchema type
dataYesSchema data (varies by type)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe markdown content to analyze
keywordYesThe target keyword or phrase

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPlatform to configure: devto, ghost, hashnode, wordpress, medium, substack, x, linkedin, reddit, bluesky, mastodon, unsplash
credentialsYesAPI credentials as key-value pairs

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoSingle post text (<= 280 chars). Mutually exclusive with `thread`.
threadNoArray of posts to chain as a reply thread. Each <= 280 chars.

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 3 tool updatesv0.9.0
    • Changedcross_publish2 fields changed
      • changedInput schema / properties / platforms / description
        Previous value: -"Platforms to publish to: devto, ghost, hashnode, wordpress, medium"New value: +"Platforms to publish to: devto, ghost, hashnode, wordpress, medium, substack"
      • addedInput schema / properties / subtitle
        Added value: +{
        +  "description": "Subtitle / dek (used by Substack)",
        +  "type": "string"
        +}
    • Changedpublish2 fields changed
      • changedInput schema / properties / platform / description
        Previous value: -"Publishing platform: devto, ghost, hashnode, wordpress, medium"New value: +"Publishing platform: devto, ghost, hashnode, wordpress, medium, substack"
      • addedInput schema / properties / subtitle
        Added value: +{
        +  "description": "Subtitle / dek (used by Substack)",
        +  "type": "string"
        +}
    • Changedsetup1 field changed
      • changedInput schema / properties / platform / description
        Previous 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"
  2. 29 tool updatesv0.8.0
    • First observedactivate
    • First observedanalytics
    • First observedbluesky_mentions
    • First observedbluesky_post
    • First observedbluesky_reply
    • First observedbluesky_search
    • First observedbluesky_thread
    • First observedcheck_links
    • First observedcontent_audit
    • First observedcover_image
    • First observedcross_publish
    • First observeddelete_draft
    • First observedfrontmatter
    • First observedgenerate_social_posts
    • First observedget_draft
    • First observedindex_now
    • First observedlinkedin_post
    • First observedlist_drafts
    • First observedlist_posts
    • First observedmastodon_post
    • First observedpublish
    • First observedrepurpose
    • First observedsave_draft
    • First observedseo_meta
    • First observedseo_schema
    • First observedseo_score
    • First observedsetup
    • First observedstatus
    • First observedx_post

TDQS

A4.2/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness3/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    This 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.
    8
    102
    5
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    An 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
    -
  • A
    license
    A
    quality
    A
    maintenance
    MCP 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.
    13
    45
    3
    AGPL 3.0

Latest Blog Posts

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