{"id":2025295,"recorded_at":"2026-11-02T01:12:44.355931Z","observed_at":"2026-11-02T01:12:44.355834Z","subject_kind":"endpoint","subject":"362de6ca-f3c5-4af3-b7f2-b6560e6c8550","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":8,"tools":[{"description":"Sign your human up for a free PubSpace space (no card) without leaving this session. Callable without an API key. Only call it after the human has told you their email and chosen a space name; never invent or guess either. Their pages will live at <subdomain>.pubspace.ai, so treat the name as permanent (renames are limited). A 6-digit verification code is emailed to them: ask them to read it to you, then call verify_email. Once verified, publish_page works in this same session. Returns { subdomain, email, apiKey, verificationRequired, connectHint }; persist the key with the connectHint command so future sessions start connected. Fails with email_taken (they already have an account: have them sign in and copy their key from Settings → Connect your agent), subdomain_taken, invalid_subdomain, invalid_email or rate_limited. If this session is already connected with a key, it fails with already_connected.","inputSchema":{"properties":{"email":{"description":"The human's real email address, as they gave it to you. The verification code goes here.","type":"string"},"subdomain":{"description":"The space name the human chose: lowercase letters, numbers and hyphens. Becomes <subdomain>.pubspace.ai.","type":"string"}},"required":["email","subdomain"],"type":"object"},"name":"create_account"},{"description":"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.","inputSchema":{"properties":{"page_id":{"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.","type":"string"}},"required":["page_id"],"type":"object"},"name":"delete_page"},{"description":"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.","inputSchema":{"properties":{"include_html":{"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.","type":"boolean"},"page_id":{"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.","type":"string"}},"required":["page_id"],"type":"object"},"name":"get_page"},{"description":"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.","inputSchema":{"properties":{"q":{"description":"Optional case-insensitive search over page titles and content. Omit to list everything.","type":"string"}},"type":"object"},"name":"list_pages"},{"description":"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 }.","inputSchema":{"properties":{"html":{"description":"Full HTML document (or Markdown when source_type is \"markdown\"). Served byte-faithful apart from documented meta/bar injections.","type":"string"},"project":{"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.)","type":"string"},"source_type":{"description":"Default \"html\".","enum":["html","markdown"],"type":"string"},"title":{"description":"Optional title (used in the dashboard and social cards).","type":"string"}},"required":["html"],"type":"object"},"name":"publish_page"},{"description":"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.","inputSchema":{"properties":{"page_id":{"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.","type":"string"},"restore":{"description":"Default false (take offline). true = put the page back online.","type":"boolean"}},"required":["page_id"],"type":"object"},"name":"unpublish_page"},{"description":"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.","inputSchema":{"properties":{"draft":{"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.","type":"boolean"},"html":{"description":"The complete new document (not a diff). HTML, or Markdown when source_type is \"markdown\".","type":"string"},"page_id":{"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.","type":"string"},"project":{"description":"Optional; omit to keep the existing project.","type":"string"},"source_type":{"description":"Default \"html\".","enum":["html","markdown"],"type":"string"},"title":{"description":"Optional; omit to keep the existing title.","type":"string"}},"required":["page_id","html"],"type":"object"},"name":"update_page"},{"description":"Finish account verification with the 6-digit code PubSpace emailed to the human (ask them to read it to you). Publishing unlocks on success. Works in the session where create_account ran, or with an API key for an unverified account. Returns { ok, verified, subdomain }; fails with invalid_code (and attemptsRemaining), code_expired, too_many_attempts or already_verified.","inputSchema":{"properties":{"code":{"description":"The 6-digit code from the verification email.","type":"string"}},"required":["code"],"type":"object"},"name":"verify_email"}]},"body_sha256":"6a52272835789b6db0186526f1d159ef71d0eae4022590a157c0e9a6ecd5d8e4","prev_id":531997,"leaf":"0x602aa5f596c7376c817473d47c82ab75548120f9040097fbbca6e0864075ad27","leaf_text":"{\"body\":\"6a52272835789b6db0186526f1d159ef71d0eae4022590a157c0e9a6ecd5d8e4\",\"id\":2025295,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793581964355834,\"prev\":531997,\"subject\":\"362de6ca-f3c5-4af3-b7f2-b6560e6c8550\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-11-02","leaves":444186,"root":"0x78fecaabbe319e56f5c4b80fc02e2052e198ad24781da8832a475ff65f2002d1","chained":"0xdc35957db5d1371ca382b9152878ffece28ec7c5cb4f98fd71ddb367f8b999b2","anchor_chain":"eip155:5042002","anchor_tx":"0x56b814612eb2e3e544153df3e91e1f7199106d1e430c7d8c6b653feeb9ebe9af","anchor_block":70432815},"proof":["0x602ad62d9069f4bda8ed63b9b8263bf409ba13bb9d5a349f8cd8e39059ce36a5","0x61145d09144bcfb7d7b05cd1cae9a0b766321e31a75b8c8d8cf9ba348b93f3c6","0x2097a4640db3e5f74c118f7bb0f5c5d3af3d1bb50a7213bbff3e45e18a51abdf","0x5ecf1dc987586b64c55d42be8d1da4a4be55a2b823a6b6b76373d047aa86cd1d","0xab9ebfb111a6dc7b150468becb352018e51b22744fc3f5a97fd68466538816ca","0x25f2baf3e012008c59350aea28b069bbb05173618fd15ad064955788df20b0a5","0x0cad985b71347fbe03c7062e70b165ac38c35896962b59e541da321007e6c421","0x889fe6af11dd9a1e2452e983cbc14863973a6ca37a676c51989bc84175aed263","0x06ad325567c1a198b102b94162224bcd00439b817f6a306e28e8ae84141a98b0","0x22fde5ec72ed0dc8457824491aa04a262e6b73f85f576f664aa7d4bdd1755f22","0x970104cbae5ddefe858d4264be5eac9e0235920c703ea6a1f5a56512ed57caa8","0xa757be925280eb68af83252e53d459806a828f69a86ca1efa5f7c512fd57f458","0xd7d3bfe4670fa6bdde44d198ca661840b2abfe18e9099f606cc8dbc11ac3c436","0x6ae97c2bdc679e3326a739627f6c3a307d7e25e547b9bf23dbf2622fb26d858e","0x23f4763e8db2efe57fbc28dfc68f2b97b65f54a03425994e68157763af649a50","0x0e5696ae625571c52ddcd8dc09aa6c994b4ab38f2086df20d56f1f01c603e501","0xf9973981f80219d4f00fa9186b40a8144accc0c9875572fb79eaea312a21a187","0x4d205063c881c48edbbb37762a8d3bbb7444d4c42daa882f663a231893d25c35","0x365b161a4b68d750dcc4b3ecce1154a2163c87b08762079428e68f0ebb6a754e"]}