# io.polyblog/polyblog

Manage multilingual Polyblog articles, localization coverage and editorial plans through OAuth.

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the content rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 0.1.0
- **Author:** io.polyblog
- **License:** Unknown
- **Endpoints:** streamable-http https://mcp.polyblog.io/mcp
- **Source:** https://www.polyblog.io/developers/?utm_source=official-mcp-registry&utm_medium=mcp_directory&utm_campaign=mcp-registries-2026#mcp
- **Endpoint health:** reachable (last checked 2026-09-26T05:30:17.321Z, 5 samples) — uptime is not a security property and is not part of the trust score
- **Compatible clients:** claude-code, cursor, copilot, chatgpt, gemini (basis: transport)

## Trust

60/100 (B), scored on the content rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: clean
- Obfuscation scan: clean
- Evidence age: 1 day

## Security scan

- **Status:** clean
- **Scanned:** 2026-09-26T05:30:17.321Z
- **Version scanned:** live
- **CVEs:** no coverage — this entry has no package coordinates to query OSV against, so "no known CVEs" is NOT asserted for it.

## Tools

18 declared. Observed from a live `tools/list` probe.
- `search_articles` — Search Polyblog articles with optional filters by blog, locale, slug, and published state. Returns a Markdown table of matches with id, title, locale, slug, and
- `get_article` — Fetch a single Polyblog article by id or by slug+locale. Returns allowlisted metadata and at most 8,000 characters of article content, with an explicit truncati
- `list_article_translations` — List up to 100 locale versions of one article, grouped by its `originalArticleId`, and mark a truncated result. Returns safe article metadata and translation me
- `create_article` — Create a new Polyblog article in the given blog. Returns the created article id and title and fires an `article.created` webhook. Defaults to unpublished; passi
- `update_article` — Partially update an existing Polyblog article by id. Only the fields you pass are changed; everything else is preserved. Passing `published` can publish or unpu
- `delete_article` — Permanently delete a Polyblog article by id. Deleting a published article removes its public page and fires an `article.deleted` webhook. This cannot be undone 
- `generate_article` — Generate a text-only SEO blog article: an LLM drafts bounded HTML, internal links come from the blog customDomain sitemap.xml, and the article is saved as a dra
- `list_blogs` — List Polyblog blogs the authenticated tenant has access to. Returns a bounded page of id, name, and custom domain. Pass the returned cursor to continue.
- `get_blog` — Fetch a single Polyblog blog by id or name. Returns the blog metadata formatted as Markdown.
- `get_blog_localization_summary` — Summarize multilingual article coverage for one organization-owned Polyblog blog. Compares configured locales with up to 100 recently edited article translation
- `create_blog` — Create a new Polyblog blog in the signed-in organization. The name is globally unique because it becomes the public <name>.polyblog.io subdomain, so a clashing 
- `get_sitemap_urls` — Summarize URLs from the blog's customDomain `/sitemap.xml` (following a sitemap index one level) and return at most 25 safe sample URLs. Used by `generate_artic
- `refresh_topic_ideas` — Fetch fresh content from bounded Reddit subreddits and public HTTPS RSS feeds, spend paid model usage to score candidates, dedupe against published articles, an
- `list_topic_ideas` — 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_arti
- `set_topic_idea_status` — 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 bac
- `set_topic_sources` — Replace the Reddit subreddits and/or public HTTPS RSS feeds used for topic research. Confirm the complete replacement lists before calling. Once set, `refresh_t
- `show_blog_overview` — Render a compact overview for a known Polyblog blog, including its domain, locales, and up to ten recently edited articles.
- `show_article_preview` — Render a focused preview for a known Polyblog article, including its publication state, metadata, and a bounded content excerpt.

## Install

**Verdict: review** — Installable, but 2 things to check first: No CVE coverage: this entry has no npm/PyPI coordinates to query OSV against, so "no known vulnerabilities" is not a claim that can be made about it.
**Cautions** (coverage gaps and advisories — never blocking)
- No CVE coverage: this entry has no npm/PyPI coordinates to query OSV against, so "no known vulnerabilities" is not a claim that can be made about it.
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"polyblog\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.polyblog.io/mcp\"\n    }\n  }\n}"
```

## Blast radius

Moderate to extensive — no credential declaration found, from the publisher, the upstream registry, or the README. Known so far: deletes data; runs on someone else's infrastructure.
- Floor 32, ceiling 56 (tier: unknown)
- `unknown` means the floor and ceiling land in different bands — not measured enough to name one. It does not mean low.
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/io.polyblog%2Fpolyblog
- Install plan: https://forgeregistry.com/api/v1/packages/io.polyblog%2Fpolyblog/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/io.polyblog%2Fpolyblog
- HTML page: https://forgeregistry.com/registry/io.polyblog%2Fpolyblog
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
