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

ai.spideriq/publish

NPM · @SPIDERIQ/MCP-PUBLISH · SCANNED SEP 25

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

0 this week 67 Trust /100
Trust breakdown (7 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 → Why this is hard to score →

Supply Chain Security81
  • 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
  • 33 of 132 dependencies flagged as unhealthy. 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 20 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability61
  • AI-judged instruction clarity (good).Pass
  • 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 Management87
  • Stability observed for 26 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
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 23 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "logout" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 156 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the ai.spideriq/publish MCP server?

ai.spideriq/publish runs locally as an npm package, launched with npx -y @spideriq/mcp-publish. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @spideriq/mcp-publish

# add to Claude Code
claude mcp add ai-spideriq-publish -- npx -y @spideriq/mcp-publish
// .cursor/mcp.json
{
  "mcpServers": {
    "ai-spideriq-publish": {
      "command": "npx",
      "args": [
        "-y",
        "@spideriq/mcp-publish"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "ai-spideriq-publish": {
      "command": "npx",
      "args": [
        "-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"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "ai-spideriq-publish": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@spideriq/mcp-publish"
      ]
    }
  }
}
# add to Vellum
assistant mcp add ai-spideriq-publish -t stdio -c npx -a -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.

  • 25 Sept 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 23 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 22 Sept 26 +1
    • Stability: 0.97 → pass security
  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 15 Sept 26 +1
    • Stability: 0.97 → pass security
  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

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 25 Sept 2026 · Analysed npm/@spideriq/mcp-publish@1.25.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Vulnerabilities 2 findings
ID CVE Severity Vector Fix available
GHSA-f88m-g3jw-g9cj high yes
GHSA-rgj7-g3m4-5g8c high yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 132 packages
Packages resolved 132
Stale 31
No linked repository 2
Tree resolution Complete

Background: SBOMs and build attestations, explained →

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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
content_update_tag ~112

Update a blog tag.

NameTypeReqDescription
descriptionstring––
namestring––
projectstring–Optional 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…
slugstring––
tag_idstringyesTag ID
workspacestring––

No output schema declared.

No examples provided.

content_upload_bg_video ~335

Upload a bg-video MP4 (or poster image) to R2 for the marketplace bg-video catalog. Reads the file from the local filesystem, POSTs multipart to /content/bg-videos/upload, server uploads to R2 at `bg-videos/<slug>.<ext>` and returns the public URL. Allowed extensions: mp4 (video), webp/png/jpg/jpeg/gif (poster). 50 MB cap (server-enforced). Unlike component uploads, this tool does NOT touch the catalog row — call `content_create_bg_video` or `content_update_bg_video` afterwards with the returned URL in `video_url` or `poster_url`. Both fields are strict-allowlisted to R2 hosts as of 2026-05-12. Returns: {url, key, size_bytes, content_type}.

NameTypeReqDescription
extstring–Override extension (default: extension from local_path, lowercased). One of: mp4, webp, png, jpg, jpeg, gif.
local_pathstringyesAbsolute or cwd-relative path to the file on disk.
projectstring–Optional 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…
slugstringyesBg-video slug — used as the R2 key stem (bg-videos/<slug>.<ext>).
workspacestring–Workspace name (default: "default").

No output schema declared.

No examples provided.

content_upload_component_preview ~371

Upload a preview thumbnail (PNG/JPG/GIF/WEBP/MP4) for a component. Reads the file from the local filesystem, sniffs the content-type from the extension, POSTs multipart to /content/components/{id}/upload-preview, and the server uploads to R2 + PATCHes preview_thumbnail_url on the row in one round-trip. Allowed extensions: png, jpg, jpeg, gif, webp, mp4. 5 MB cap (server-enforced; for larger animated MP4 use SpiderMedia upload then PATCH preview_thumbnail_url manually). CRO bug-fix bundle (2026-05-08, Antigravity report Bug 2): the API endpoint existed since Marketplace Admin Slice 1 (2026-04-28) but was not exposed through any agent-facing surface — agents using @spideriq/mcp-publish had no way to reach it. Now wired up. Returns: {url, key, size_bytes, content_type, component_id, preview_thumbnail_url}.

NameTypeReqDescription
component_idstringyesComponent ID (UUID) to attach the preview to.
extstring–Override extension (default: extension from local_path, lowercased). One of: png, jpg, jpeg, gif, webp, mp4.
local_pathstringyesAbsolute or cwd-relative path to the preview file on disk.
projectstring–Optional 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–Workspace name (default: "default").

No output schema declared.

No examples provided.

content_upload_site_template_preview ~327

Upload a preview image (PNG/JPG/GIF/WebP) for a site template. Reads the file from the local filesystem, POSTs multipart to /content/site-templates/{slug}/upload-preview, server uploads to R2 at `templates/<slug>.<ext>` and returns the public URL. Allowed extensions: png, jpg, jpeg, gif, webp. 5 MB cap. Unlike component uploads, this tool does NOT patch the catalog row — call `content_update_site_template` afterwards with the returned URL in `preview_thumbnail_url` (and optionally `preview_url`). Both fields are strict-allowlisted to R2 + curated preview hosts as of 2026-05-12. Returns: {url, key, size_bytes, content_type}.

NameTypeReqDescription
extstring–Override extension (default: extension from local_path, lowercased). One of: png, jpg, jpeg, gif, webp.
local_pathstringyesAbsolute or cwd-relative path to the preview file on disk.
projectstring–Optional 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…
slugstringyesSite template slug — used as the R2 key stem (templates/<slug>.<ext>) AND the path segment.
workspacestring–Workspace name (default: "default").

No output schema declared.

No examples provided.

content_verify_domain ~99

Verify DNS for a custom domain (checks CNAME/A record).

NameTypeReqDescription
domainstringyesDomain to verify
projectstring–Optional 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_visual_check ~611

Open a URL in a real browser and report what an end-user actually sees. Returns screenshot + DOM info + console errors + failed requests + per-assertion results. USE: verify a content page or form is rendering correctly after a publish operation; catch silent-200-with-broken-content failures that monitoring doesn't see. NOT: don't use for crawling external sites; URL allowlist restricts to spideriq.ai subdomains + tenant verified custom domains. CRITICAL ASSERTION RULE (from learnings_visual_check_assert_on_shadow_hosts.md, codified 2026-05-18): when verifying a form is rendering correctly, ALWAYS assert on `dom.shadow_hosts.includes("spideriq-form")`. DO NOT assert on `body_text_preview` for cross-origin iframe contents — the iframe body is opaque to the parent page's DOM, so field labels and button text are NOT in body_text_preview even when the form is rendering correctly. Same applies to any custom-element shadow-host: assert on its tag name in dom.shadow_hosts, not on body text. WARN: screenshot upload may be degraded if R2 isn't configured; check screenshot_url for null. Engine still works in degraded mode. PITFALLS: - Asserting on body_text_preview for embedded form/booking widgets — will FAIL even on a working form, because the iframe body is cross-origin. - Forgetting to pass viewport='mobile' when checking responsive behavior — defaults to desktop 1440x900. - Hitting non-allowlisted URLs — will return URL_NOT_WHITELISTED envelope. LIMITS: - 30s default / 60s hard-cap timeout per check - 5MB page-size cap - 20 requests/min per client

NameTypeReqDescription
expected_no_textarray–Strings that MUST NOT appear (e.g. "couldn't load this booking").
expected_textarray–Strings that MUST appear in body_text_preview. NOTE: opaque to cross-origin iframe contents — assert on dom.shadow_hosts for form/booking widgets instead.
page_urlstringyesFull URL to check. Must be on the allowlist (spideriq.ai subdomains or a tenant verified custom domain).
projectstring–Optional 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…
tenant_idstring–Optional. Expands the URL allowlist to that tenant's verified primary domain.
timeout_msnumber–Total navigation + wait timeout, in ms. Default 30000, hard cap 60000.
viewportstring–Viewport preset. desktop=1440x900, mobile=375x667. Defaults to desktop.
wait_for_textstring–Optional — wait until this string appears in the DOM before snapshotting.

No output schema declared.

No examples provided.

create_project ~99

Create a new project (website) in the current workspace. Returns the new project including its `proj_` id. May return 403 with an upgrade CTA if the workspace is already at its plan's project cap (max_deployed_sites).

NameTypeReqDescription
namestringyesHuman-facing project name.
slugstring–Optional URL-safe slug (auto-derived from name when omitted).
workspacestring–Credentials slot (default "default").

No output schema declared.

No examples provided.

delete_file ~104

Delete a file from your SpiderMedia bucket by storage key.

NameTypeReqDescription
keystringyesFile storage key (from list_files response)
projectstring–Optional 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–Workspace name

No output schema declared.

No examples provided.

directory_bulk_upsert_listings ~228

Import many listings into a category in one transaction. Max 5000 per call. Primary path for IDAP dumps + SpiderMaps job outputs. Each listing accepts the same fields as directory_upsert_listing. Upsert keyed on (category, slug); missing slugs auto-generate from name. Returns {upserted, failed, affected_cities: ["city-slug-1", ...], failures}. Refreshes category counts + city_stats materialized view on success.

NameTypeReqDescription
category_slugstringyes–
listingsarrayyesArray of {name, slug?, city, state?, description?, phone?, email?, website?, rating?, review_count?, address?, latitude?, longitude?, data?, status?, source_job_id?}
projectstring–Optional 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.

directory_create_category ~238

Create a directory category. SEO templates accept {category}, {city}, {listing} placeholders. Example: {name: "Plumbers", seo_title_template: "Best {category} in {city} | Acme Directory"}.

NameTypeReqDescription
data_sourceobject–Config for future SpiderMaps sync (job_type, query_filter, ...)
descriptionstring––
iconstring––
namestringyes–
projectstring–Optional 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_description_templatestring–Supports {category}, {city}, {listing}
seo_title_templatestring–Supports {category}, {city}, {listing}
slugstring–URL slug (auto-generated from name if omitted)
sort_ordernumber––
templateobject–Per-category template config JSONB
workspacestring––

No output schema declared.

No examples provided.

directory_delete_category ~94

Delete a directory category and all its listings (cascade).

NameTypeReqDescription
projectstring–Optional 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.

directory_delete_listing ~108

Delete a listing by (category_slug, listing_slug). Refreshes city_stats.

NameTypeReqDescription
category_slugstringyes–
listing_slugstringyes–
projectstring–Optional 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.

directory_get_category ~97

Get a single category plus every city that has published listings in it.

NameTypeReqDescription
projectstring–Optional 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.

directory_import_from_idap ~338

Populate a directory category from the tenant's IDAP data (norm_cli_*.businesses). norm_cli_* is the canonical store for every business SpiderIQ has seen for this tenant (SpiderMaps + SpiderSite + SpiderCompanyData + SpiderPeople merged). This reads directly — no scheduler, no sync pipeline, no external call. Agent re-runs this tool whenever they want to refresh the directory. Filters (all optional): category_filter matches the categories[] array, country_code exact (uppercase), city is ILIKE substring, rating_min is inclusive. limit caps at 5000 to align with bulk_upsert. Returns {upserted, failed, source_rows, affected_cities, source_schema, filter, failures?, hint?}. If the tenant has no norm_cli_* schema yet (never ran SpiderMaps), hint explains the workaround.

NameTypeReqDescription
category_filterstring–Match businesses.categories array member (e.g. "Plumber")
category_slugstringyes–
citystring–ILIKE substring match
country_codestring–ISO-2 uppercase (e.g. "US")
limitnumber–Max rows to import (hard cap 5000)
projectstring–Optional 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…
rating_minnumber–Inclusive lower bound on rating
workspacestring––

No output schema declared.

No examples provided.

directory_list_categories ~147

List every directory category for the current tenant (includes empty ones). Returns {categories: [{id, name, slug, description, listing_count, city_count, seo_title_template, seo_description_template, ...}], total, page, page_size}.

NameTypeReqDescription
pagenumber––
page_sizenumber––
projectstring–Optional 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–Workspace name (default: "default")

No output schema declared.

No examples provided.

directory_list_listings ~154

List directory listings. Filter by category, city, status. Use this to verify what an IDAP dump wrote, or to audit a category before publishing changes.

NameTypeReqDescription
category_slugstring––
citystring––
pagenumber––
page_sizenumber––
projectstring–Optional 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…
statusstring–draft | published | archived (default published)
workspacestring––

No output schema declared.

No examples provided.

directory_update_category ~158

Update category fields. Pass only the fields you want to change.

NameTypeReqDescription
data_sourceobject––
descriptionstring––
iconstring––
namestring––
projectstring–Optional 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_description_templatestring––
seo_title_templatestring––
slugstringyes–
sort_ordernumber––
templateobject––
workspacestring––

No output schema declared.

No examples provided.

directory_upsert_listing ~288

Create or update a single listing in a category. Upsert keyed on (category, slug). For bulk work (IDAP dumps, SpiderMaps job output), use directory_bulk_upsert_listings instead — it's one call vs N.

NameTypeReqDescription
addressstring––
category_slugstringyes–
citystring––
countrystring––
dataobject–Free-form JSONB — hours, amenities, images, whatever
descriptionstring––
emailstring––
latitudenumber––
longitudenumber––
namestringyes–
phonestring––
projectstring–Optional 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…
ratingnumber––
review_countnumber––
slugstring–Auto-generated from name if omitted
source_job_idstring–SpiderIQ job UUID that produced this listing
statestring––
statusstring–draft | published | archived (default published)
websitestring––
workspacestring––

No output schema declared.

No examples provided.

get_api_info ~33

Get information about the SpiderIQ API and your connection.

NameTypeReqDescription
workspacestring–Workspace name (default: default)

No output schema declared.

No examples provided.

get_auth_status ~33

Check if you are authenticated and get current user info.

NameTypeReqDescription
workspacestring–Workspace name (default: default)

No output schema declared.

No examples provided.

get_media_stats ~92

Get media storage statistics (file counts, storage used, by type).

NameTypeReqDescription
projectstring–Optional 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–Workspace name

No output schema declared.

No examples provided.

get_queue_stats ~48

Get statistics about job queues (pending jobs, consumers, etc.).

NameTypeReqDescription
formatstring–Response format (default: json)
workspacestring–Workspace name (default: default)

No output schema declared.

No examples provided.

get_recipe ~90

Fetch the full markdown content of a SpiderPublish recipe (or rule) from @spideriq/skills. Pass the logical name from list_recipes. Returns the recipe text verbatim — paste-able into the working context, or use as a reference while implementing.

NameTypeReqDescription
namestringyesLogical name (e.g. "clone-a-site", "build-a-homepage", "claude-md")

No output schema declared.

No examples provided.

get_video_status ~101

Get processing status for a video (encoding, ready, failed).

NameTypeReqDescription
projectstring–Optional 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…
video_idstringyesVideo ID
workspacestring–Workspace name

No output schema declared.

No examples provided.

health_check ~51

Check if the SpiderIQ API is healthy and responsive.

NameTypeReqDescription
api_urlstring–API URL (default: https://spideriq.ai)
workspacestring–Workspace name (default: default)

No output schema declared.

No examples provided.

import_from_url ~171

Import file(s) from URL into your SpiderMedia bucket. Supports single URL or batch. Auto-proxies Instagram/Facebook/Twitter CDN URLs.

NameTypeReqDescription
folderstring–Target folder (e.g., "ads", "logos")
projectstring–Optional 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…
urlstring–Single URL to import
urlsarray–Batch URLs to import [{url, filename?}]
use_proxyboolean–Force proxy for CDN URLs (default: auto-detect)
workspacestring–Workspace name

No output schema declared.

No examples provided.

list_data_source_items ~421

Fetch live items from a registered content data source — the same door a kind='dynamic' component binds to (Live Data). Sibling of list_data_sources. Use this to PREVIEW what a dynamic component will render, or to discover a source's row shape before wiring a component's `sources`. It returns real, published, tenant-scoped records. v1 sources: posts, authors, categories, tags, changelog. (idap.* collections → 501 Phase 2; a singleton like idap.lead → 422 — those reach /lp/ templates as `lead`.) Filtering: pass `filter` keys matching the source's filterable fields (discover via list_data_sources), e.g. {"tag":"news"} on posts. `sort` is a single field with optional ":asc"/":desc" (or "-field"); `limit` (1-500) + `offset` paginate; `fields` trims the returned keys. Returns { items: [...], total, source_id }. Public read (X-Content-Domain tenant scope).

NameTypeReqDescription
fieldsarray–Project to these field ids only (default: all).
filterobject–Filter by the source's filterable fields, e.g. {"tag":"news","category":"..."}.
limitinteger–Max rows (default 50).
offsetinteger–Pagination offset (default 0).
projectstring–Optional 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…
sortstring–Sort field with optional ':asc'/':desc' (or '-field'), e.g. '-published_at'.
source_idstringyesRegistered source id (list_data_sources). v1: posts, authors, categories, tags, changelog.
workspacestring––

No output schema declared.

No examples provided.

list_data_sources ~319

List the 9 registered content data sources that drive kind='dynamic' components (Phase D). Use this to discover the available source_id values when an agent is configuring a Dynamic block (List, Item Details, etc.). The registry includes: - 4 internal CMS collections: posts, authors, categories, tags - 4 IDAP collections: idap.countries → idap.cities → {idap.streets, idap.businesses} (hierarchical — pass --parent to walk the tree) - 1 singleton: idap.lead (per-request visitor lead context; only Item Details accepts it) Each source carries: - id (use as the source_id in DataBinding / SourceBinding) - label + description (human-readable) - parent_id (NULL for top-level; set for hierarchical children) - is_collection (false for singletons like idap.lead — only item_details binds these) - schema_json.fields[] (filterable + sortable per field) - schema_json.filters[] (named filter helpers) Public read.

NameTypeReqDescription
parent_idstring–Filter to children of this source (e.g. "idap.countries" returns idap.cities).
projectstring–Optional 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.

list_files ~126

List files in your SpiderMedia bucket.

NameTypeReqDescription
limitnumber–Max results (default: 20)
offsetnumber–Offset for pagination
projectstring–Optional 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…
typestring–Filter by file type (image, video, document)
workspacestring–Workspace name

No output schema declared.

No examples provided.

list_projects ~96

List the projects (websites) in the current workspace. Each project has an `id` (proj_xxx) that you pass as the optional `project` argument of any content/template tool — or bind via `spideriq use <workspace> --project <proj_>` — to scope content operations to that website.

NameTypeReqDescription
workspacestring–Credentials slot (default "default") in ~/.spideriq/credentials.json.

No output schema declared.

No examples provided.

list_recipes ~97

List all SpiderPublish workflow recipes shipped in @spideriq/skills. Returns name, description, and kind (rule | recipe | config) for each manifest entry. Call get_recipe(name) to read full content. Use this when the user asks "how do I X?" — the recipe index points you at a known-good workflow markdown.

NameTypeReqDescription
kindstring–Filter to a single kind (default: all kinds)

No output schema declared.

No examples provided.

list_videos ~110

List videos in your SpiderMedia bucket.

NameTypeReqDescription
limitnumber–Max results (default: 20)
offsetnumber–Offset for pagination
projectstring–Optional 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–Workspace name

No output schema declared.

No examples provided.

list_workspaces ~19

List all configured workspaces and their authentication status.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

logout ~25

Remove stored authentication credentials.

NameTypeReqDescription
workspacestring–Workspace name (default: default)

No output schema declared.

No examples provided.

marketplace_form_test_submit ~442

Test-fire a submission against a dynamic form block. NOT the production submit path — real form submissions come from a visitor's browser via POST /content/forms/{form_id}/submit (no auth). This MCP tool exists so agents can validate a form's wiring during authoring + smoke-test before publishing. When to use: - After authoring a new form block, fire a synthetic submission to confirm validation + persistence work. - After changing fields / submit_url / fallback_idap_lead, verify the new behaviour without leaving the editor. - Debugging cross-tenant isolation: pick a form_id from one tenant, attempt to write under another — server returns 404, never silently misroutes. Cross-tenant isolation: form_id is the composite "<page_uuid>:<block_uuid>". The server resolves client_id ONLY from the page row; no tenant signal is accepted in the URL or body. A form_id from a different tenant simply 404s. Validation: - Required fields must be present + non-empty. - Field type drives coercion (number → float, checkbox → bool, select/radio → must match options). - Unknown field names rejected with 400. Returns the full FormSubmitResponse: ok, submission_id (when persisted), success_action ('redirect' | 'message' | 'modal'), success_redirect_url, success_message, webhook_status (when submit_url is configured).

NameTypeReqDescription
form_idstringyesComposite form id "<page_uuid>:<block_uuid>". Both halves UUIDs.
projectstring–Optional 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…
request_idstring–Optional retry-idempotency token. Combined with the resolved client_id, dedups duplicate test-fires within a 24h window.
submissionobjectyesField name → value map. Validated against the form's props.fields list at the server. Extra fields rejected.
workspacestring––

No output schema declared.

No examples provided.

marketplace_search ~631

Cross-table search across bg-videos / components / site-templates by AI-discovery axes (Phase D). Use this BEFORE content_list_marketplace_components / content_list_marketplace_bg_videos when the user asks for an asset by intent ("a calm cinematic background video for a luxury hotel") rather than by category. The 4 universal axes (mood / palette / brand_fit / scene_type) plus per-asset agent_meta narrow the catalog by behaviour, not by component name. Universal axes (controlled vocabulary, see marketplace_taxonomy.py): - mood: calm, energetic, bold, confident, dreamy, futuristic, urban, minimal, warm, sensory, editorial, professional, friendly, clear, technical, credible - palette: free-form (e.g. monochrome, deep-blue, cream, neutral-warm) - brand_fit: saas, agency, ecommerce, fintech, real-estate, hospitality, restaurant, wellness, healthcare, blog, publication, personal, tech, design, consulting, outdoor, lifestyle - scene_type: hero-bold, feature-grid, pricing-tiers, social-proof, faq-accordion, conversion-cta, navigation-header, navigation-footer, data-collection-form, editorial-content, team-grid (components); city-aerial, nature-landscape, abstract-motion, food-prep, people-lifestyle, tech-hardware (bg-videos); marketing-site, docs-site, directory-site, portfolio-site (site-templates) Per-asset agent_meta (use marketplace_get_help for the full vocabulary): - bg-video: pace, time_of_day, weather, has_people, aspect_ratio, has_audio, music_tempo_bpm, transcript - component: interaction_pattern, trigger_kind, placement, motion_safety, conversion_strategy - site-template: page_count, has_blog, has_pricing, has_directory, has_booking, conversion_strategy, style_aesthetic, component_set Restrict the search to specific asset types via asset_types — e.g. asset_types=["bg_video"] when you need just a hero background, ["component","site_template"] when you're planning a full page. Public read, no auth required.

NameTypeReqDescription
agent_metaobject–Key/value filters against agent_meta JSONB (e.g. {"pace":"slow","time_of_day":"night"}).
asset_typesarray–Restrict to specific marketplace tables. Omit for all 3.
brand_fitarray–Industry-vertical fit tags.
limitinteger–Default 20.
moodarray–Mood values (any-of match against the column).
palettearray–Palette tokens.
projectstring–Optional 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…
scene_typestring–Single scene_type filter.
workspacestring––

No output schema declared.

No examples provided.

marketplace_suggest_agent_meta ~466

Suggest mood / palette / brand_fit_tags / scene_type / agent_meta for one marketplace asset using the SpiderGate V2 inference engine. Two-step apply pattern (recommended): 1. Call `marketplace_suggest_agent_meta` to get a SuggestEnvelope with proposed values + per-key confidence (high / medium / low → action: auto_apply | review | drop). 2. Review the envelope. For values you trust, call the matching apply tool: - bg_video → set_bg_video_agent_meta - component → set_component_agent_meta - site_template → set_site_template_agent_meta The apply tools are gated (dry_run=true default + confirm_token). They mark the row `agent_meta_source='llm_inferred'` so future bulk re-runs can distinguish machine suggestions from human curation. Anti-hallucination: the engine validates proposed values against the locked Pydantic enums BEFORE returning. Off-vocab values are dropped and listed in `dropped_keys` so you can audit suggestions that didn't make the cut. Universal `palette` is intentionally open-vocabulary. Confidence-gated apply (locked thresholds 0.75 / 0.55): - action="auto_apply" → safe to apply directly (≥0.75 + vocab match) - action="review" → human eyeball recommended (0.55–0.75) - action="drop" → engine already dropped these — don't apply Cost: <$0.01 per call (Opus 4.7 via the spideriq/vision or spideriq/lead-analysis task aliases). Vision is used for bg-videos when poster_url is present; text-only otherwise. Super_admin only.

NameTypeReqDescription
asset_typestringyesWhich marketplace table to suggest for.
projectstring–Optional 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…
slugstringyesAsset slug (e.g. "alpine-wildflowers", "hero-bold-default", "agency-minimal").
workspacestring––

No output schema declared.

No examples provided.

page_insert_section ~529

Insert a marketplace section into an existing page. Phase 11+12 gated. When to use: - Adding a hero / pricing / FAQ block to a page the customer already has - Programmatic page assembly: list sections → preview → insert → publish position semantics: - "end" (default) — append at the end of the blocks array - "start" — prepend - "before" / "after" — relative to anchor_block_id (REQUIRED when used) - integer — explicit 0-based index, clamped to [0, len(blocks)] Phase 11+12 flow: 1. Call with dry_run=true → returns {dry_run, preview, confirm_token, expires_at} 2. Inspect the preview (insertion_index, new_block_id, blocks_count_before/after) 3. Call again with confirm_token=<token> → mutates the page and returns the new block id The inserted block is type='component' with the requested component_slug + props. The page itself is NOT republished — call content_publish_page after if needed, or content_deploy_site to push everything live.

NameTypeReqDescription
anchor_block_idstring–Required when position is "before" or "after".
audit_levelstring–P5: include an `_audit` block on the success response (or `_rules` block on dry_run). 'all' (default for mutations) returns every finding so the agent sees scroll-sequence empty frames, missing requi…
component_slugstringyesMarketplace component slug (e.g. "hero-headline", "logo-cloud").
component_versionstring–Optional pinned version. Omit for latest published.
confirm_tokenstring–Phase 11+12: consume a prior preview token.
dry_runboolean–Phase 11+12: preview the insertion without mutating.
page_idstringyesUUID of the target page.
position––Where to place the new block. Default: "end".
projectstring–Optional 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…
propsobject–Component props matching the component's props_schema. Falls through default_props for omitted keys.
workspacestring–Workspace name (default: "default").

No output schema declared.

No examples provided.

request_access ~120

Request access to SpiderIQ API. This sends an approval email to the admin. After calling this, use check_access_status to poll for approval. Once approved, the token is automatically saved for subsequent API calls.

NameTypeReqDescription
api_urlstring–API URL (default: https://spideriq.ai)
emailstringyesAdmin email address (the person who will approve access)
projectstring–Project name (shown in approval email)
scopesarray–Requested permission scopes (default: jobs:submit, jobs:read)

No output schema declared.

No examples provided.

set_bg_video_agent_meta ~403

Patch agent-discovery axes + agent_meta on a bg-video catalog row (super_admin). Phase 11+12 gated. Same shape as set_component_agent_meta, but BgVideoAgentMeta has different keys: - pace: slow, medium, fast (slow=meditative, medium=narrative, fast=energetic) - time_of_day: dawn, day, dusk, night - weather: clear, cloudy, rain, snow, fog, stormy (NULL = indoor / abstract) - has_people: bool (TRUE if humans visible) - aspect_ratio: 16:9, 9:16, 1:1, 4:3, 21:9 - has_audio: bool - music_tempo_bpm: 20–300 (only meaningful when has_audio=true) - transcript: ≤ 2000 chars (accessibility + agent context) The bg-video catalog is global — every tenant sees the same rows — so this is super_admin only on the server. replication_prompt also accepted for free-form curator notes. Defaults dry_run=true.

NameTypeReqDescription
agent_metaobject–BgVideoAgentMeta keys (see description).
brand_fit_tagsarray––
confirm_tokenstring––
dry_runboolean–Default true.
moodarray––
palettearray––
projectstring–Optional 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–Optional free-form curator prompt (≤ 4000 chars).
scene_typestring––
slugstringyesBg-video slug (e.g. "alpine-wildflowers").
workspacestring––

No output schema declared.

No examples provided.

set_component_agent_meta ~386

Patch the agent-discovery axes on a component: universal axes (mood / palette / brand_fit_tags / scene_type) + per-component agent_meta JSONB. Phase 11+12 gated. Use this to make a component findable by intent through marketplace_search. Strict enum validation at the API boundary — unknown values 422 with the accepted vocabulary listed. agent_meta keys (ComponentAgentMeta, extra="forbid"): - interaction_pattern: static, click, hover, scroll, timer, form, drag - trigger_kind: page-load, scroll-into-view, click, hover, exit-intent, timer-fixed-date, timer-elapsed, form-submit, geo-match, none - placement: above-fold, below-fold, side-rail, modal, toast, footer, header, any - motion_safety: bool (TRUE if component honours prefers-reduced-motion) - accessibility_notes: string ≤ 1000 chars - conversion_strategy: primary-cta, secondary-cta, trust, scarcity, social-proof, education, navigation, none Pass only the fields you want to change — exclude_unset semantics. Defaults dry_run=true.

NameTypeReqDescription
agent_metaobject–ComponentAgentMeta keys (see description for vocabulary).
brand_fit_tagsarray––
component_idstringyes–
confirm_tokenstring––
dry_runboolean–Default true.
moodarray––
palettearray––
projectstring–Optional 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…
scene_typestring––
workspacestring––

No output schema declared.

No examples provided.

set_component_kind ~313

Set the 4-class behavioural taxonomy on a component: kind ∈ {static, interactive, dynamic, extension}. Phase 11+12 gated. When to use: - Curating a freshly-created custom component into the right marketplace tab - Reclassifying a legacy 'static' component as 'interactive' once you add JS - Promoting a Dynamic component (kind='dynamic' requires block_type + sources to already be set on the row, or this PATCH 400s on the DB CHECK constraint) The DB CHECK constraints (migration 174) enforce kind invariants — setting kind='dynamic' on a row missing block_type returns 400 with a specific constraint message. Phase A schemas (marketplace_taxonomy.py) define the strict enum. dry_run=true (default when neither flag set) returns a preview envelope with a confirm_token; pass confirm_token=<token> to commit.

NameTypeReqDescription
component_idstringyesUUID of the component.
confirm_tokenstring–Consume a prior preview token to commit.
dry_runboolean–Default true — preview without mutating.
kindstringyes4-class behavioural taxonomy (Phase A).
projectstring–Optional 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.

set_site_template_agent_meta ~319

Patch agent-discovery axes + agent_meta on a site_template catalog row (super_admin). Phase 11+12 gated. SiteTemplateAgentMeta keys: - page_count: 1–200 (number of pages the template ships with) - has_blog: bool - has_pricing: bool - has_directory: bool (programmatic SEO target) - has_booking: bool (SpiderBook integration) - conversion_strategy: same vocabulary as ComponentAgentMeta - style_aesthetic: minimal, bold, editorial, playful, premium, technical, brutalist, soft - component_set: array of component slugs the template ships with (≤ 100) The site-template catalog is global — super_admin only. Defaults dry_run=true.

NameTypeReqDescription
agent_metaobject–SiteTemplateAgentMeta keys (see description).
brand_fit_tagsarray––
confirm_tokenstring––
dry_runboolean–Default true.
moodarray––
palettearray––
projectstring–Optional 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––
scene_typestring––
slugstringyesSite-template slug (e.g. "saas-minimal").
workspacestring––

No output schema declared.

No examples provided.

template_apply_theme ~166

Apply a pre-built theme to your site. Copies all theme templates to your template set. Phase 11+12: defaults to dry_run=true. Review the preview, then call again with confirm_token to actually apply.

NameTypeReqDescription
confirm_tokenstring–Token from a prior dry_run call.
dry_runboolean–Preview the change without mutating. Default true.
projectstring–Optional 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…
themestring–Theme name (default: "default")
workspacestring––

No output schema declared.

No examples provided.

template_delete ~183

Delete a custom template (reverts to the theme default for that path). Phase 11+12 Lock 4 gate is opt-in via dry_run/confirm_token (defaults preserve immediate-delete for backward compat).

NameTypeReqDescription
confirm_tokenstring–Token from a prior dry_run call. Single-use, 7d TTL.
dry_runboolean–Preview the change without mutating and receive a confirm_token. When omitted, the change is applied immediately (legacy behaviour preserved).
pathstringyesTemplate path to delete
projectstring–Optional 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.

template_get ~199

Get a Liquid template source code by path (e.g. "templates/blog.liquid"). Returns YOUR tenant's KV override if one exists, otherwise the bundled default-theme file. A 404 means neither exists for this tenant — it does NOT mean the feature is missing: the page can still render from the default theme even when this returns 404 (e.g. templates/changelog.liquid). Likewise, a large inline-CSS template here is your own prior customization, not what SpiderPublish ships.

NameTypeReqDescription
pathstringyesTemplate path (e.g. layout/theme.liquid, snippets/hero-block.liquid)
projectstring–Optional 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.

template_get_config ~93

Get template config: current theme, route overrides, settings, and connected data sources.

NameTypeReqDescription
projectstring–Optional 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.

template_get_help ~391

SpiderPublishREADME — agent orchestration entry-point. Returns four sections in one response: • reference — canonical schema (content types, block types, Liquid filters/tags, template structure, data sources). The exact YAML/JSON/MD payload the legacy tool returned. Includes per-block-type field maps + agent-natural alias hints (2026-05-22 usability F-19) so an agent that writes `hero.title` instead of `hero.headline` catches the mistake before publishing. • site_context — current spideriq.json binding (client_id, project_name, brand_name) walked up from cwd; null when unbound. • recipes — workflow markdowns from @spideriq/skills (build-a- homepage, add-a-component, swap-a-hero-block, clone-a-site, add-a-domain). Read the matching one BEFORE improvising. • routing — "if user asks X, call tool Y" rules. Adopt before improvising. Call this FIRST in any SpiderPublish-related conversation. The reference still comes from /api/v1/content/help so it tracks the deployed API. For the live theme's per-block-type fields, call `template_inspect_block_fields(block_type)` — it returns the canonical fields the ACTIVE theme's snippet reads + the agent-natural alias map.

NameTypeReqDescription
formatstring–Response format (default: yaml). Wraps reference + site_context + recipes + routing into one document.
projectstring–Optional 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.

template_inspect_block_fields ~312

Get the canonical `data.*` fields the default theme reads for a block type, plus the agent-natural alias map. Use this BEFORE inserting a non-component block (hero, cta_section, stats_bar, comparison_table, etc.) to avoid the silent-blank-section trap from the 2026-05-22 usability report (F-9). Returns: • fields — what the snippet actually reads • _aliases — common mistakes → canonical field name (e.g. {"title": "headline", "cta_text": "cta_primary (object: {label, url})"}) • _anti_patterns — shapes that 422 (e.g. rich_text + data.content as a string is REJECTED — pass data.html instead) • _notes — free-form caveats Omit `block_type` to list all known block types. Public read, no auth.

NameTypeReqDescription
block_typestring–Specific block type to inspect (e.g. "hero", "cta_section"). Omit to list all.
formatstring–Response format (default: json).
projectstring–Optional 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.

template_list ~84

List all custom Liquid templates for your site.

NameTypeReqDescription
projectstring–Optional 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.

Common questions

What is the ai.spideriq/publish MCP server?

ai.spideriq/publish is an MCP server listed in the public MCP registry as ai.spideriq/publish. SpiderIQ Publish: content platform MCP (pages, posts, templates, components, domains, media). This page covers its npm package (@spideriq/mcp-publish).

Is the ai.spideriq/publish MCP server safe to use?

ai.spideriq/publish scores 67 out of 100 on VerifyMCP. We recorded 2 known advisories against it as of 25 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the ai.spideriq/publish MCP server expose?

ai.spideriq/publish exposes 156 tools: request_access, check_access_status, get_auth_status, logout, list_workspaces, and 151 more. Their descriptions and schemas cost roughly 36,639 tokens of context every time the server is loaded.

Is the ai.spideriq/publish MCP server still maintained?

ai.spideriq/publish is still listed as active in the MCP registry. We last reached this channel on 25 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the ai.spideriq/publish MCP server under?

ai.spideriq/publish declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.