Polyblog
Manage multilingual Polyblog articles, localization coverage and editorial plans through OAuth.
What it can do
- 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 published. Use the ret
- 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 truncation flag.
- 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 method. Pass `b
What data it sees
Do you need an account
No: the server works without sign-in
Manage multilingual Polyblog articles, localization coverage and editorial plans through OAuth.
How to connect
How to connect Polyblog to Claude
The server address to paste into Claude settings:
https://polyblog--giorgio-zamparelli.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Polyblog to ChatGPT
The server address to paste into ChatGPT settings:
https://polyblog--giorgio-zamparelli.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Polyblog to Cursor
The server address to paste into Cursor settings:
https://polyblog--giorgio-zamparelli.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (18)
Raw names from tools/list. Only developers need these.
| 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 published. Use the returned cursor to page through results. |
| 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 truncation flag. |
| 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 method. Pass `blogId` to compare against at most 100 configured locales. |
| create_article | Create a new Polyblog article in the given blog. Returns the created article id and title. Defaults to unpublished unless `published: true` is passed. |
| update_article | Partially update an existing Polyblog article by id. Only the fields you pass are changed; everything else is preserved. |
| delete_article | Permanently delete a Polyblog article by id. This cannot be undone — confirm with the user before calling. |
| 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 draft by default. This MCP tool always disables cover and inline image generation. Pass `topic` or `topicIdeaId`. It spends paid model usage and usually takes 30–60 seconds. |
| 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 translations and clearly marks the result when the sample is truncated. |
| 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 name fails rather than being adjusted. Creating a blog also fires a `blog.created` webhook to the organization subscribers. |
| 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_article` as the allowed internal-link pool. |
| 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, and persist the keepers. Returns aggregate counts and at most five safe ideas; raw source errors are suppressed. Confirm sources and limits first. |
| 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_article` to write the article. |
| 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 back to `new`. Only the status (and optionally the article it produced) is changed. |
| 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_topic_ideas` only needs the blogId. Pass `reddit` and/or `rss`, or `clear: true` to wipe all sources. |
| 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. |