A side-by-side look at the Pipepost and Citable MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Pipepost for marketing work as a local process; choose Citable MCP for marketing as a local process. You can also run both side by side in one mcpServers block.
seo_score, seo_meta, seo_schema.CITABLE_WALLET, CITABLE_MAX_PRICE, CITABLE_API.citable_prices, citable_connect, citable_keyword_suggest.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Marketing | Marketing |
| Quality signal | 60/100 · Good | 60/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | other | Not declared |
| Pricing | Freemium | Not declared |
| Required env vars | None listed | CITABLE_WALLETCITABLE_MAX_PRICECITABLE_API |
| Verified owner | Community listing | Community listing |
| GitHub stars | 5 | 0 |
| Directory activity | 4 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 29 | 19 |
| Full listing | View Pipepost | View Citable MCP |
seo_scoreAnalyze 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).seo_metaGenerate 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).seo_schemaGenerate valid JSON-LD structured data for Schema.org Article, FAQPage, or HowTo types. Output is ready to paste into a <script type="application/ld+json"> 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).index_nowSubmit 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).cover_imageSearch 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).publishPublish 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).list_postsList 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).cross_publishPublish 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.frontmatterGenerate 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).generate_social_postsGenerate 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).repurposeTransform 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).analyticsFetch 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'.citable_pricesFree. Lists Citable's SEO endpoints with current per-call USDC prices, plus the wallet that pays: address (the one to fund), walletMode (keypair or sign-in), balanceUsdc and funded. When it is empty, `setup` gives the two ways to fund it — put them to the user. Call this first.citable_connectFree. For people who do not use crypto. Returns a link to open in a browser: sign in at Citable with Google or email, add a few dollars of USDC, click Connect — the agent then pays from that wallet. The link works for 15 minutes; when the user says it is done, call citable_prices to confirm (walletMode becomes sign-in). {status:true} only reports; {reset:true} disconnects and returns to the keypair. The first connect installs Para's SDK under ~/.config/citable/para (about 200 MB, once).citable_keyword_suggestPaid ($0.005 USDC per call). Expands a seed keyword into autocomplete suggestions, related queries and questions, deduped and ranked across Google, YouTube and Bing. Returns `suggestions[]` and `questions[]` with a 0–1 prominence score, the sources each came from, and whether the keyword still contains the seed.citable_onpage_auditPaid ($0.01 USDC per call). Fetches one URL and returns a scored on-page audit: title, meta description, canonical, robots, viewport, lang, heading counts and text, word count, internal/external links, image alt coverage, Open Graph, JSON-LD types, HTTP details, and 15 weighted checks with a 0–100 score. Not charged if the page cannot be fetched.citable_ai_visibilityPaid ($0.05 USDC per engine asked; $0.20 for all four). Asks the AI answer engines (Perplexity, Gemini, OpenAI, Claude — whichever the deployment has configured) a prompt through their official APIs and reports which ones cite the domain: `mentioned`, 1-based `position` in each engine's citation list, and the full cited-domain list per engine. One run per engine — answers vary between runs, so call 2–3 times for signal. Not charged if no engine answers.citable_rank_checkPaid ($0.012 USDC per call). Google organic position of a domain for a keyword via a licensed SERP feed: 1-based `position` (null if outside the checked window), the ranking URL and title, plus the top-10 result list. Not charged if the feed is unavailable.citable_keyword_researchPaid ($0.06 USDC per call). One seed returns keywords AND questions, merged from public autocomplete and the paid keyword index, with search volume, CPC, difficulty and intent attached. Each row says which sources found it — both is the strongest signal. Cheaper than citable_keyword_ideas plus citable_keyword_metrics separately; reach for those only when you want to control exactly what you pay for. Not charged on failure.citable_keyword_ideasPaid ($0.05 USDC per call). Keyword research: one seed returns up to 100 keywords that contain it, each with search volume, CPC, competition, difficulty and intent, ordered by volume. Full-text matched, so results stay on topic. Use citable_keyword_suggest for the exact phrasings people type (no volume), and citable_keyword_metrics when you already have a shortlist. Not charged on failure.citable_keyword_metricsPaid ($0.03 USDC per call, covers the whole batch). Search volume, CPC, competition, keyword difficulty and search intent for 1–20 keywords — licensed clickstream-derived estimates. Answers in request order; unknown keywords return null metrics. Pair with citable_keyword_suggest: expand a seed there, price the shortlist here. Not charged if the metrics feed is unavailable.citable_top_cited_pagesPaid ($0.22 USDC per call). Which pages of a domain AI engines cite most, from an aggregated index of AI answers — per-page mentions, AI search volume, per-engine and per-language splits, plus domain totals. Answers 'what already works on this site — write more of that'. Not charged if the index is unavailable.citable_citability_reportPaid ($0.30 USDC per call; $0.43 bought separately). One call bundles the on-page citability audit, AI visibility across all configured engines, and the domain's top AI-cited pages. Answers: can AI read this site, who cites it today, and which pages already work. Not charged on failure.citable_cited_promptsPaid ($0.25 USDC per call). The real questions AI answer engines cite a domain for, from an aggregated index of AI answers — question, answer snippet, AI search volume, and the exact URL cited. These are observed prompts, never generated ones, so use this to discover what to track instead of inventing them. Repeated observations of one question are collapsed, with `observations` counting them. Point it at a competitor's domain to get the prompts they win and you do not. Not charged on failure.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"mendlem-pipepost": {
"command": "npx",
"args": [
"-y",
"pipepost-mcp"
]
}
}
}
{
"mcpServers": {
"zaialamm-citable-mcp": {
"command": "npx",
"args": [
"-y",
"citable-mcp"
],
"env": {
"CITABLE_WALLET": "YOUR_CITABLE_WALLET_HERE",
"CITABLE_MAX_PRICE": "YOUR_CITABLE_MAX_PRICE_HERE",
"CITABLE_API": "YOUR_CITABLE_API_HERE"
}
}
}
}