Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

ai.spideriq/publish

NPM · @SPIDERIQ/MCP-PUBLISH · SCANNED AUG 3

SpiderIQ Publish: content platform MCP (pages, posts, templates, components, domains, media)

+13 this week 48 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security70
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects sharp 0.33.5, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (131 of 135), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency19
  • Repository check failed: the declared repository URL returned HTTP 404. See how to fix → View diagnostics → Fail
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 7 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability27
  • AI-judged instruction clarity (poor).Fail
  • Context-footprint check failed: tool/resource definitions use about 36639 tokens (~234/item across 156 items; 156 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage91
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 72% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @spideriq/mcp-publish

# add to Claude Code
claude mcp add ai-spideriq-publish -- npx -y @spideriq/mcp-publish
# add to Codex CLI
codex mcp add ai-spideriq-publish -- npx -y @spideriq/mcp-publish
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-spideriq-publish": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@spideriq/mcp-publish"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add ai-spideriq-publish --command npx --arg -y --arg @spideriq/mcp-publish
# ~/.hermes/config.yaml
mcp_servers:
  ai-spideriq-publish:
    command: "npx"
    args: ["-y", "@spideriq/mcp-publish"]
// mcp.json
{
  "mcpServers": {
    "ai-spideriq-publish": {
      "command": "npx",
      "args": [
        "-y",
        "@spideriq/mcp-publish"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +36
    • GHSA-f88m-g3jw-g9cj affects this package: high security
    • Provenance: unverified → fail security
    • Known CVEs: unverified → fail security
    • Install scripts: unverified → pass security
    • Malware scan: unverified → pass security
    • License: unverified → pass functional
    • Dependency health: unverified → partial functional
    • Maintenance: unverified → pass functional
    • MCP protocol: unverified → pass functional
    • Stability: unverified → 0.23 functional
    • Schema quality: unverified → poor functional
    • Licence: MIT functional
  • 1 Aug 26 −23
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +17
    • Tool coverage: unverified → 100 functional
  • 28 Jul 26 −17
    • Tool coverage: 100 → unverified functional
    • First check of Schema quality: unverified functional
  • 27 Jul 26 35

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/@spideriq/[email protected]

Provenance none

Ecosystem: npm · Outcome: none

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-f88m-g3jw-g9cj high yes
Dependencies 131 packages

131 packages in the resolved dependency tree · 130 deprecated · 29 stale · 2 without a linked repository.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 156 exposed · ~36,639 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
changelog_create ~178

Create a DRAFT changelog entry. `version` must be unique for the brand (e.g. "v2.10.0"); a duplicate returns 409. `body` is a Tiptap JSON document. Publish it afterwards with changelog_publish.

NameTypeReqDescription
bodyobjectyesEntry body (Tiptap JSON document).
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
titlestringyesRelease title.
versionstringyesVersion label, unique per brand (e.g. "v2.10.0").
workspacestring

No output schema declared.

No examples provided.

changelog_list ~217

List your brand's changelog entries (version, title, status, published_at). This IS the built-in CHANGELOG content type — a /changelog route, RSS+Atom feeds, and dashboard editor already exist; you do NOT need to build a changelog. Note the tool naming: changelog_list / changelog_create / changelog_publish use a `changelog_` prefix (NOT `content_*_changelog_entry`). An empty list means zero entries created yet, not a missing feature. Use this to discover an entry's UUID before publishing it via changelog_publish. Optionally filter by status (draft/published/archived).

NameTypeReqDescription
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
statusstringFilter by status.
workspacestring

No output schema declared.

No examples provided.

changelog_publish ~152

Publish a changelog entry (status → published). It appears on the public /changelog timeline + RSS/Atom feeds and, on the first publish, fires the changelog.published notification to subscribers. Reversible (no dry_run gate). Pass the entry UUID from changelog_list.

NameTypeReqDescription
changelog_idstringyesChangelog entry UUID (from changelog_list).
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

check_access_status ~152

Check the status of a PAT access request. Returns 'pending', 'active', 'denied', 'expired', or 'revoked' (matches the backend PATRequestStatus enum). Once status==='active', the token is saved to ~/.spideriq/credentials.json automatically. Multi-brand approvals save one entry per workspace under client_id, with the first aliased as 'default' so existing tools (upload_local_file, etc.) keep working without --workspace.

NameTypeReqDescription
api_urlstringAPI URL (default: https://spideriq.ai)
poll_tokenstringyesPoll token from request_access
request_idstringyesRequest ID from request_access

No output schema declared.

No examples provided.

component_rollback ~428

Roll a component back to an earlier version's content. Creates a new published version (so the forward audit trail stays intact) and repoints every consuming page to it. When to use: - component_update_and_propagate went wrong and you need to unroll it - You want to revert to a known-good version without manually re-entering the old HTML/CSS - You want staged rollback — pass pages=["home"] to only revert the home page's pin How it works: 1. Call with dry_run=true — returns a confirm_token for the rollback action 2. Inspect preview; if right, call again with confirm_token 3. Service fetches target_version's content, creates a new published version with a fresh semver (bumped from the CURRENT version, default patch), and updates consuming pages' blocks to pin it 4. Block-level page content renders live on next request — no tenant deploy needed Pairs with component_update_and_propagate — the gate actions are distinct ("component_rollback" vs "component_update_and_propagate") so a token issued for one can't be consumed by the other.

NameTypeReqDescription
bumpstringHow to bump the NEW version that gets the old content. Default: patch.
confirm_tokenstringToken from a prior dry_run.
dry_runbooleanPreview mode. Default: false.
pagesarrayLimit repoint to these page slugs. Omit for all.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
slugstringyesComponent slug to roll back.
target_versionstringyesVersion to restore (e.g. "1.0.3"). Must exist — check list_component_versions first.
workspacestringWorkspace name (default: "default").

No output schema declared.

No examples provided.

component_update_and_propagate ~688

Update a component's HTML/CSS/props/etc. AND repoint every consuming page to the new version, in one atomic call. When to use this instead of component_update: - The component is referenced from multiple pages and you want all of them to pick up the change - You want a single confirm_token covering the component + all page mutations (instead of one per page) - You want staged rollout — pass `pages: ["home"]` to update the component everywhere but only repoint the home page; other pages keep referencing the old version How it works: 1. Call with `dry_run: true` — returns `affected_pages` (what would change) + a `confirm_token` 2. Inspect the preview; if it's right, call again with `confirm_token: "cft_..."` 3. The service bumps semver (default patch; also supports minor / major), writes a new published component row, and UPDATEs blocks on every affected page's `content_pages.blocks` JSONB 4. Never auto-deploys the tenant KV. Block-level page updates render live via the content API on next request. Only run deploy_site_preview → deploy_site_production if you ALSO changed templates/theme/config. Pages filter semantics: - omit `pages` or set null → propagate to every consuming page (default, matches "update everywhere" intent) - pass `["home", "pricing"]` → only those pages get the new version pin; other consumers keep the old pin Field semantics: - At least one of html_template / css / js / props_schema / default_props / dependencies / name / description must be set - Inline `<style>` tags in html_template are rejected — put CSS in the css field - Dependencies validated against the Tier-3 CDN allowlist

NameTypeReqDescription
bumpstringHow to bump semver from current version. Default: patch.
confirm_tokenstringToken from a prior dry_run. Consume to perform the mutation.
cssstringNew CSS (injected via Shadow DOM at render time).
default_propsobjectNew default prop values.
dependenciesarrayCDN library dependency keys (Tier 3). Validated against allowlist.
descriptionstringUpdate description.
dry_runbooleanPreview mode — returns affected_pages + confirm_token without mutating. Default: false.
html_templatestringNew HTML template. Inline <style> tags will be rejected.
jsstringNew JS (Tier 2 scoped hydration).
namestringUpdate display name.
pagesarrayLimit propagation to these page slugs. Omit to propagate to every consuming page.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
props_schemaobjectNew JSON Schema for prop validation.
slugstringyesComponent slug (e.g. "hero", "pricing-cards"). Must already be published for this client.
workspacestringWorkspace name (default: "default").

No output schema declared.

No examples provided.

content_add_domain ~109

Add a custom domain for your content site. Requires DNS verification after adding.

NameTypeReqDescription
domainstringyesDomain name (e.g., "blog.mycompany.com")
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_apply_layout_preset ~344

Apply a named layout preset to this client's site by writing layout/theme.liquid. When to use this instead of template_upsert: - You want "blank" (no header/footer), "minimal" (footer only), "landing" (header only), "chromed" (edge-to-edge main), or "default" layouts without writing Liquid yourself - You want to quickly test "what does the site look like with no global header?" - You don't have Liquid source for a layout — you just want a sensible starting point Available presets: "default" — header + main + footer (standard; matches bundled theme) "blank" — no header, no footer; full-page content "minimal" — footer only, no header "landing" — header only, no footer (marketing-landing chrome; from merged templates.ts duplicate, 2026-05-20) "chromed" — header + footer, but main is edge-to-edge (no container padding) After applying, customize individual sections with content_override_section().

NameTypeReqDescription
presetstringyesLayout preset name. One of: default, blank, minimal, chromed, landing
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
themestringTheme name (default: "default").
workspacestringWorkspace name (default: "default").

No output schema declared.

No examples provided.

content_apply_page_template ~395

Clone a page template's single page into the current tenant. Phase 11+12 gated. When to use: - A client/agent picked a page template and wants it added to their site - Building a funnel one page at a time (opt-in → thank-you → sales) from templates - You want a working page to ADAPT (edit copy/images/colors) instead of generating one How it works: 1. Reads the template's single source page from the SpiderIQ template-source tenant 2. Clones it into the current tenant as status='draft' with fresh block UUIDs 3. Applies any whitelisted theme settings the template carries Phase 11+12 flow: - First call with dry_run=true → {dry_run: true, preview, confirm_token, expires_at} - Inspect preview.pages_to_create (one page) - Second call with confirm_token=<token> → {pages_created, settings_applied} - The cloned page is a DRAFT — review, adapt, then publish with content_publish_page (and run content_visual_check against the published URL per Agent Trust 5.1). Same apply endpoint as content_apply_site_template; for a page template it clones exactly one page.

NameTypeReqDescription
confirm_tokenstringPhase 11+12: consume a prior preview token and clone for real.
dry_runbooleanPhase 11+12: preview the apply and receive a confirm_token without mutating.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
slugstringyesPage template slug to apply.
workspacestringWorkspace name (default: "default").

No output schema declared.

No examples provided.

content_apply_site_template ~393

Clone a site template into the current tenant. Phase 11+12 gated. When to use: - New tenant just provisioned, agent wants to give them something to start from - Client picked a template from the gallery, agent wires it up - A/B testing different starter sites without rebuilding from blocks How it works: 1. Reads the template's source pages from the SpiderIQ-owned template-source tenant 2. Clones each into the current tenant as status='draft' with fresh block UUIDs 3. Copies navigation menus for header + footer (or whatever locations the template names) 4. Copies whitelisted theme settings keys (primary_color, body_text_color, etc.) 5. Bumps the template's applied_count for the leaderboard Phase 11+12 flow: - First call with dry_run=true → returns {dry_run: true, preview, confirm_token, expires_at} - Inspect the preview (pages_to_create, settings_keys_to_apply) - Second call with confirm_token=<token> → returns {pages_created, nav_updated, settings_applied} - Cloned pages are drafts, NOT published. Review + publish individually, or use content_deploy_site to push the lot to production CF edge.

NameTypeReqDescription
confirm_tokenstringPhase 11+12: consume a prior preview token and apply for real.
dry_runbooleanPhase 11+12: preview the apply and receive a confirm_token without mutating.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
slugstringyesTemplate slug to apply.
workspacestringWorkspace name (default: "default").

No output schema declared.

No examples provided.

content_archive_component ~172

Archive a component (removes from active use, keeps for reference). Phase 11+12: defaults to dry_run=true — review the preview and call again with confirm_token.

NameTypeReqDescription
component_idstringyesComponent ID
confirm_tokenstringToken from a prior dry_run call. Single-use, 7d TTL.
dry_runbooleanPreview the change without mutating. Defaults to true — call again with confirm_token to actually mutate.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_audit_links ~276

Walk every published page's blocks + navigation menus and validate internal links against the published-page roster + active redirects. Returns a structured report: - valid_count: number of links that resolved correctly - broken: [{path, source, reason}] — each broken link with its tree position - proposed_redirects: [{from, to, status_code}] — heuristic suggestions - known_redirects: [{from, to, status_code}] — already-active redirects The "source" field is JSONPath-shaped (e.g. "page:home/block[2].url", "navigation:header[3]") so callers can navigate straight to the offending position. Pre-push hook in the SpiderPublish extension uses this to surface broken links as inline diagnostics before the push fan-out runs. Use BEFORE deploying a content change to catch /en/* legacy URLs, renamed slugs, or post-merge orphans. Idempotent — safe to run repeatedly.

NameTypeReqDescription
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_create_author ~166

Create a blog author profile.

NameTypeReqDescription
agent_typestringHuman or AI author
avatar_urlstringAvatar image URL
biostringAuthor biography
citystring
countrystring
emailstringAuthor email
full_namestringyesAuthor full name
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
rolestringAuthor role
slugstringURL slug
workspacestring

No output schema declared.

No examples provided.

content_create_category ~136

Create a blog category (supports parent_id for hierarchy).

NameTypeReqDescription
descriptionstring
namestringyesCategory name
parent_idstringParent category ID (for nesting)
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
slugstringURL slug
sort_ordernumberDisplay order
workspacestring

No output schema declared.

No examples provided.

content_create_component ~1,288

Create a reusable UI component (auto-wrapped in Shadow DOM for CSS isolation). IMPORTANT — set `kind` at create time. Components without a `kind` are flagged as latent Tier 3 by the page auditor (rule `creation.kind_null_with_dependencies`) and excluded from marketplace_search. If you're shipping `dependencies` (gsap, chartjs, etc.) you almost always want `kind='interactive'` + `js_runtime='vanilla'`. See the `kind` field for the full taxonomy and the kind→js_runtime/block_type/sources invariant matrix. P5: pass `authoring_hints` to surface preferred_path / common_mistakes / must_set / must_not_set on the _rules envelope when other agents insert your component. The response carries an _audit block flagging latent traps (kind=interactive without js, global component without agent_meta, etc.).

NameTypeReqDescription
agent_metaobjectPhase A agent-discovery metadata. Validated by `ComponentAgentMeta` (Pydantic `extra='forbid'`). Shape: { interaction_pattern?: enum, trigger_kind?: enum, intent?: string, audience_tags?: string[] }.…
authoring_hintsobjectP5 — author-written rules surfaced via the _rules envelope when this component is inserted. Shape: {preferred_path?: string, common_mistakes?: string[], must_set?: string[], must_not_set?: string[]}.…
block_typestringGeneric block shape — REQUIRED when kind='dynamic', MUST be NULL otherwise (DB CHECK constraint chk_components_kind via migration 174). Drives the editor's block-shape picker.
brand_fit_tagsarrayUniversal axis — multi-value industry vertical fit. Drives marketplace cross-filter.
categorystringComponent category
confirm_tokenstringToken from a prior dry_run call. Single-use, 7d TTL.
cssstringComponent CSS (isolated via Shadow DOM — no leaks)
default_propsobjectDefault prop values
dependenciesarrayCDN library keys from allowlist (Tier 3). E.g. ["gsap", "gsap/ScrollTrigger"]. Use content_list_cdn_allowlist to see available keys. When non-empty, set `kind` to `interactive` / `dynamic` / `extensi…
descriptionstringComponent description
dry_runbooleanPreview the change without mutating and receive a confirm_token. When omitted, the change is applied immediately (legacy behaviour preserved).
frameworkstringFramework for Tier 4 app components
html_templatestringyesLiquid HTML template for the component
is_globalbooleanMake available to all clients
jsstringVanilla JS scoped to shadow root (Tier 2). Receives root (shadowRoot) and props arguments.
js_runtimestringJavaScript runtime pattern — REQUIRED for kind ∈ {interactive, dynamic, extension}, MUST be NULL when kind='static'. vanilla — inline <script> blocks; no module bundling. web-component — C…
kindstringBehavioural class (Phase A 4-class taxonomy). DEFAULTS TO NULL — components without a kind are flagged 'latent Tier 3' by the page auditor and excluded from marketplace_search. static — prop…
moodarrayUniversal axis — multi-value mood tags for marketplace discovery (Phase A agent-discovery).
namestringyesDisplay name
palettearrayUniversal axis — open vocabulary palette tokens (e.g. "warm-neutrals", "monochrome", "neon-cyan-magenta"). Max 12.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
props_schemaobjectJSON Schema defining accepted props
scene_typestringUniversal axis — single-value scene/intent. Component-scoped values listed; cross-asset values live on bg-videos / site-templates.
slugstringyesComponent slug (URL-safe identifier)
source_codestringFramework source code (JSX/Vue SFC/Svelte)
sourcesarrayLive Data — the data source(s) this component binds to. REQUIRED (non-empty) when kind='dynamic' (backend 422 via chk_components_kind). At render the server fetches each source and exposes the result…
tagsarrayTags for discovery
thumbnail_urlstringPreview thumbnail URL
versionstringSemver version (default 1.0.0)
workspacestring

No output schema declared.

No examples provided.

content_create_doc ~127

Create a documentation page.

NameTypeReqDescription
bodyobjectDoc body (Tiptap JSON)
parent_idstringParent doc ID (for nesting)
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
slugstringURL slug
titlestringyesDoc title
workspacestring

No output schema declared.

No examples provided.

content_create_page ~1,356

Create a new content page with blocks. Phase 11+12 Lock 4 gate is opt-in via dry_run/confirm_token. 🚨 BLOCK FIELD NAMES MATTER. The default theme's snippets read SPECIFIC `data.*` keys per block-type. Unrecognized keys are stored verbatim but render as empty markup (silent-blank-section trap). For the canonical per-block-type field list, call `template_inspect_block_fields(block_type)` OR read the `blocks` param schema below. Page auditor warns at read-time via `render.unused_field_in_default_theme` (rule shipped 2026-05-22). Most-confused mappings: hero → data.{headline, subheadline, cta_primary:{label,url}, cta_secondary:{label,url}, background_image_url, style} (NOT title/subtitle/cta_text/cta_url — those are silent-no-op) cta_section → data.{headline, description, cta_primary:{label,url}} stats_bar → data.{stats: [{value, label}]} rich_text → data.{html: '<raw html>'} OR data.{content: <Tiptap JSON doc>} (data.content as a STRING is rejected — use data.html instead) The `template` param selects which Liquid theme file renders the page (templates/<template>.liquid) — backend column is a free string, default 'default'.

NameTypeReqDescription
blocksarrayPage content blocks (JSON array). Each block shape: {id: '<uuid>', type: '<block_type>', data: {...}} Block types + the `data.*` fields the DEFAULT theme reads: • hero : headline, sub…
collection_typestringPhase MA-2 PR-D: required when `template` is 'dynamic_list' or 'dynamic_item'; MUST be null/absent for any other template. Allowed values: 'posts', 'docs', 'directory_listings'. Backend `_validate_co…
confirm_tokenstringToken from a prior dry_run call. Single-use, 7d TTL.
dry_runbooleanPreview the change without mutating and receive a confirm_token. When omitted, the change is applied immediately (legacy behaviour preserved).
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
seo_descriptionstringSEO meta description
seo_titlestringSEO title override
slugstringURL slug (auto-generated from title if omitted). Flat slugs only — `/` is rejected (pattern ^[a-z0-9][a-z0-9-]*$). Nested URLs not supported for general pages; docs use parent_id chains.
templatestringPage template — selects which themes/default/templates/<template>.liquid the renderer uses. Free string (backend default 'default'). Common values bundled with the default theme: 'default' (standard…
titlestringyesPage title
workspacestring

No output schema declared.

No examples provided.

content_create_post ~495

Create a blog post (Tiptap JSON body, metadata, tags, author, categories, cover image, featured flag, SEO).

NameTypeReqDescription
author_idstringAuthor UUID
author_namestringFree-text author name (used when no author_id)
bodyobjectPost body (Tiptap JSON document)
category_idsarrayCategory UUIDs to assign — list, not single. Use [] to clear.
confirm_tokenstringToken from a prior dry_run call. Single-use, 7d TTL.
cover_image_urlstringCover image URL. Field name MUST end with `_url` to persist.
dry_runbooleanPreview the change without mutating and receive a confirm_token. When omitted, the change is applied immediately (legacy behaviour preserved).
excerptstringShort excerpt / summary
featured_image_altstringAlt text for the cover image
is_featuredbooleanMark as featured post (field name is `is_featured`, not `featured`)
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
related_post_idsarrayRelated post UUIDs (preserves order)
seo_descriptionstringSEO meta description
seo_titlestringSEO <title>; falls back to `title` if omitted
slugstringURL slug — kebab-case, no leading slash
tag_idsarrayTag entity UUIDs (new system; preferred over `tags`)
tagsarrayPost tags as strings (legacy text-tag system)
titlestringyesPost title
tldr_summarystringTL;DR (2–3 sentences) shown above body
vayapin_pinsarrayVayaPin pin ids that fit this article (e.g. ['BB:TAPAS','BB:CHAMPERS']) — auto-renders a card strip at the post bottom. Resolve valid ids first via GET /content/vayapin/cards; unknown/unlisted pins a…
workspacestring

No output schema declared.

No examples provided.

content_create_site_template ~653

Register a NEW site-template catalog row so a built site/page becomes installable from the marketplace. Phase 11+12 gated. AUTHORING-ONLY. Auth: needs super_admin OR a PAT scoped to a marketplace-AUTHORING brand (clients.is_marketplace_authoring=TRUE — e.g. the demo-publish authoring account). A normal tenant PAT gets 403. The source pages must already exist (published) on source_client_id; this call just registers the catalog row that clones them on apply. PAGE TEMPLATES: set is_single_page=true AND pass exactly ONE source_page_slug (opt-in / thank-you / VSL / sales / …). The server enforces the single⇒1-slug CHECK. Omit is_single_page (or false) + pass multiple slugs for a whole-site template. Phase 11+12 flow: call once with dry_run=true → {dry_run, preview, confirm_token}, then again with confirm_token to actually create. Then content_update_site_template can attach a preview image, and the row appears in the Studio templates gallery (is_public=true).

NameTypeReqDescription
confirm_tokenstringPhase 11+12: consume a prior preview token and create for real.
descriptionstring
dry_runbooleanPhase 11+12: preview + receive a confirm_token without mutating.
industrystring
is_featuredboolean
is_publicbooleanDefault true → visible in the gallery. Set false to stage a draft, flip true on review.
is_single_pagebooleanTRUE = single-page "page template" (requires exactly one source_page_slug).
namestringyesDisplay name in the gallery.
preview_thumbnail_urlstringHero screenshot URL (host-allowlisted). Or attach later via content_update_site_template.
preview_urlstringLive preview URL (host-allowlisted: R2 / curated stock).
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
replication_promptstring
slugstringyesUnique catalog slug, e.g. "opt-in-minimal".
source_client_idstringyesclient_id (cli_… or UUID) whose published pages are the master copies to clone.
source_component_slugsarray
source_nav_locationsarrayWhole-site only; omit for page templates.
source_page_slugsarrayyesPage slugs to clone on apply. For a page template: exactly ONE.
source_settings_keysarray
tagsarray
use_casestringopt-in | thank-you | vsl | webinar | sales | pricing | coming-soon | 404 (page templates) — or a vertical for whole-site.
workspacestringWorkspace name (default: "default").

No output schema declared.

No examples provided.

content_create_tag ~108

Create a blog tag.

NameTypeReqDescription
descriptionstringTag description
namestringyesTag name
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
slugstringURL slug
workspacestring

No output schema declared.

No examples provided.

content_delete_author ~92

Soft-delete an author profile.

NameTypeReqDescription
author_idstringyesAuthor ID
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_delete_category ~91

Delete a blog category.

NameTypeReqDescription
category_idstringyesCategory ID
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_delete_component ~166

Delete a UI component. Phase 11+12: defaults to dry_run=true — review the preview and call again with confirm_token to actually delete.

NameTypeReqDescription
component_idstringyesComponent ID
confirm_tokenstringToken from a prior dry_run call. Single-use, 7d TTL.
dry_runbooleanPreview the change without mutating. Defaults to true — call again with confirm_token to actually mutate.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_delete_doc ~186

Archive/delete a documentation page (soft delete → archived). Children are left intact (a deleted section still anchors its descendants by parent_id). Phase 11+12: defaults to dry_run=true — review the preview and call again with confirm_token to actually delete.

NameTypeReqDescription
confirm_tokenstringToken from a prior dry_run call. Single-use, 7d TTL.
doc_idstringyes
dry_runbooleanPreview the change without mutating. Defaults to true — call again with confirm_token to actually mutate.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_delete_domain ~95

Remove a custom domain from your content site.

NameTypeReqDescription
domainstringyesDomain to remove
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_delete_page ~165

Archive/delete a content page. Phase 11+12: defaults to dry_run=true — review the preview and call again with confirm_token to actually delete.

NameTypeReqDescription
confirm_tokenstringToken from a prior dry_run call. Single-use, 7d TTL.
dry_runbooleanPreview the change without mutating. Defaults to true — call again with confirm_token to actually mutate.
page_idstringyes
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_delete_post ~173

Delete a blog post. Phase 11+12 Lock 4 gate is opt-in via dry_run/confirm_token (defaults preserve immediate-delete for backward compat).

NameTypeReqDescription
confirm_tokenstringToken from a prior dry_run call. Single-use, 7d TTL.
dry_runbooleanPreview the change without mutating and receive a confirm_token. When omitted, the change is applied immediately (legacy behaviour preserved).
post_idstringyesPost ID
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_delete_tag ~91

Delete a blog tag.

NameTypeReqDescription
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
tag_idstringyesTag ID
workspacestring

No output schema declared.

No examples provided.

content_deploy_readiness ~126

Check if your site is ready to deploy. Returns a checklist of what is configured (settings, domain, templates, pages) and what is missing. Call this BEFORE content_deploy_site — deploy will reject if blocking items are not resolved.

NameTypeReqDescription
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_deploy_site ~188

Deploy your site to Cloudflare edge. Uploads templates + config, site goes live in ~2-5 seconds. Phase 11+12: prefer `content_deploy_site_preview` + `content_deploy_site_production` for the safe two-step flow. This tool is kept for back-compat; set dry_run=true to preview, or pass confirm_token to consume a prior preview.

NameTypeReqDescription
confirm_tokenstringConsume a prior preview token and deploy.
dry_runbooleanIssue a preview + confirm_token without deploying.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_deploy_site_preview ~134

Phase 11+12 Stage 2 — issue a preview URL + confirm_token without deploying. Returns `{ preview_url, confirm_token, expires_at, preview: {...}, snapshot_hash }`. Call `content_deploy_site_production` with the returned confirm_token to actually deploy.

NameTypeReqDescription
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_deploy_site_production ~146

Phase 11+12 Stage 2 — consume a confirm_token from a prior `content_deploy_site_preview` call and run the real deploy (Lock 4). 410 on expired, 409 on already-consumed, 403 on mismatch.

NameTypeReqDescription
confirm_tokenstringyesToken returned by content_deploy_site_preview
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_deploy_status ~86

Check the latest deploy status for your site.

NameTypeReqDescription
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_docs_tree ~84

Get your brand's documentation tree structure.

NameTypeReqDescription
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_duplicate_block ~281

Insert a deep copy of one block into the same page. When to use: - Duplicating a CTA section to use in a different position on the same page - Cloning a tier-priced "feature card" inside a pricing-grid block - Building variations of the same section without rebuilding from scratch How it works: 1. Reads the source page; finds the block by id 2. Deep-copies the block JSON, regenerates the block's id (fresh UUID) 3. Inserts the copy at `position` ('before', 'after' default, or an int index) 4. Returns the updated PageResponse with the new block in place The page's status is unchanged (this doesn't unpublish a published page).

NameTypeReqDescription
block_idstringyesID of the block to duplicate.
page_idstringyesUUID of the page.
position'before' or 'after' (default) the source block, or an int index.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestringWorkspace name (default: "default").

No output schema declared.

No examples provided.

content_duplicate_doc ~146

Duplicate a doc page. Copy lives as a sibling under the same parent node in the docs tree (same parent_id), with a fresh slug + full_path.

NameTypeReqDescription
doc_idstringyesUUID of the doc to duplicate.
new_slugstringOptional flat slug. Auto-generated if omitted.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestringWorkspace name (default: "default").

No output schema declared.

No examples provided.

content_duplicate_page ~359

Duplicate a page. Returns the new draft. When to use: - Client wants a starting point that's similar to an existing page (faster than rebuilding from blocks) - You're applying a template by cloning master pages into the tenant (template gallery) - Internal A/B testing — fork a published page, edit copy, publish under a new slug How it works: 1. Reads the source page (must be owned by the caller's client; cross-tenant read refused 404) 2. Picks a fresh slug (`{original}-copy`, `-copy-2`, `-copy-3`, ... lowest unused) unless `new_slug` is provided 3. INSERTs a new content_pages row with status='draft', regenerated UUIDs on every block 4. Title gets " (Copy)" appended so the dashboard list shows it distinctly 5. Returns the full PageResponse Not gated — duplicates create new rows rather than overwriting state, so no confirm_token is required. Just call once and you get the new page.

NameTypeReqDescription
new_slugstringOptional flat slug for the duplicate. Auto-generated as `{original}-copy[-N]` if omitted. Must match `^[a-z0-9][a-z0-9-]*$` (no `/`).
page_idstringyesUUID of the page to duplicate.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestringWorkspace name (default: "default").

No output schema declared.

No examples provided.

content_duplicate_post ~161

Duplicate a blog post. Returns the new draft with a fresh slug. The body (Tiptap JSON), cover image URL, author, and tags all copy over. Status is forced to 'draft' regardless of the source's state.

NameTypeReqDescription
new_slugstringOptional flat slug. Auto-generated if omitted.
post_idstringyesUUID of the post to duplicate.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestringWorkspace name (default: "default").

No output schema declared.

No examples provided.

content_export_doc ~182

Export a doc as a self-contained envelope: doc row (Tiptap body, SEO, full_path) + site settings + domains. Docs are prose-first, so there are no component bodies to inline (unlike content_export_page). format='json' (default) returns the JSON envelope; format='md' returns human-readable Markdown rendered from the body.

NameTypeReqDescription
doc_idstringyes
formatstringjson (default) — JSON envelope; md — Markdown rendered from the Tiptap body.
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_export_markdown ~196

Export a doc OR page as pure, round-trippable Markdown. target='doc' renders the Tiptap body; target='page' renders the blocks with each component block serialized back to a `:::component{...}` directive. The text round-trips through content_import_markdown. (For the richer JSON export envelope — components inlined, settings, domains, audit — use content_export_doc / content_export_page instead.)

NameTypeReqDescription
idstringyesDoc UUID (target=doc) or Page UUID (target=page).
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
targetstringyesWhich resource to export.
workspacestring

No output schema declared.

No examples provided.

content_export_page ~268

Export a page as a self-contained envelope: page row + every component referenced by page.blocks (full body inlined — html_template, js, css, props_schema, dependencies, agent_meta, kind, layouts) + site settings + domains + a PageAuditor walk (10 v1 rules: scroll-sequence empty frames, missing primary domain, page SEO holes, latent Tier 3 components, etc.). Use this instead of content_get_page when you need the FULL picture before editing — e.g. to understand what `vp-hero` actually is, or to surface broken sections before redeploying.

NameTypeReqDescription
formatstringjson (default) — flat JSON envelope. md — human-readable Markdown. archive — ZIP byte stream matching the VSCode extension's local registry layout (page.json + components/<slug>@<version>.json + sett…
page_idstringyesPage ID
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_featured_posts ~101

Get featured blog posts (public, no auth needed).

NameTypeReqDescription
limitnumberMax results (default 5)
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_get_author ~93

Get an author profile by ID.

NameTypeReqDescription
author_idstringyesAuthor ID
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_get_build_status ~112

Get the build status of a framework component (Tier 4). Returns build_status, build_error, bundle_url.

NameTypeReqDescription
component_idstringyesComponent ID
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestringWorkspace name

No output schema declared.

No examples provided.

content_get_component ~101

Get a UI component by ID (includes template, CSS, props schema).

NameTypeReqDescription
component_idstringyesComponent ID
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_get_component_by_slug ~114

Get a UI component by slug (optionally a specific version).

NameTypeReqDescription
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
slugstringyesComponent slug
versionstringSpecific version (default: latest published)
workspacestring

No output schema declared.

No examples provided.

content_get_doc ~190

Get a documentation page by ID (includes Tiptap body, SEO, status, full_path, preview_url). IMPORTANT — `doc_id` MUST be a UUID, not a slug or full_path. Passing a non-UUID returns 404 (not 500). To look up by title/path, call content_list_docs (flat) or content_docs_tree (hierarchy) and filter client-side, then pass the matching `id` here.

NameTypeReqDescription
doc_idstringyesDoc UUID (NOT a slug/full_path — see tool description for the lookup pattern).
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_get_marketplace_bg_video ~98

Fetch a single curated background video by slug. Public read.

NameTypeReqDescription
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
slugstringyes
workspacestring

No output schema declared.

No examples provided.

content_get_navigation ~96

Get navigation menu (header, footer, docs_sidebar).

NameTypeReqDescription
locationstringyesMenu location
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.

content_get_page ~332

Get a content page by ID (includes blocks, SEO, status). IMPORTANT — `page_id` MUST be a UUID, not a slug. Passing a slug returns 404 (not 500 — task `3daae81c` fixed the previous unhandled-ValueError crash). To look up by slug, call `content_list_pages` and filter the response client-side (`pages.filter(p => p.slug === 'my-slug')`), then pass the matching `page.id` here. P5: pass `audit_level` to surface a `_page_audit` block — "warnings" (default) returns errors + warnings from the PageAuditor walk so the agent learns about scroll-sequence empty frames, missing primary domains, latent Tier 3 components, etc. without a separate content_export_page call. Pass "off" to skip the auditor.

NameTypeReqDescription
audit_levelstringP5: include a `_page_audit` block on the response. 'off' skips the auditor entirely (cheapest). 'errors' / 'warnings' / 'all' filter by severity. Default 'warnings'.
page_idstringyesPage UUID (NOT a slug — see tool description for the slug → UUID lookup pattern via content_list_pages).
projectstringOptional project — a website inside the workspace (proj_xxx) — to scope this call to. Sent as the X-Project-Id header. If omitted, the spideriq.json / SPIDERIQ_PROJECT_ID binding (or the workspace de…
workspacestring

No output schema declared.

No examples provided.