protogrid

Search / io.polyblog/polyblog

Polyblog Multilingual Blog

R0· no sign-in

Write, translate and publish blog articles, plan topic ideas and check each blog's languages.

v0.1.1 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality79good
Trust83of 100
Uptime, 30 days100%
Latency p50595 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "polyblog": {
      "type": "http",
      "url": "https://mcp.polyblog.io/mcp"
    }
  }
}
claude mcp add --transport http polyblog https://mcp.polyblog.io/mcp
[mcp_servers.polyblog]
url = "https://mcp.polyblog.io/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "polyblog": {
      "type": "remote",
      "url": "https://mcp.polyblog.io/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "polyblog": {
      "type": "http",
      "url": "https://mcp.polyblog.io/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=polyblog&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLnBvbHlibG9nLmlvL21jcCJ9"
}
{
  "servers": {
    "polyblog": {
      "type": "http",
      "url": "https://mcp.polyblog.io/mcp"
    }
  }
}
{
  "mcpServers": {
    "polyblog": {
      "httpUrl": "https://mcp.polyblog.io/mcp"
    }
  }
}
extensions:
  "polyblog":
    enabled: true
    name: "polyblog"
    type: streamable_http
    uri: "https://mcp.polyblog.io/mcp"
    timeout: 300

Quality 79 / 100good

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations19 of 19 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 4,963 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes23 tool changes in 30 days
  • fail
    stability.rug_pull18 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

19 tools, about 4,963 tokens to load them all · tool set dfe8c439b252 · tools last changed 2026-10-02 · checked 2026-10-19 20:06 UTC

Tool changes

  • search_articleschangedoutput schema
  • open_polyblogadded

    Use this when someone wants to open their PolyBlog library and browse blogs and articles in an interactive workspace. Starts with up to 25 blogs; the view supports pagination and reading articles. Not for creating or publishing content.

  • create_blogchangedoutput schema
  • get_blogchangedoutput schema
  • list_blogschangedoutput schema
  • show_article_previewchangedtitle, description, annotationsmeaning changed
    before

    Render a focused preview for a known Polyblog article, including its publication state, metadata, and a bounded content excerpt.

    after · 17% of words in common

    Use this when someone wants to see how one blog post looks, with its status and details. Returns a preview card with the post's title, language, published state, metadata and up to 6,000 characters of content. Not for finding posts.

  • show_blog_overviewchangedtitle, description, annotationsmeaning changed
    before

    Render a compact overview for a known Polyblog blog, including its domain, locales, and up to ten recently edited articles.

    after · 24% of words in common

    Use this when someone wants a quick overview of one of their blogs. Returns an overview card with the blog's domain, languages and up to 10 most recently edited posts. Not for translation coverage.

  • set_topic_sourceschangedtitle, description, input schema, annotationsmeaning changed
    before

    Replace the Reddit subreddits and/or public HTTPS RSS feeds used for topic research. Confirm the complete replacement lists before calling. Once set, `refresh_topic_ideas` only needs the blogId. Pass `reddit` and/or `rss`, or `clear: true` to wipe all sources.

    after · 24% of words in common

    Use this when someone asks to choose which subreddits or RSS feeds their blog's topic research reads. Returns the saved sources; each list passed replaces the old one, and clear removes them all. Not for fetching ideas now.

  • set_topic_idea_statuschangedtitle, description, input schema, annotationsmeaning changed
    before

    Move a saved topic idea through its lifecycle: mark it `used` once an article has been written from it, `dismissed` to keep it out of future suggestions, or back to `new`. Only the status (and optionally the article it produced) is changed.

    after · 30% of words in common

    Use this when someone asks to mark a topic idea as used, dismiss it, or bring it back as new. Returns the idea with its new status and, when given, the article it produced; nothing else about the idea changes. Not for editing an idea's title or angle.

  • list_topic_ideaschangedtitle, description, input schema, output schema, annotationsmeaning changed
    before

    List saved topic ideas for a blog, optionally filtered by status and minimum score. Returns id, score, title, status, and source. Use the id with `generate_article` to write the article.

    after · 32% of words in common

    Use this when someone asks what they could write about next from topic ideas already saved. Returns each idea's id, score out of 10, title, status and source, filtered by status or minimum score, 25 per page by default. Not for fetching new ideas.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 83 / 100

no-repository
provenance55
liveness100
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-100% +updated-22d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.polyblog.io/mcp streamable-httpnoneyes100%595 ms2026-07-282026-10-19

Tools (19)

create_articledestructiveUse this when someone gives you a finished blog post, or a translation of one, to save in their blog. Returns the new post's id, title, slug, language and published state; it stays a draft unless published is true. A translation is saved with the original's id as originalArticleId and its own locale. Not for writing a post with AI.
create_blogdestructiveUse this when someone asks to start a new blog in Polyblog with a given name and languages. Returns the new blog's id, name, domain and languages; the name becomes the public <name>.polyblog.io subdomain, so a name already taken fails. Not for adding a post to an existing blog.
delete_articledestructiveUse this when someone asks to permanently delete a blog post in every language. Given the original post's id, that post and all its translations are deleted and their pages go offline; given a translation's own id, nothing is deleted although the result still says deleted. Returns the id. Not for unpublishing.
generate_articledestructiveUse this when someone asks you to write a new blog post on a topic or saved topic idea. Returns the draft's id, URL, title, word count and internal links (text only; published only with autoPublish). It uses paid AI and can take about a minute, and a call that times out can still save the draft. Not for saving your own text.
get_articleread-onlyUse this when someone wants to read, check or quote one blog post. Returns its title, summary, language, slug, blog, author, published state, dates and up to 8,000 characters of content, looked up by id or by slug plus language. Not for a visual preview card.
get_blogread-onlyUse this when someone asks about one blog's setup, such as its domain, default language or languages. Returns the blog's id, name, custom domain, default locale, locales, cover image URL and dates, by id or name. Not for a visual overview with recent posts.
get_blog_localization_summaryread-onlyUse this when someone asks how well their blog is translated, or which languages are missing posts. Returns per-language counts of posts, published posts and drafts with a coverage percentage, from the 100 most recently edited posts. Not for one post's translations.
get_sitemap_urlsread-onlyUse this when someone asks what pages their blog's sitemap lists, or which pages are available to link to. Returns the sitemap's URL count and the first 25 URLs with language and last-modified date, read live from the blog's custom domain. Not for the posts stored in Polyblog.
list_article_translationsread-onlyUse this when someone asks which languages a blog post exists in, or which translations are still missing. Returns each language version sharing the original article id, up to 100, with title, slug, published state and how it was translated; with blogId it also lists the blog's missing languages. Not for a whole blog's coverage.
list_blogsread-onlyUse this when someone asks which blogs they have in Polyblog, or a blog's id is needed. Returns each blog's id, name and custom domain, 25 per page by default with a cursor. Not for a blog's posts.
list_topic_ideasread-onlyUse this when someone asks what they could write about next from topic ideas already saved. Returns each idea's id, score out of 10, title, status and source, filtered by status or minimum score, 25 per page by default. Not for fetching new ideas.
open_polyblogread-onlyUse this when someone wants to open their PolyBlog library and browse blogs and articles in an interactive workspace. Starts with up to 25 blogs; the view supports pagination and reading articles. Not for creating or publishing content.
refresh_topic_ideasdestructiveUse this when someone asks for new blog topic ideas from Reddit or RSS feeds. Returns counts and up to 5 of the saved ideas; it fetches the sources, scores candidates with paid AI and saves those that pass. Not for ideas already saved.
search_articlesread-onlyUse this when someone asks to see their blog posts, drafts or published articles, optionally for one blog, language or slug. Returns id, title, language, slug and published state, most recently edited first, 25 per page by default with a cursor. It filters by those fields and does not search the text. Not for reading a post.
set_topic_idea_statusdestructiveUse this when someone asks to mark a topic idea as used, dismiss it, or bring it back as new. Returns the idea with its new status and, when given, the article it produced; nothing else about the idea changes. Not for editing an idea's title or angle.
set_topic_sourcesdestructiveUse this when someone asks to choose which subreddits or RSS feeds their blog's topic research reads. Returns the saved sources; each list passed replaces the old one, and clear removes them all. Not for fetching ideas now.
show_article_previewread-onlyUse this when someone wants to see how one blog post looks, with its status and details. Returns a preview card with the post's title, language, published state, metadata and up to 6,000 characters of content. Not for finding posts.
show_blog_overviewread-onlyUse this when someone wants a quick overview of one of their blogs. Returns an overview card with the blog's domain, languages and up to 10 most recently edited posts. Not for translation coverage.
update_articledestructiveUse this when someone asks to change a blog post's title, text, summary, slug, author or categories, or to publish or unpublish it. Returns the updated post; only the fields passed change, and each edit notifies the blog's webhooks. Not for adding a translation.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.polyblog/polyblog",
  "title": "Polyblog Multilingual Blog",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.polyblog.io/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.1.1",
  "websiteUrl": "https://www.polyblog.io/developers/?utm_source=official-mcp-registry&utm_medium=mcp_directory&utm_campaign=mcp-registries-2026#mcp",
  "description": "Write, translate and publish blog articles, plan topic ideas and check each blog's languages."
}