Publish HTML, Markdown, KV, JSON, and files to brewpage.app from AI assistants. No signup.
Typeroll CMS is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Build, edit and publish static websites in Typeroll CMS: pages, blocks, media, forms and deploys.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --env 'TYPEROLL_API_KEY=${TYPEROLL_API_KEY}' --transport stdio typeroll-cms-mcp '--' npx -y --package=@typeroll/mcp-server typeroll
# 2 — ask your agent for something these tools do
# export_block_types, import_block_types, list_block_types and 58 more
It needs TYPEROLL_API_KEY: this reads it from your environment, so export it first. Remote: OAuth sign-in · Package: API key.
Typeroll CMS costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one can run either way — at an address its publisher runs, or as a process under your own user, with your files and your network — and this marketplace is in the path of neither.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. Claude Code reads TYPEROLL_API_KEY (Site or organization API key from the Typeroll portal) from your environment each time it starts the server, so the value stays out of its config: export it in your shell profile (macOS, Linux), or run setx TYPEROLL_API_KEY … and open a new terminal (Windows). The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user --env 'TYPEROLL_API_KEY=${TYPEROLL_API_KEY}' --transport stdio typeroll-cms-mcp '--' npx -y --package=@typeroll/mcp-server typerollReconnect, or start a new session, and the tools appear in the model’s tool list.
Its publisher also runs it at https://app.typeroll.com/api/mcp: nothing to start on your machine, and this marketplace is not in the path.
claude mcp add --scope user --transport http typeroll-cms-mcp https://app.typeroll.com/api/mcpIt reaches a system of yours, so it needs your own credential rather than the publisher’s: TYPEROLL_API_KEY — Site or organization API key from the Typeroll portal. You set it in your own client’s config, on your machine — this marketplace never holds it.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
61 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
Pack site block types into a .tcblocks zip (base64). When ids is omitted, every block type the Site has (made in the portal, by an agent, or imported) is bundled. The package keeps every property — composition, template, styles and CSS scope, script, field help and list settings — so it moves…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ids | array | no | Specific block-type ids to include. Omit to export every site block type. |
| name | string | no | Package name (default: {site}-blocks). |
| version | string | no | Package version written into the manifest (default: 1.0.0). This is the package semver, not a Site version — use version_branch for that. |
| version_branch | yes | — |
Install block types from a .tcblocks package (zip as base64). Needs WRITE permission on the Site. Each definition is checked by the same validator as create_block_type; a definition with errors is reported as failed and not written. On a name conflict on_conflict decides: skip (default) keeps…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| zip_base64 | string | yes | Base64-encoded .tcblocks zip. |
| on_conflict | string | no | What to do when the Site already has a block type with the same name. Default skip. |
| version | yes | — |
Discover every block type usable on this site. Returns ALL of them in one list: core blocks (id like "core/section", always available), site block types (origin "user" from the portal, "ai" from an agent) and third-party blocks (origin "third_party", imported from .tcblocks packages). Call this…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| include_core | boolean | no | Default true. Set false to get only the site's own and third-party types. |
| full | boolean | no | — |
| version | yes | — |
Full definition of one block type: the field schema, its parts (named sub-elements such as core/rich_heading's links or core/hero's heading and buttons, each with a target; style one with a style's parts site-wide or the block's data.part_styles, or the part's own style_field), and its…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type_id | string | yes | — |
| version | yes | — |
Everything that uses a block type, on every surface: pages (saved block pages and drafts — sources says which), templates (page templates), partials (header, footer, global blocks), block_templates, and block_types (other site block types built from it). Repeaters that render the type…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type_id | string | yes | — |
| version | yes | — |
Built-in starting points for a new block type: complete composed definitions (icon list, feature cards, numbered steps) with fields, composition and scoped CSS. Adapt one (rename it, change fields) and pass it to create_block_type — it is the quickest way to a valid composed type.
No parameter schema on file.
Check a block type definition without saving it, with the exact validator create_block_type and update_block_type use. Pass the whole definition, or with type_id a patch to that stored type (renames are checked too). Returns { ok, problems, merged }: every error and warning with a JSON-pointer…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| definition | object | yes | The block type definition (as for create_block_type), or a patch when type_id is set. |
| type_id | string | no | Validate definition as a patch to this stored block type. |
| version | yes | — |
Render a block type definition that need not be saved, through the same preview renderer as the portal (the Site's render version, theme CSS, named styles, custom CSS, the other site block types, and the sanitizer). Without data the block shows sample values derived from its fields. Returns {…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| definition | object | no | The block type definition, or a patch when type_id is set. Omit with type_id to preview the stored type. |
| type_id | string | no | Preview definition as a patch to this stored block type. |
| data | object | no | Field values for the previewed block. Omit for sample data. |
| render_version | integer | no | Render with this platform render version instead of the Site's own. |
| version | yes | — |
Create a block type for this Site when no core block (or block template) fits a recurring shape. Origin is stamped 'ai'; id = name. The type is available to every page editor immediately and reaches the live site with the next deploy. Two kinds of site block type. COMPOSED (preferred):…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Machine name (lowercase letters, digits, "-" and "_", 1-64 chars). Becomes the id. |
| label | string | yes | Display label in the block picker. |
| version | yes | — |
Change a site block type (core/* types are read-only). Needs WRITE permission. schema, composition, template, styles and parts replace wholesale when sent; other properties merge. Changing a type in use: to RENAME a field, send the new schema with renames ({ "title": "heading", "items.label":…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type_id | string | yes | Block type id (a site type). Cannot be a core/* block. |
| renames | object | no | Old field path → new field name, e.g. { "title": "heading", "items.label": "text" }. Send together with the new schema. |
| confirm_data_loss | boolean | no | Drop the data of removed or retyped fields that hold data. Only after the user agreed; the 409 lists what would be lost. |
| version | yes | — |
Remove a site block type. Needs WRITE permission; core blocks (core/*) cannot be deleted. Refused with 409 while anything uses the type — pages and drafts, page templates, header, footer, global blocks, block templates, other block types or repeaters — and the refusal lists the uses (as…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type_id | string | yes | — |
| version | yes | — |
Organization-admin DNS onboarding for a site owned by that organization. Create a zone in its Hosting Group account, start a Cloudflare DNS scan, review the discovered records against current public DNS and existing zone records, then apply a reviewed plan as DNS only. Nameservers are returned for…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| site_id | string | yes | — |
| zone_name | string | yes | — |
| action | string | yes | — |
| plan_revision | string | no | — |
| confirm_inventory | boolean | no | — |
Guide a site domain move. Start with check: returns hosting, zone, nameserver, certificate, permission, publishing, redirect capacity, candidate_noindex and candidate checks, current phase, next action and an explicit switch summary. candidate_noindex blocks prepare and approve while site…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| action | string | yes | — |
| revision | string | no | — |
| candidate_id | string | no | — |
| website_host | string | no | — |
| media_host | string | no | — |
| media_path_prefix | string | no | — |
| redirect_hosts | array | no | — |
| dns_mode | string | no | — |
| confirm_rebuild | boolean | no | — |
| accept_validation_window | boolean | no | — |
| validation_timeout_minutes | integer | no | — |
| confirm_disable_noindex | boolean | no | For prepare: Turn off sitewide_noindex and sitewide_nofollow (and remove noindex from a robots meta tag in scripts_head) in the site settings and build the candidate indexable for the new website host |
| allow_noindex_launch | boolean | no | For prepare and approve: set only when Search engines are told to skip this site (sitewide_noindex, sitewide_nofollow or a robots noindex meta in scripts_head) and you deliberately want to launch it h |
Verify migration of an existing static managed Pages site to connected Git publishing. Checks the original hosting account, project, domain and shared build engine. Returns a revision and previous live deployment; does not migrate or deploy.
No parameter schema on file.
Explicitly migrate one managed Pages site to the connected GitHub organization and shared build engine using the revision from check_managed_site_migration. Requires site admin permission. Preserves the original hosting project, live domain and old media URLs, then queues verified media copying…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| revision | string | yes | — |
Read the Organization's GitHub and Cloudflare publishing connections: status, revision (needed to change or disconnect), account identity, media_ready, media migration, github_setup (app_configured, encryption_available) and connect_urls. Requires an organization API key; never returns…
No parameter schema on file.
Disconnect the Organization's GitHub or Cloudflare publishing connection at the revision from read_organization_publishing_connections. Erases stored credentials; does not delete repositories, buckets, media, DNS or published sites, but publishing through that provider stops until reconnected.…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| provider | string | yes | — |
| revision | string | yes | — |
| hosting_group_id | string | no | Omit for the organization (Default) connection. |
Connect the Organization's default Cloudflare account without a browser, using a customer Cloudflare API token plus R2 access keys for an existing private bucket. Verifies the account, Pages access and the bucket before saving; credentials are encrypted and never returned. Requires an organization…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| revision | string | yes | — |
| account_id | string | yes | — |
| bucket | string | yes | — |
| api_token | string | yes | — |
| access_key_id | string | yes | — |
| secret_access_key | string | yes | — |
Create or reuse the Organization's private and public R2 media buckets in the connected Cloudflare account and configure upload CORS and lifecycle rules. Run after Cloudflare is connected and before save_organization_media_access. Requires an organization API key and the current Cloudflare…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| revision | string | yes | — |
Save and verify the Cloudflare R2 Access Key ID and Secret Access Key for the prepared media buckets (not the Cloudflare API token). Marks media storage ready, which imports require. The first activation moves existing media site by site; new keys for ready storage resume only stopped site…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| revision | string | yes | — |
| access_key_id | string | yes | — |
| secret_access_key | string | yes | — |
Check live GitHub build permissions (Actions and Workflows) of an already connected GitHub account without disconnecting or reconnecting. Requires an organization API key. Distinguishes an update the organization owner can approve from permissions Typeroll has not requested yet. Returns the…
No parameter schema on file.
Explain why the Organization's GitHub publishing connection is or is not working and who must do what next. Returns the Organization's state: diagnosis.outcome (connected, needs_attention, choose, action_required, waiting_on_owner, sign_in_required, retryable_error or unavailable), blockers, and…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| recheck | boolean | no | Re-check the connected installation with the publisher App before answering. |
Explain why a Cloudflare hosting connection (the Organization's Default Hosting Group, or hosting_group_id from list_hosting_groups) is or is not working and who must do what next. Returns the Organization's state: diagnosis.outcome (connected, needs_attention, choose, action_required,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hosting_group_id | string | no | Omit for the organization (Default) connection. |
| recheck | boolean | no | Re-verify a saved connection before answering. |
Prepare or update the organization Cloudflare or GitHub build engine and start its isolated execution and artifact-transfer check. Use the selected provider’s engine revision. Setup does not change the organization’s default provider. Requires an organization API key and current revision. Keeps…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| revision | string | yes | — |
| provider | string | no | — |
Read the selected provider, saved Cloudflare and GitHub build engines, and active jobs for the organization (each with job_id, site_id, kind and status: queued, running, or publishing while a built publication uploads and verifies; image preparation jobs are media-…). A job stays listed until its…
No parameter schema on file.
Check setup and qualification using the existing organization connection for the chosen provider. Omit provider for Cloudflare compatibility. Requires the current revision and an organization API key. Returns precise permission or qualification requirements; does not enable builds or change hosting.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| revision | string | yes | — |
| provider | string | no | — |
Select a verified Cloudflare or GitHub engine for new publications. Requires an organization API key and selection.revision from read_organization_build_engine. Existing builds retain their provider, source and version.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| provider | string | yes | — |
| revision | string | yes | — |
Cancel an active GitHub build using its key from active_jobs. Requires an organization API key. Revokes the attempt before requesting provider cancellation; it cannot publish afterward. Completed builds cannot be cancelled here.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| key | string | yes | — |
List organization Hosting Groups, site address bases and safe hosting connection status. Requires an organization API key. Media and GitHub remain shared.
No parameter schema on file.
Create a Hosting Group, or update its name, site address base and DNS mode using its current id and revision. Requires an organization API key. Does not move existing sites, media, or traffic. Connect the hosting account in Publishing.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | no | — |
| revision | string | no | — |
| name | string | yes | — |
| sites_domain | string | yes | — |
| dns_mode | string | yes | — |
Connect or disconnect an additional Hosting Group using a customer Cloudflare API token. Requires an organization API key and the current connection revision from list_hosting_groups. Default uses organization Publishing. No R2 access is required for the hosting token. A Cloudflare account another…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| action | string | yes | — |
| hosting_group_id | string | yes | — |
| revision | string | yes | — |
| account_id | string | no | — |
| api_token | string | no | — |
Read the selected site Hosting Group and eligible organization groups. Omitted legacy assignments resolve to Default.
No parameter schema on file.
Select the Hosting Group for an unpublished site. Requires site admin permission and previous_group_id from read_site_hosting_group. Published sites or active builds require a hosting migration and are rejected.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hosting_group_id | string | yes | — |
| previous_group_id | string | yes | — |
List Cloudflare domains visible in the organization’s connected account, including activation, DNS hosting status and domain_access. Refresh this read to discover new domains; approval_required identifies missing OAuth consent without disconnecting the account. Requires an organization API key.…
No parameter schema on file.
Configure organization media and site subdomains using an active domain in the connected Cloudflare account. Attaches the media host to R2 and creates its DNS record; site media is not touched. Site/version addresses are created at deployment. Requires an organization API key and the current…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| revision | string | yes | — |
| zone_id | string | yes | — |
| media_subdomain | string | yes | Short label, for example media. |
| sites_subdomain | string | yes | Short label, for example sites. |
Publish for the new domain shortly before changing DNS, using only the last successfully published snapshot. This replaces main at the current or temporary address; it does not create a separate preview branch. Publish intended edits normally at the current or temporary address first. Newer…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| revision | string | yes | — |
| confirm_disable_noindex | boolean | no | Turn off sitewide_noindex and sitewide_nofollow (and remove noindex from a robots meta tag in scripts_head) in the site settings and build the candidate indexable for the new website host in the same |
| allow_noindex_launch | boolean | no | Set only when Search engines are told to skip this site (sitewide_noindex, sitewide_nofollow or a robots noindex meta in scripts_head) and you deliberately want to launch it hidden. Without it, a site |
Read progress and actionable failures while original media moves to the organization Cloudflare account: overall state with updated_at, each site (state, counts, error, updated_at) and failed_media (site_id, media_id, filename, source_url, code, message, at) for files that could not be copied and…
No parameter schema on file.
Resume verified media migration after fixing account or R2 setup. Restarts only failed site migrations and stopped jobs, giving set-aside files fresh attempts; completed sites are not touched. Source files remain readable; pointer changes require matching hashes. Set prepare_transfer to set up or…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| prepare_transfer | boolean | no | — |
Check required publishing connections and domains for the selected site. Returns actionable setup requirements. Editing and temporary previews remain available before publishing is configured.
No parameter schema on file.
Approve switching DNS to the current verified main publication, without another Git push, build or upload. Read the latest candidate_id; older receipts are rejected. Read publishing domains first and review DNS requirements, certificate readiness and redirect_preparations. Existing traffic is…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| revision | string | yes | — |
| candidate_id | string | yes | — |
| validation_timeout_minutes | integer | no | — |
| accept_validation_window | boolean | no | Accept the interruption until Cloudflare validates the website host after its single reviewed record changes. Only valid when preparation.validation_blocker.resolution is accept_validation_window. |
| allow_noindex_launch | boolean | no | Set only when Search engines are told to skip this site (sitewide_noindex, sitewide_nofollow or a robots noindex meta in scripts_head) and you deliberately want to launch it hidden. Without it, a site |
Read the desired and active website, redirect and media hosts, retained media aliases, DNS management mode and domain configuration revision. host_checks lists each future host with its Cloudflare zone and structured blockers and warnings (code, host, message), for example apex_zone_required (an…
No parameter schema on file.
Save future website, redirect and media hosts before preparing a deployment. Normal trigger_deploy continues updating the current or temporary address, even while future hosts await validation. Shortly before changing DNS, explicitly call prepare_publishing_domain_change to publish the last…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| revision | string | yes | — |
| website_host | string | yes | — |
| media_host | string | yes | — |
| confirm_rebuild | boolean | no | Legacy input; Core 0.2.116+ does not require confirmation to save inert future addresses. |
| media_path_prefix | string | no | Empty on a separate media host; /media when using the website host. |
| redirect_hosts | array | no | Hostnames that redirect permanently to website_host, such as www.example.com. Omit or send [] for none. |
| dns_mode | string | yes | — |
Read the organization site address base, shared media host, live Cloudflare media-domain status and setup instructions. This read does not modify DNS. Requires an organization API key; site keys cannot access organization publishing settings.
No parameter schema on file.
Save separate organization hostnames: sites_domain for site and version addresses, media_host for shared media. Requires an organization API key and current settings revision. Automatic DNS mode queues media setup; external mode leaves DNS to you. Does not change nameservers or replace an existing…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| revision | string | yes | — |
| sites_domain | string | no | — |
| media_host | string | no | — |
| default_domain | string | no | Legacy shorthand for both hostnames; prefer sites_domain and media_host. |
| dns_mode | string | yes | — |
Read the current state of the site's custom domain. Returns { hostname, status, dns_target, verified_at, failure_reason } or null when no domain is attached. Status is one of 'pending' (DNS not yet verified), 'verified' (DNS + cert OK, awaiting customer activation), 'live' (production URL is…
No parameter schema on file.
Attach a custom domain to this site. The site MUST NOT already have a domain set — remove the existing one first. Declaring the domain makes it canonical immediately and queues a production deploy by default; point DNS only after that deploy. Returns the CNAME target. Use poll_domain to observe…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hostname | string | yes | Hostname to attach, e.g. "www.example.com". Leading https:// and trailing slashes are stripped. |
| prefer | string | no | Canonical host for an apex/www pair. Defaults to apex. |
| auto_deploy | boolean | no | Default true. Publish the canonical/sitemap change before DNS cutover. |
Ask Cloudflare for the current state of the attached domain and update the site doc accordingly. Idempotent — call after DNS changes propagate. Returns the new state; status may have advanced from 'pending' to 'verified' or 'failed'.
No parameter schema on file.
Legacy compatibility tool; new workflows should not call it. A declared domain is already canonical and becomes visitable when DNS verifies. For legacy records only, this changes the stored verified state to live. Precondition: status must be 'verified' (or already 'live' — idempotent). By default…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| auto_deploy | boolean | no | Default true. Enqueue a production deploy after activation so canonical URLs update. |
Detach the custom domain from this site. Removes it from Cloudflare Pages and clears the site doc. The fallback subdomain remains. Use this when the customer wants to start over with a different hostname or move the site to a different domain provider.
No parameter schema on file.
Inspect saved custom-field authority before an import. Returns a revision and source for explicit schema leaf paths, without values or actor identities. Keyed items use programs/@stable-id/name; escape ~ as ~0 and / as ~1. Requires editor access. An absent source is explicitly unattributed, never…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page_id | string | yes | — |
| paths | array | yes | — |
| version | yes | — |
Save low-priority research/import changes to individual custom-field leaves. Requires the current revision from read_page_authority and explicit import in each field’s writable_by. Preserves unspecified fields and keyed-list items; never downgrades protected answers. Atomic 409 on conflicts,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page_id | string | yes | — |
| base_revision | string | yes | — |
| changes | array | yes | — |
| source_url | string | no | — |
| import_run_id | string | no | — |
| version | yes | — |
List pages on the active site. Returns id, title, slug, status, and SEO summary (no html_content by default — use read_page or batch_read_pages for body content). Supports filtering by status and forward-cursor pagination. Pass full=true to include html_content + blocks in the response.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | no | — |
| sort_by | string | no | Sort field; defaults to the selected content type’s order. Unfiltered lists use stable Page IDs. |
| sort_order | string | no | — |
| content_type | string | no | Filter Pages by content type ID. |
| limit | integer | no | — |
| cursor | string | no | — |
| full | boolean | no | Set true to include html_content + blocks. Default false (summary only) to avoid large payloads on sites with many pages. |
| version | yes | — |
Fetch one page in full — title, slug, status, html_content, SEO fields. Returns the DRAFT VIEW: the saved page with any unsaved draft (working copy) overlaid, plus has_unsaved_changes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page_id | string | yes | — |
| version | yes | — |
Read up to 200 pages in a single call. Returns pages_by_id — a map keyed by page_id for easy lookup — plus a not_found list. Use to bulk-load context before a redesign sweep.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page_ids | array | yes | — |
| version | yes | — |
Create a new page. Defaults to blocks mode (same as the portal UI's "New page" button) and seeds the tree with a heading + prose block so the editor is never blank. Pass html_content (or content_mode="html") to opt into raw-HTML mode instead. Slug is derived from the title when omitted. Default…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| write_mode | string | no | Default editor. Use import for research/migration seeding so later owner answers outrank it. Fields must explicitly allow import; server assigns provenance. Does not reclassify existing pages. |
| title | string | yes | — |
| content_type | string | no | Content type ID; defaults to page. |
| fields | object | no | Custom field values defined by the content type. |
| slug | string | no | URL slug — single path segment, no slashes (e.g. "about", "kontakt"). Empty string "" = homepage. For nested URLs set the path field explicitly — slug stays a leaf id. Already in use → 409 slug_in |
| path | string | no | Optional explicit URL path for nested pages (e.g. "/erbjudanden/sommar-2026"). When set, takes precedence over slug for routing. Must start with "/", lowercase a-z/0-9/-/_/ only, no "..", no "//", no |
| content_mode | string | no | Default "blocks". "blocks" stores a Block[] tree (the modern default — supports the full ~40-block library, page templates, and the responsive system). "html" stores raw markup in html_content (legacy |
| html_content | string | no | Body HTML — only used when content_mode="html". |
| blocks | array | no | Block tree — only used when content_mode="blocks". Omit to get the default heading+prose seed. |
| status | string | no | — |
| breadcrumb_label | string | no | Optional short breadcrumb label. Leaves Page title, SEO title and route unchanged; null/empty uses the title. |
| seo_title | string | no | — |
| append_seo_suffix | boolean | no | Set false to omit the site default SEO suffix on this page. |
| seo_description | string | no | — |
| og_title | string | no | — |
| og_description | string | no | — |
| og_image | string | no | — |
| seo_image_alt | string | no | — |
| alternates | array | no | Cross-domain hreflang cluster: the equivalents of THIS page on sister language sites, as [{ hreflang, href }]. One Typeroll site owns one domain, so a multi-language family (example.se / example.de / |
| schema_type | string | no | Free-form Schema.org type ("Service", "Course", "Product", …) for auto JSON-LD. |
Shallow-merge update on a page, including its short breadcrumb label (only the fields you pass change). BUFFER MODEL: content fields land in the page's unsaved DRAFT (working copy) — invisible to deploys and default previews until saved; status/date_published apply immediately. Pass save:true…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page_id | string | yes | — |
| patch | object | yes | — |
| answer_sources | object | no | Evidence per schema leaf path. Actor and timestamp are always assigned by the server; unchanged answers are not confirmed. |
| save | boolean | no | — |
| version | yes | — |
Full replace of a page's writable content fields (PUT) — omitted fields are cleared. BUFFER MODEL: the replacement is an unsaved DRAFT until committed; pass save:true to commit in the same call. Use update_page for shallow merge.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page_id | string | yes | — |
| page | object | yes | — |
| answer_sources | object | no | Evidence per schema leaf path. Actor and timestamp are always assigned by the server; unchanged answers are not confirmed. |
| save | boolean | no | — |
| version | yes | — |
Apply per-page patches in one call (up to 200 entries). Each entry is { page_id, patch, save?, answer_sources? }; failures are reported per-row, the rest still apply. BUFFER MODEL: content patches land in each page's unsaved draft; per-entry save:true (or the top-level save flag) commits — typical…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| updates | array | yes | — |
| save | boolean | no | Commit every entry's draft (shorthand for save:true on each). |
| version | yes | — |
Duplicate an existing page under a new title + slug. Use this when you want a near-copy of an existing page as the starting point (e.g. duplicate "Privatflytt" → "Privatflytt Härnösand"). The new page is created as a draft regardless of the source's status. Returns the created page. Same address…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| source_page_id | string | yes | — |
| title | string | yes | Title for the new page. |
| slug | string | no | Slug for the new page. Omit to derive it from the title. A slug already in use is refused (409 slug_in_use), never changed. |
| version | yes | — |
Delete a page (tombstoned on branches, removed on main).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page_id | string | yes | — |
| version | yes | — |
Get the WHOLE page rendered as one self-contained HTML document — header partial + block-rendered body + footer partial, with the site's settings CSS variables, global styles, the tree-shaken block-CSS bundle, block JavaScript, the Extension runtime and the cookie-consent banner all included,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page_id | string | yes | — |
| annotate | boolean | no | — |
| include_working_copy | boolean | no | — |
| version | yes | — |
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Typeroll CMS or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | minimal | capability blast radius (minimal) — client exposure if the model is manipulated | −0 |
| verification-discount | source | publisher verification (provenance) — cryptographic build provenance ties the artifact to its source | −0 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
No tools were enumerated, so prompt-injection, capability and toxic-flow analysis had no tool surface to inspect. To grade a package’s real runtime tools, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. minimal is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| No per-tool rows for this release — see the note below. | ||
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.45.103. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Typeroll CMS can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.