io.github.seldonframe/seldonframe-mcp
NPM · @SELDONFRAME/MCP · SCANNED AUG 3
Open-source GoHighLevel alternative for agencies. White-label CRM, booking, intake, chatbot via MCP.
Available components
Deprecated
This server is marked deprecated in the MCP registry.
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 Security86
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (AGPL-3.0-or-later).Pass
- Actively maintained (last published 26 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability29
- AI-judged instruction clarity (poor).Fail
- Context-footprint check failed: tool/resource definitions use about 29711 tokens (~196/item across 151 items; 151 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 Management23
- Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 98% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
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 · @seldonframe/mcp
claude mcp add seldonframe-seldonframe-mcp -- npx -y @seldonframe/mcp
codex mcp add seldonframe-seldonframe-mcp -- npx -y @seldonframe/mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"seldonframe-seldonframe-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@seldonframe/mcp"
],
"enabled": true
}
}
} openclaw mcp add seldonframe-seldonframe-mcp --command npx --arg -y --arg @seldonframe/mcp
mcp_servers:
seldonframe-seldonframe-mcp:
command: "npx"
args: ["-y", "@seldonframe/mcp"] {
"mcpServers": {
"seldonframe-seldonframe-mcp": {
"command": "npx",
"args": [
"-y",
"@seldonframe/mcp"
]
}
}
} 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 +41
- Provenance: unverified → fail ▼ security
- Known CVEs: unverified → partial ▲ security
- Install scripts: unverified → pass ▲ security
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Maintenance: unverified → pass ▲ functional
- Schema quality: unverified → poor ▲ functional
- Stability: unverified → 0.20 ▲ functional
- Dependency health: unverified → partial ▲ functional
- License: unverified → pass ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Licence: AGPL-3.0-or-later functional
- 1 Aug 26 +13
- Tool coverage: unverified → 100 ▲ functional
- 31 Jul 26 −20
- 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 +1
- Malware scan: pass → unverified ▼ security
- Tool coverage: unverified → 100 ▲ functional
- 28 Jul 26 −19
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 27 Jul 26 43
First indexed and scored.
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/@seldonframe/[email protected]
Provenance none
Ecosystem: npm · Outcome: none
Dependencies 94 packages
94 packages in the resolved dependency tree · 94 deprecated · 29 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
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.
get_booking ~112
Fetch one scheduled booking by id. Returns the full detail (contact, times, status, notes, meeting URL, cancellation timestamp, metadata). Appointment-type templates are NOT returned here — use list_appointment_types for those. 404s if the id is unknown OR belongs to a different workspace. Example: get_booking({ booking_id: 'bkg_...' }).
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | string | yes | Required. UUID of the booking. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
get_booking_structure ~101
Read the workspace's booking event-type + fields (indexed list with type + label + required + 1-line preview). Standard fields (fullName at index 0, email at index 1) are flagged is_standard:true — they're server-owned and cannot be moved/deleted/renamed. Use BEFORE add_booking_field / move_booking_field / delete_booking_field / update_booking_field to find the right index.
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | Workspace id. |
No output schema declared.
No examples provided.
get_contact ~56
Fetch one contact by id. Example: get_contact({ contact_id: 'abc-...' }).
| Name | Type | Req | Description |
|---|---|---|---|
| contact_id | string | yes | UUID of the contact. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
get_deal ~56
Fetch one deal by id. Example: get_deal({ deal_id: '...' }).
| Name | Type | Req | Description |
|---|---|---|---|
| deal_id | string | yes | UUID of the deal. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
get_email ~63
Fetch a single email with its full provider-event history (sent / delivered / opened / clicked / bounced).
| Name | Type | Req | Description |
|---|---|---|---|
| email_id | string | yes | Email ID returned from send_email or list_emails. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
get_form ~79
Fetch one form by id or slug. Example: get_form({ form: 'contact' }) or get_form({ form: 'uuid…' }).
| Name | Type | Req | Description |
|---|---|---|---|
| form | string | yes | Form id (uuid) or slug (e.g., 'contact', 'intake'). |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
get_intake_structure ~83
Read the workspace's intake form: title, description, and the indexed list of fields with type + label + required + 1-line preview. Use this BEFORE add_intake_field / move_intake_field / delete_intake_field / update_intake_field to find the right index. Cheap one-DB-read.
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | Workspace id. |
No output schema declared.
No examples provided.
get_invoice ~57
Fetch an invoice + its line items + hosted invoice URL (for payment).
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | Invoice ID returned from create_invoice or list_invoices. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
get_landing_page ~56
Fetch a single landing page with its full Puck payload + metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| page_id | string | yes | Landing page ID from list_landing_pages. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
get_landing_structure ~207
Read the workspace's landing-page section list with INDEX as the addressing primitive. Returns each section's index (0..N-1, top-to-bottom on the rendered page), type ('hero', 'services-grid', 'about', 'faq', 'mid-cta', 'trust-strip', 'footer', etc.), and a 1-line preview ('Vancouver's Trusted HVAC Family — Same-Day Service' for hero, '3 services (grid-3)' vs 'stats — 4 numbers' for services-grid duplicates). Use this BEFORE move_section / delete_section so you know which index to target. The preview disambiguates duplicate types (e.g. when a workspace has TWO services-grid sections — one with services, one with stats). v1.11+ replaces the v1.10 workflow where the agent had to fetch landing_pages.blueprintJson manually and parse it client-side. Cheap server-side (one DB read).
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | Workspace id. |
No output schema declared.
No examples provided.
get_landing_template ~68
Fetch a single landing-page template including its Puck payload. Pair with create_landing_page to seed a new page from the template.
| Name | Type | Req | Description |
|---|---|---|---|
| template_id | string | yes | Template ID from list_landing_templates. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
get_payment ~51
Fetch a single payment record with status + refund/dispute state.
| Name | Type | Req | Description |
|---|---|---|---|
| payment_id | string | yes | Payment ID from list_payments. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
get_portal_structure ~80
Read the workspace's portal template — indexed list of composite-tree sections with previews. Use BEFORE add_portal_section / update_portal_section / move_portal_section / delete_portal_section to find the right index. Empty templates are valid (the portal just shows built-in tabs without a Custom tab).
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | Workspace id. |
No output schema declared.
No examples provided.
get_sms ~64
Fetch a single SMS with its full provider-event history (queued / sent / delivered / failed / undelivered).
| Name | Type | Req | Description |
|---|---|---|---|
| sms_id | string | yes | SMS ID returned from send_sms or list_sms. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
get_workspace_snapshot ~113
Return a structured read-only snapshot of workspace state: workspace metadata, Soul (if submitted), theme, enabled blocks with configs, entity counts (contacts/bookings/intake forms/submissions), recent Seldon It events, and public URLs. YOU reason over this snapshot to decide what to do next, then call the appropriate typed tools (update_landing_content, configure_booking, customize_intake_form, update_theme, install_*). Zero server-side LLM cost.
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional workspace override. |
No output schema declared.
No examples provided.
get_workspace_state ~294
USE FIRST for any workspace task — replaces 4-6 separate discovery calls with one. Returns: workspace identity (name, slug, industry, timezone, dashboard URL); integrations status (anthropic / openai / twilio / resend / kit / mailchimp configured? — booleans only, no keys leaked); agents WITH inline health stats (status, version, eval pass rate, validator pass rate 24h, conversations 24h, eval gate met?, last eval run); high-level counts (contacts, bookings, deals, agents); and a next_steps array tailored to the workspace's current state (e.g. 'configure Anthropic key', 'no agents yet — call build_website_chatbot', 'agents need eval run before live'). USE WHEN USER SAYS: 'what's in this workspace', 'how is my chatbot doing', 'build me a chatbot for [biz]' (call FIRST so you know if an agent already exists + if LLM is configured), 'is my agent live yet', 'workspace status'. AVOIDS asking the user obvious questions like 'how should I configure the Anthropic key?' — the response.integrations.anthropic.configured tells you. Avoids creating a duplicate agent — response.agents tells you what already exists. Avoids a separate get_agent_metrics call — stats come inline.
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | Workspace id (bearer workspace). |
No output schema declared.
No examples provided.
import_claude_design_handoff ~284
Validate a Claude Design handoff bundle (the artifact Claude Design produces when designs are ready for code), apply its embedded design tokens to the workspace theme, and return a structured manifest of the components with per-component next-step instructions for wiring them into pages. Does NOT auto-execute generated React on live pages — components route through human/eval review (the same gate that protects published agents) before customer-facing surfaces ship. USE-WHEN the operator says: 'import this Claude Design handoff', 'wire up these components', 'I just exported a design from Claude Design', or 'apply this design bundle to my workspace'. Example: import_claude_design_handoff({ bundle: { meta: { project_name: 'Acme HVAC' }, tokens: { colors: { primary: '#0e7490' } }, components: [{ name: 'TrustStrip', surface: 'landing', react_source: '<TSX content>' }] } })
| Name | Type | Req | Description |
|---|---|---|---|
| bundle | object | yes | The handoff bundle as a JSON object. Required fields: bundle.components (array of {name, react_source OR html_source}). Optional: bundle.meta, bundle.tokens (DESIGN.md-shape), bundle.assets. Server c… |
| workspace_id | string | — | Optional workspace override. |
No output schema declared.
No examples provided.
install_caldiy_booking ~55
Install the booking page (event types, availability, scheduled bookings). Example: install_caldiy_booking({})
| Name | Type | Req | Description |
|---|---|---|---|
| config | object | — | Optional booking-page configuration overrides. |
| workspace_id | string | — | Optional workspace override. |
No output schema declared.
No examples provided.
install_formbricks_intake ~61
Install an intake form (questions, conditional logic, automatic CRM sync). Example: install_formbricks_intake({})
| Name | Type | Req | Description |
|---|---|---|---|
| form_id | string | — | Optional existing intake-form id to bind. |
| workspace_id | string | — | Optional workspace override. |
No output schema declared.
No examples provided.
link_workspace_owner ~107
Claim an anonymously-created workspace under your real account. After linking, the admin URLs (dashboard, contacts, deals) become usable once you sign in at app.seldonframe.com. Requires SELDONFRAME_API_KEY to be set in the MCP environment. The workspace bearer token continues to work — no rotation needed. Example: link_workspace_owner({}) to claim the active workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional workspace id to claim. Defaults to the active workspace from this device. |
No output schema declared.
No examples provided.
list_activities ~54
List activity log entries (tasks, notes, email sent, booking created, etc.) across the workspace. Example: list_activities({}).
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_agents ~115
USE WHEN USER SAYS: 'show me my agents', 'which chatbots do I have', 'list agents in this workspace', 'is the HVAC chatbot live yet?'. Lists all agents in the workspace with status (draft/test/live/paused), version, daily token usage vs budget, and metadata. Use to find an agent_id before calling publish_agent / update_agent_blueprint / get_agent_metrics, or to audit which agents are live across a workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | Workspace id (bearer workspace). |
No output schema declared.
No examples provided.
list_appointment_types ~48
List all appointment types (bookable templates) in the workspace. Example: list_appointment_types({}).
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_automations ~34
List automations configured in the active (or specified) workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional workspace override. |
No output schema declared.
No examples provided.
list_blocks ~75
List all v2 page-block primitives available in this SF backend. Returns each block's name, version, section type, one-line description, and the URL where its full SKILL.md (the generation prompt + prop schema) lives. Use this when you need to discover what blocks exist; for actual block content use get_block_skill.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_bookings ~199
List scheduled bookings (not appointment-type templates — see list_appointment_types for those). Supports filtering by contact, status, and date range. Default sort: most-recent-first; if `from` is set, switches to earliest-upcoming-first for reminder flows. Example: list_bookings({ from: '2026-04-22T00:00:00Z', limit: 20 })
| Name | Type | Req | Description |
|---|---|---|---|
| contact_id | string | — | Optional. Filter to a specific contact's bookings. |
| from | string | — | Optional ISO timestamp. Only bookings starting at or after this moment. |
| limit | number | — | Max rows (default 50, max 200). |
| status | string | — | Optional. Filter by status (scheduled | completed | cancelled | no_show). |
| to | string | — | Optional ISO timestamp. Only bookings starting at or before this moment. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_brain_dir ~123
List brain notes in the workspace's layer-1 brain. Returns metadata + a 120-char body preview per note (full body requires read_brain_path). Use to discover what the brain knows about this workspace before generating blocks. Pass `prefix` to filter by directory (e.g. 'voice/' returns voice-related notes only). Notes are returned sorted by confidence descending.
| Name | Type | Req | Description |
|---|---|---|---|
| prefix | string | — | Optional path prefix to filter (e.g. 'voice/', 'customers/'). Omit for all notes. |
| workspace_id | string | yes | Workspace id. |
No output schema declared.
No examples provided.
list_brain_patterns ~197
List layer-2 cross-workspace patterns. These are anonymized insights the cron has promoted from workspaces that all observed the same thing (3+ workspaces, confidence >= 0.7). Use BEFORE generating blocks for a vertical-specific business — patterns/by-vertical/<vertical>.md gives you observations across every other workspace in that vertical. Compounding moat: each new workspace's interactions feed back into these patterns over time.
| Name | Type | Req | Description |
|---|---|---|---|
| block_type | string | — | Optional block-type filter: 'hero' | 'services' | 'faq' | etc. Returns patterns/by-block-type/<type>/* notes only. |
| vertical | string | — | Optional vertical filter: 'barbershop' | 'hvac' | 'legal' | 'restaurant' | etc. Returns patterns/by-vertical/<vertical>/* notes only. |
| workspace_id | string | yes | Workspace id (used for auth; the patterns themselves are global). |
No output schema declared.
No examples provided.
list_contacts ~46
List contacts in the active workspace. Returns every contact the caller can read. Example: list_contacts({}).
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_deals ~40
List deals in the active workspace. Example: list_deals({}).
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_emails ~64
List recent emails sent from the workspace, newest first. Useful for checking delivery status before following up.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | — | Max rows to return (default 50, max 200). |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_forms ~38
List intake forms in the workspace. Example: list_forms({}).
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_invoices ~61
List workspace invoices (draft + sent + paid + past_due + voided), newest first.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | — | Max rows (default 50, max 200). |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_landing_pages ~59
List the workspace's landing pages (draft + published), newest-updated first.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | — | Max rows (default 50, max 200). |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_landing_templates ~62
List the pre-built vertical landing-page templates. Each has a validated Puck payload ready to seed a new page via create_landing_page({puck_data: template.payload}).
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_payments ~61
List recent payments (completed + failed + refunded + disputed) across the workspace, newest first.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | — | Max rows (default 50, max 200). |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_secrets ~32
List secret metadata (names, timestamps) without exposing plaintext.
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional workspace override. |
No output schema declared.
No examples provided.
list_sms ~60
List recent SMS messages (inbound + outbound) for the workspace, newest first.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | — | Max rows to return (default 50, max 200). |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_sms_suppressions ~53
List all suppressed phone numbers for the workspace — who is opted out and why (manual / stop_keyword / carrier_block / complaint).
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_submissions ~78
List submissions for a form. Example: list_submissions({ form_id: 'uuid…' }).
| Name | Type | Req | Description |
|---|---|---|---|
| form_id | string | yes | UUID of the form. Slug lookup not supported on this endpoint — use get_form first if you only have the slug. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_subscriptions ~59
List workspace subscriptions (active + trialing + past_due + canceled), newest first.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | — | Max rows (default 50, max 200). |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_suppressions ~50
List all suppressed email addresses for the workspace — who is opted out and why (manual / unsubscribe / bounce / complaint).
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
list_workspace_domains ~70
List all custom domains registered to the workspace. Returns hostname, status (pending / verified / failed), DNS verification record, and primary flag for each. Allowed on all tiers — free workspaces will see an empty list since custom domains require a paid tier.
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | Workspace id. |
No output schema declared.
No examples provided.
list_workspaces ~32
List all workspaces known to this device (plus any Pro workspaces if SELDONFRAME_API_KEY is set).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
move_booking_field ~113
Move ONE booking field (extra) to a new position. Splice semantics. Standards (fullName, email at indices 0/1) cannot be moved AND cannot be displaced — both from_index and to_index must be >= 2.
| Name | Type | Req | Description |
|---|---|---|---|
| from_index | integer | yes | 0-based source index. Must be >= 2 (standards locked). |
| to_index | integer | yes | 0-based target index in the result. Must be >= 2. |
| workspace_id | string | yes | Workspace id. |
No output schema declared.
No examples provided.
move_deal_stage ~115
Move a deal to a new stage. Same effect as dragging the card on the kanban. Example: move_deal_stage({ deal_id: '...', to_stage: 'Proposal' }).
| Name | Type | Req | Description |
|---|---|---|---|
| deal_id | string | yes | UUID of the deal. |
| probability | number | — | Optional. Stage probability (0-100) if the workspace's pipeline has one defined for this stage. |
| to_stage | string | yes | Destination stage name. |
| workspace_id | string | — | Optional. Falls back to the active workspace. |
No output schema declared.
No examples provided.
move_intake_field ~108
Move ONE intake field to a new position. Splice semantics — field at from_index is removed, then inserted at to_index in the result. Use when the operator says 'put email at the top' or 'move phone above address'. Run get_intake_structure first to find the indices.
| Name | Type | Req | Description |
|---|---|---|---|
| from_index | integer | yes | 0-based source index. |
| to_index | integer | yes | 0-based target index in the result. |
| workspace_id | string | yes | Workspace id. |
No output schema declared.
No examples provided.
move_portal_section ~76
Move ONE portal-template section atomically. Splice semantics: section at from_index removed, then inserted at to_index in the result.
| Name | Type | Req | Description |
|---|---|---|---|
| from_index | integer | yes | 0-based source index. |
| to_index | integer | yes | 0-based target index in the result. |
| workspace_id | string | yes | Workspace id. |
No output schema declared.
No examples provided.
move_section ~253
Move ONE landing-page section atomically. Identifies sections by INDEX (run get_landing_structure first to find which index to move). Splice semantics: the section at from_index is removed, then inserted at to_index in the resulting array — so to_index is the section's NEW position in the result. Examples: 'put hero below FAQ' → from_index=<hero index>, to_index=<faq's current index>. 'Move services to the top' → from_index=<services index>, to_index=0. Handles duplicate types correctly (the case reorder_landing_sections refused) — index identity is unambiguous even when two services-grid or two mid-cta sections exist. Use reorder_landing_sections instead when you want to express the entire new order at once AND types are unique. Use move_section for single-step moves OR when types repeat.
| Name | Type | Req | Description |
|---|---|---|---|
| from_index | integer | yes | 0-based index of the section to move (from the get_landing_structure response). |
| to_index | integer | yes | 0-based index where the section should END UP in the result. Splice semantics — equivalent to: remove from from_index, then insert at to_index. |
| workspace_id | string | yes | Workspace id. |
No output schema declared.
No examples provided.
persist_block ~355
Persist a v2 block instance. Call this after you've read the block's SKILL.md and generated props matching its schema. The server validates props (Zod schema + deterministic copy-quality validators), renders the block via the existing renderer, replaces the matching section in the workspace's landing page, and returns the public URL where the change is now visible. For initial generation, omit `customization`. For operator-driven edits ('make the hero warmer', 'add a card about kids cuts'), pass `customization: { prompt }` — the operator's prompt is appended to the row's customization history (forever-frozen rule), and the new props replace the previous render. Returns `validation_errors` on failure — if you see them, regenerate the props with the rules from SKILL.md applied more carefully and retry. Don't show validation errors to the operator; they're for you.
| Name | Type | Req | Description |
|---|---|---|---|
| block_name | string | yes | Block name (must match a get_block_skill name): hero, services, or faq. |
| customization | object | — | Optional operator-customization layer. When set, append-only override of the initial generation. Use this when the operator says 'change X about my hero' rather than 'rewrite my hero'. |
| generation_prompt | string | yes | The full prompt your LLM consumed to produce these props. Stored as the source of truth for re-renders. Include the workspace context (business name, services, etc.) — not just the SKILL.md body. |
| props | object | yes | Block props matching the prop schema in the block's SKILL.md frontmatter. Validated server-side; mismatches return 422 with structured validation_errors. |
| workspace_id | string | yes | Workspace id from create_workspace_v2. |
No output schema declared.
No examples provided.