PubSpace

Publish HTML or markdown from your agent as a shareable link, with password or work-email walls.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
98%
命名の品質
97%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~1,575トークン数(ツール定義)
~1.4 KB一般的なレスポンスサイズ
注意への影響は中程度(128k コンテキストの 1.23%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "mcp": {
      "url": "https://pubspace.ai/mcp"
    }
  }
}

リモートエンドポイント

https://pubspace.ai/mcpstreamable-http

できること

ツール一覧

ツール(6)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟡publish_page(html, title, source_type, project)

Publish a new HTML (or Markdown) page to the maker's PubSpace space and get back a live, shareable URL to hand to the human. Pages are unlisted by default — indexed by search engines only if the maker turns that on later (Pro); anyone with the link can view. Use this only for a brand-new page; to change a page that already exists, call update_page so its URL stays the same (find the id with list_pages). Each call creates a page that counts toward the plan's live-page cap; at the cap the call fails with doc_limit_reached and, on the free plan, an upgrade link to relay to the human. Returns { url, id, mode, visibility, dashboardUrl }.

入力スキーマ

{
  "type": "object",
  "properties": {
    "html": {
      "type": "string",
      "description": "Full HTML document (or Markdown when source_type is \"markdown\"). Served byte-faithful apart from documented meta/bar injections."
    },
    "title": {
      "type": "string",
      "description": "Optional title (used in the dashboard and social cards)."
    },
    "source_type": {
      "type": "string",
      "enum": [
        "html",
        "markdown"
      ],
      "description": "Default \"html\"."
    },
    "project": {
      "type": "string",
      "description": "Optional: which body of work this page belongs to (e.g. \"Q3 board pack\"). Groups pages in the maker's library — reuse their existing project names from list_pages when one fits. (Renamed from `product` in v0.16.0; the old name is still accepted.)"
    }
  },
  "required": [
    "html"
  ]
}
🔴update_page(page_id, html, title, source_type, project, ...)

Replace the content of an existing page in place: the same URL serves the new content immediately, so links the human already shared keep working. Use this instead of publish_page whenever the page already exists. The previous version stays restorable from the dashboard for 7 days (Pro keeps full version history). Pass draft: true to stage the update instead: nothing changes for viewers until the maker reviews the previewUrl and presses "Sync to live"; use it when the human asked to see changes before they go out. Fails with page_not_found if the id is not a live or offline page in this space.

入力スキーマ

{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "string",
      "description": "The page id: the `id` field from publish_page or list_pages (also the last path segment of the page URL, …/docs/<page_id>). Only pages in the connected maker's space are visible."
    },
    "html": {
      "type": "string",
      "description": "The complete new document (not a diff). HTML, or Markdown when source_type is \"markdown\"."
    },
    "title": {
      "type": "string",
      "description": "Optional; omit to keep the existing title."
    },
    "source_type": {
      "type": "string",
      "enum": [
        "html",
        "markdown"
      ],
      "description": "Default \"html\"."
    },
    "project": {
      "type": "string",
      "description": "Optional; omit to keep the existing project."
    },
    "draft": {
      "type": "boolean",
      "description": "Default false (publishes live instantly). true = stage the update; relay the returned previewUrl so the human can review and press Sync. A new draft replaces any pending one."
    }
  },
  "required": [
    "page_id",
    "html"
  ]
}
🟢list_pages(q)

List every page in the maker's space, newest first, with no paging: { total, pages: [{ id, title, url, project, views, live, workEmailGated, hasDraft, createdAt, updatedAt }] }. Read-only. Use it to find a page_id before update_page / get_page / unpublish_page / delete_page, or to reuse an existing project name. Offline pages are included (live: false); deleted pages are not. Pass q to search instead of scanning the full list; use get_page when you need one page's HTML.

入力スキーマ

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Optional case-insensitive search over page titles and content. Omit to list everything."
    }
  }
}
🟢get_page(page_id, include_html)

Fetch one page by id: metadata always ({ id, title, url, project, views, live, workEmailGated, hasDraft, createdAt, updatedAt, visibility }), plus the stored HTML when include_html is true. Read-only. Use it to read a page before editing it with update_page; use list_pages to find ids or browse. Fails with page_not_found if the id is not in this space or the page was deleted.

入力スキーマ

{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "string",
      "description": "The page id: the `id` field from publish_page or list_pages (also the last path segment of the page URL, …/docs/<page_id>). Only pages in the connected maker's space are visible."
    },
    "include_html": {
      "type": "boolean",
      "description": "Default false. true adds `html`: the document exactly as stored (the source you or the maker published, before serve-time injections). Can be large; only ask for it when you need the content."
    }
  },
  "required": [
    "page_id"
  ]
}
🔴unpublish_page(page_id, restore)

Take a page offline without deleting it: its URL shows an "offline" notice to viewers, and the content, id, URL and view count are kept. Pass restore: true to put it back online at the same URL. Prefer this over delete_page when the human wants a page hidden or paused. Calling it twice is harmless. Returns { ok, id, live }; fails with page_not_found if the id is not in this space.

入力スキーマ

{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "string",
      "description": "The page id: the `id` field from publish_page or list_pages (also the last path segment of the page URL, …/docs/<page_id>). Only pages in the connected maker's space are visible."
    },
    "restore": {
      "type": "boolean",
      "description": "Default false (take offline). true = put the page back online."
    }
  },
  "required": [
    "page_id"
  ]
}
🔴delete_page(page_id)

Delete a page: its URL stops working at once. The maker gets only a brief undo in the dashboard, then it is purged for good (there is no restore tool). Only use it when the human asked for deletion; to hide a page reversibly, use unpublish_page instead. Returns { ok, id, deleted }; fails with page_not_found if the id is not in this space or is already deleted.

入力スキーマ

{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "string",
      "description": "The page id: the `id` field from publish_page or list_pages (also the last path segment of the page URL, …/docs/<page_id>). Only pages in the connected maker's space are visible."
    }
  },
  "required": [
    "page_id"
  ]
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 6 件