@seldonframe/mcp 1.29.0 → 1.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -1
- package/src/welcome.js +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seldonframe/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.30.0",
|
|
4
|
+
"description": "MCP server for SeldonFrame — AI-native Business OS platform. v1.30.0: LINEAR-CLASS /docs PAGE (CRM-side; MCP package version bumped for SemVer hygiene). The sidebar's 'Docs' link pointed at /docs but the route didn't exist (404). v1.30.0 builds the entire route from scratch as a standalone documentation surface (outside the dashboard route group), modeled on linear.app/docs structure. WHAT SHIPS: (1) NEW app/docs/layout.tsx — standalone shell, no dashboard chrome. Wider max-w-1080px content area, generous py-16 vertical breathing room, sticky top header + collapsible left sidebar + main column. (2) NEW app/docs/docs-header.tsx — Linear-style top bar: SF logo + 'Docs' label on left; centered search input with ⌘K kbd hint; theme toggle + Sign in + Sign up CTA on right. Sticky, backdrop-blurred. Search is non-functional in v1.30.0 (placeholder for v1.30.1 with content indexing). (3) NEW app/docs/docs-sidebar.tsx — collapsible category nav with 8 sections (Getting started / Your business / Customers (CRM) / AI Agents / Pages & website / Email & Automation / Integrations / Billing & plans), 38 article links total. Each category expands/collapses; current page highlighted. Bottom 'meta' nav: Docs / Developers (→ GitHub) / Learn / Contact support (→ Discord). (4) NEW app/docs/page.tsx — homepage with: HERO (4xl/5xl heading + subtitle), POPULAR GRID (4 large cards: 3-minute demo / Build a chatbot / First workspace / Claude Code MCP), QUICK START STEPPER (4 numbered steps with code blocks: install MCP / build workspace / add chatbot / customize from dashboard), CORE CONCEPTS GRID (6 small cards: Soul / Agents / Templates / Workspaces / Customers / Bookings), 6 DETAILED CATEGORY BLOCKS (each is icon + title + 4 link rows in a unified card grid), LEARN section (video tutorials + customer stories), and a final 'Build your first workspace' CTA card with gradient. CRAFT DETAILS: hover lifts on cards (border-primary/30 + bg-accent/20 + icon color shift); arrow icons translate-x on hover; primary-tinted icon backgrounds throughout; tabular spacing; generous whitespace between sections (space-y-16 on hero/section gaps). All article hrefs are anchor placeholders (#chatbot, #workspaces, etc.) for v1.30.0; individual article pages get authored over time without changing nav structure. Sidebar 'Docs' link now actually works (was 404). Compatible with the existing app shell — uses next-themes for dark/light toggle, lucide-react for icons (already-installed deps); no new packages. NO migrations, NO new env vars, NO MCP tool changes. Backend redeploy required. EXPECTED IMPACT: launch-video viewers landing on /docs see a polished Linear-class documentation surface that signals 'this product is real and well-built.' SF clients curious about features can now actually find them organized cleanly. /docs becomes the surface that transforms 'is this real?' into 'I want this.'",
|
|
5
|
+
"description": "MCP server for SeldonFrame — AI-native Business OS platform. v1.29.1: BODY COPY + EMPTY STATES (LINEAR-CLASS CRAFT) — second pass on the v1.29.0 vocabulary work, focused on per-page polish: typography, empty-state heroes, and the dashboard welcome heading the operator sees the moment they log in. WHAT SHIPS: (1) /landing EMPTY STATE HERO. Was: small 'Create your first landing page — Choose a template to get started' card. Now: full hero card with circular icon ('Layout' in primary tint), 'Build your first page' h2, plain-English subtitle ('Pages live on your public website — landing pages, lead forms, booking flows. Start from a template below or build from scratch.'). Template grid below promoted with hover transitions to primary-tinted icon backgrounds — micro-interaction polish. Header subtitle on /landing/page.tsx itself rewritten from 'Build and publish modular pages with integrated [intake form] and booking sections' to 'Your business's public-facing pages — landing pages, lead capture, booking flows.' (2) /emails HEADER REWORK. Was: a 'sub-header bar' style with Mail icon + counter dot, copying templates-baseui pattern. Now: standard page header (h1 + subtitle), more consistent with the rest of the dashboard. Subtitle: 'Send a one-off message or save a template to reuse for campaigns. [N] emails sent so far.' Counter only shows when > 0. Word renamed 'Emails' → 'Email' (singular like Gmail). (3) /forms STATS GRID HIDDEN WHEN EMPTY. Was: 4-card grid showing 'Total Forms / Active Forms / Draft Forms / Submissions' all with '+0 vs last month' labels even on a brand-new workspace with zero forms (dashboard inflation). Now: stats grid renders only when forms.length > 0; the '+0 vs last month' meaningless labels stripped entirely. Card titles tightened ('Total Forms' → 'Total', 'Active Forms' → 'Published', 'Draft Forms' → 'Draft'). Stat values use tabular-nums for cleaner alignment. (4) /automations SUBTITLE OUTCOME-FOCUSED. Was: 'Build, test, and deploy AI agents for this workspace. Each agent responds to a trigger (form submission, booking, SMS reply, schedule) and runs with your LLM key.' (technical, audience = SF developer). Now: 'Set up rules that run on their own — like sending a follow-up email when a booking comes in, or texting a reminder before a service call. Pick a template below to get started.' (concrete, audience = HVAC operator). Catalog header label 'Agent catalog' → 'Available templates'; 'archetypes' counter renamed to 'templates'. (5) /dashboard WELCOME HEADING POLISH. Was: 'text-lg sm:text-[22px]' with 'This is your calm workspace overview' (vague) for SF builders or 'Here's what's happening at your workspace today' for operators. Now: bigger 'text-xl sm:text-[28px]' tighter-tracking heading (more like Linear's homepage). Subtitle for both audiences rewritten to the concrete 'Here's what's happening at your business today' / 'Here's what's happening across your workspace today.' SF builder CTA 'Create New Client OS' renamed to 'New workspace' (operator-language; the CTA stays SF-builder-only via isOperatorSession gate). All changes are pure copy + CSS — zero new logic, zero new endpoints, zero new MCP tools. NO migrations, NO new env vars. Backend redeploy required. EXPECTED IMPACT: every primary surface in the dashboard now has a warm operator-language header, a hero-style empty state that teaches what the surface is for, and tighter typography. The 5-second test passes for /dashboard, /landing, /emails, /forms, /automations, /agents, /settings — plus the v1.29.0 sidebar work means navigating between them feels coherent.",
|
|
4
6
|
"description": "MCP server for SeldonFrame — AI-native Business OS platform. v1.29.0: ADMIN DASHBOARD SIMPLIFICATION (CRM-side; MCP package version bumped for SemVer hygiene). The 5-second test: would Cypress Pine HVAC's owner — not a developer, not an SF builder, just an HVAC small business owner — know in 5 seconds what each page is and what they should DO here? v1.28.x and earlier: not consistently. SF-internal jargon ('Soul Marketplace', 'Soul Knowledge', 'Block', 'Soul transfer', 'Soul wiki', 'Frameworks', 'BLOCK.md') leaked into operator-facing copy. Sidebar grouped pages under 'YOUR SOUL' / 'YOUR BLOCKS' which means nothing to operators. Settings page exposed 17 sections in a flat-ish layout where 'Soul Knowledge' sat next to 'Workspace' as if peers. The /soul-marketplace sidebar link was a 404 (actual route is /marketplace). Operators learning the platform had to learn SF-internal vocabulary first, which is friction adoption can't afford at launch. WHAT SHIPS: (1) SIDEBAR REWORK. Three jargon-named groups ('YOUR SOUL' / 'YOUR BLOCKS' / 'SYSTEM') consolidated into two operator-language groups: 'OVERVIEW' (Dashboard) and 'RUN THE BUSINESS' (Customers / Deals / Bookings / Agents / Pages / Email / Forms / Automations / Templates). 'Soul Marketplace' renamed to 'Templates'. Sidebar route fixed: /soul-marketplace → /marketplace (was 404). (2) MARKETPLACE PAGE RENAME. /marketplace header from 'Block Marketplace' → 'Templates'. Subtitle from 'Extend SeldonFrame with new capabilities' → 'Add new pages, integrations, and AI capabilities to your workspace.' Search placeholder 'Search blocks' → 'Search templates'. Submit button 'Submit a Block' → 'Submit a Template'. Zero functional change; pure vocabulary. (3) SETTINGS RESTRUCTURE — 5 PLAIN-ENGLISH BUCKETS. Was: 'Your Business' (7 mixed items including 'Soul Knowledge') + 'Account & Billing' (3 items) + 'Advanced Settings' (collapsed, 7 items). Now: 'Workspace' (4 items: Workspace / Business Profile / Brand & Theme / Team), 'Billing' (3 items: Plan & Subscription / Accept Payments / Custom Domain — repositioned Stripe as the primary 'Accept Payments' card), 'Integrations' (2 items: AI / LLM Provider with status pill / Other Integrations), 'CRM Setup' (5 items: Pipeline Stages / Custom Fields / Customer Portal / Knowledge Base — renamed from 'Soul Knowledge' / Suppression List), 'Developer' (collapsed, 5 items: API Keys / Webhooks / White-label Branding / Industry Packs — renamed from 'Saved Frameworks' / Export / Import — renamed from 'Soul Export / Import'). Each group has a one-line plain-English description. Soul-internal terminology purged from operator-facing copy. (4) /AGENTS EMPTY STATE OPERATOR-FRIENDLY. Was: 'No agents yet. Build one from Claude Code with the SeldonFrame MCP — call build_website_chatbot.' Now: a centered hero card explaining what an AI assistant does ('answers customer questions, books appointments, escalates to your team when it can't help'), with two CTAs: 'How it works' (links to docs) and a collapsible 'Build with Claude Code →' that reveals the actual MCP snippet for developer operators. Non-developer operators see the explanation; developer operators get the one-paste command. Both audiences served. NO migrations, NO new env vars, NO MCP tool changes. Backend redeploy required. EXPECTED IMPACT: launch-video viewers + new operators encountering the dashboard for the first time see operator-language navigation, plain-English settings groups, and welcoming empty states — instead of SF-jargon they have to translate. Conversion friction reduced. The 5-second test passes for every primary surface.",
|
|
5
7
|
"description": "MCP server for SeldonFrame — AI-native Business OS platform. v1.28.6: KARPATHY MODE FOR VALIDATOR RECOVERY — LLM regeneration on critical-fail + extended no_pii_leak trusted source + actionable eval surface (CRM-side; MCP package version bumped for SemVer hygiene). PROBLEM (from real-world dogfood): Cypress Pine HVAC chatbot stuck at 75% eval pass rate after 4 blueprint iterations (v4 → v7) couldn't promote to live. Two failure paths converged: (a) The runtime's one-size-fits-all safe fallback ('Let me check on that for you and have someone follow up. What's the best email to reach you at?') is right for runtime errors but WRONG for adversarial probes — asking for the visitor's email after a PII probe is awkward + trips its own validator on subsequent turns. (b) no_pii_leak validator's trusted source was conversation-history-only — when the agent legitimately surfaced operator's OWN business email/phone (the whole point of a website chatbot), validator flagged as a leak. Operators can't fix either via blueprint tuning — both are platform-owned. Claude Code correctly tried 4 times, correctly stopped. Architecture trapped it. PHILOSOPHY (Karpathy mode applied): the static fallback was COMPETING with the LLM's judgment. Better models produce better recoveries when given corrective context — hardcoded templates degrade as models improve, the opposite of antifragility. The right move: trust the model, give it rich corrective context, let it regenerate. WHAT SHIPS: (1) NEW lib/agents/fallbacks.ts. Pure-data registry mapping validator names to { correction (LLM regeneration prompt), finalFallback (last-resort static text), fixHint (operator-facing UI hint) }. 6 entries: quotes_only_from_soul_pricing, no_prompt_injection_echo, no_pii_leak, no_avoid_words, response_length_under_cap, no_hallucinated_state_change. composeCorrectionPrompt(failedNames) builds an [INTERNAL CORRECTION:...] block listing each violation as a bullet — the LLM sees ALL fired validators in one regeneration request. selectFinalFallback(failedNames) picks the highest-priority entry's static fallback (no_pii_leak > pricing > injection > hallucinated_action > length > avoid_words) when regeneration also fails. (2) RUNTIME REGENERATION (lib/agents/runtime.ts). When critical validator fires post-turn: (a) compose correction prompt from fired validators, (b) append synthetic [INTERNAL CORRECTION:...] user message to messages[], (c) call anthropic.messages.create with same system + messages + correction (no tools — just want clean text), (d) re-run validators on regenerated text. If clean → use regenerated response. If still critical-fail → use selectFinalFallback (per-validator static, NOT the v1.27.x one-size-fits-all). Token budget: ≤1 regeneration retry; bounded ~512 max_tokens on the regen call. ~2x token cost on critical-fail turns vs v1.28.5; for typical operators with healthy agents, critical-fails are rare so amortized cost is low. (3) no_pii_leak EXTENDED TRUSTED SOURCE. ValidatorContext.soul gains optional contact: { email, phone }. Runtime passes soul.contact through. Validator's trustedSource string now includes operator's business email/phone. The agent surfacing 'you can reach us at info@cypresspine.com' no longer flags as a leak — it's the agent's job to share business contact info. (4) /agents/[id]/evals SURFACE FIX (evals-client.tsx). Failed scenarios now show the agent's actual response inline (not behind a <details> collapse) + a 'How to fix' panel with per-validator hints (e.g. 'add the missing service to your pricing facts' / 'soul.contact may need an email' / 'this typically self-corrects on regeneration'). Operators (and Claude Code reasoning about the workspace) see the diagnostic data without clicking. PHILOSOPHY CHECK: every change here is moving HARDCODED HEURISTICS → MODEL JUDGMENT or → MORE DATA. Static fallback → LLM regeneration with rich context. Trusted-source-too-narrow → trust the operator's own contact info. Hidden eval details → surface them. As Claude (and successor models) get better, regeneration produces better recoveries (we don't maintain N hardcoded fallbacks); architecture stays stable. NO migrations, NO new env vars. Backend redeploy required. EXPECTED IMPACT on the conversation that triggered this fix: when the PII probe scenario fires + the agent generates the reflexive 'what's your email?' fallback, the regeneration pass with the corrective prompt produces a clean refusal like 'I'm not able to share other customers' info, but I'm happy to help with your own questions.' — passing the eval. Eval pass rate from 75% → 87.5%+ for typical workspaces. Operators see WHY each scenario failed inline; Claude Code can route to the right fix without inferring.",
|
|
6
8
|
"description": "MCP server for SeldonFrame — AI-native Business OS platform. v1.28.4: POST-BOOKING 24h REMINDER VIA VERCEL WORKFLOWS — first SF use of Vercel Workflow DevKit. CRM-side change; MCP package version bumped for SemVer hygiene. PROBLEM: SF had no post-booking reminder mechanism. Operators in HVAC / dental / coaching verticals see ~10-15% no-show rates without reminders. The existing workflow_runs system (which powers /automations archetypes) is Soul-integrated for rule-based pattern matching; not the right shape for 'fire on event, sleep N hours, do thing' durable flows. PHILOSOPHY: lean on commodity infrastructure where SF doesn't compound. Durable execution + sleep-without-burning-compute is commodity (Vercel Workflows handles it). SF's compounding edge is Soul + Brain + Agent — not workflow plumbing. The user explicitly directed this in earlier reflection: 'use Vercel Workflows for any new durable flow; NOT a rewrite of existing workflow_runs.' WHAT SHIPS: (1) WORKFLOW PACKAGE INSTALLED. pnpm add workflow @workflow/next in packages/crm. next.config.ts wrapped with withWorkflow() from workflow/next so the build pipeline compiles 'use workflow' / 'use step' files into durable code. (2) NEW lib/workflows/booking-reminder.ts. Per Vercel WDK conventions: workflow function (sandboxed VM, no Node.js APIs, 'use workflow' directive) does ONLY orchestration. All real work (DB queries, SMS/email sends, activity inserts) lives in step functions ('use step' directive, full Node.js access). The workflow: (a) loads booking via loadBookingForReminder step, (b) early-returns if status != 'scheduled' OR if <24h to startsAt, (c) sleeps with workflow.sleep(new Date(startsAt - 24h)) — durable, no compute consumed during the sleep, (d) re-fetches the booking after sleep (it may have been cancelled or rescheduled in the meantime; if rescheduled to >25h out we skip and let a future scheduled run pick it up), (e) calls sendReminder step which checks workspace integrations: hasTwilio → sendSmsFromApi via lib/sms/api with the contact's phone; else hasResend → sendEmailFromApi via lib/emails/api; else returns 'no_channel_configured', (f) writes an activity row via logReminderActivity step (type='reminder_sent_sms' / 'reminder_sent_email' / 'reminder_skipped' with the reason). (3) WIRED INTO submitPublicBookingAction. Right after emitSeldonEvent('booking.created', ...), the action does: const { start } = await import('workflow/api'); await start(bookingReminderWorkflow, [bookingId]). Fire-and-forget — start() returns immediately. Errors caught + logged so workflow trigger failures don't fail the booking creation itself. (4) ALONGSIDE existing workflow_runs system. workflow_runs powers /automations archetype configurator (Soul-integrated rule-based patterns); booking-reminder is a generic durable flow that doesn't need Soul. Both coexist. NO migrations. NO new env vars on the SF side, BUT requires Vercel Workflow infrastructure on the deployment side — Vercel Workflows is included in Vercel platform; no marketplace install needed. Backend redeploy required (Vercel detects the new workflow on next build via withWorkflow + lib/workflows/ scan).",
|
package/src/welcome.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// stripped. `create_full_workspace` is the only workspace-creation
|
|
9
9
|
// path mentioned anywhere in this briefing.
|
|
10
10
|
|
|
11
|
-
export const VERSION = "1.
|
|
11
|
+
export const VERSION = "1.30.0";
|
|
12
12
|
|
|
13
13
|
export const WELCOME_MARKDOWN = `# SeldonFrame — create a real Business OS in one conversation
|
|
14
14
|
|
|
@@ -433,4 +433,4 @@ admin dashboard. Pre-fills their email automatically.
|
|
|
433
433
|
<https://seldonframe.com> · **Discord:** <https://discord.gg/sbVUu976NW>
|
|
434
434
|
`;
|
|
435
435
|
|
|
436
|
-
export const FIRST_CALL_BANNER = `🚀 SeldonFrame v1.
|
|
436
|
+
export const FIRST_CALL_BANNER = `🚀 SeldonFrame v1.30.0 is connected. STEP ZERO: for any workspace task call get_workspace_state({workspace_id}) FIRST — returns workspace identity + integrations status + agents with inline health stats + counts + tailored next_steps in ONE round-trip. Replaces 4-6 progressive discovery calls. ANTI-PATTERNS: don't ls/cat/read .env (SF is hosted, not local files); don't check node/npm versions (irrelevant); don't ask 'is Anthropic key configured?' (state response tells you); don't create a duplicate agent (state response shows existing ones — use update_website_chatbot instead of build_website_chatbot when one exists). Token-budget concept removed in v1.27.9 — ignore stale references. CAPABILITY MAP — pick the right primitive BEFORE exploring tools: (a) "build me a website" → WORKSPACE → create_workspace_v2 + block tools. (b) "add a chatbot to my website / landing page" → AGENT (web chat) → build_website_chatbot (v1.28+ skill bundle: configure_llm + create_agent + publish-test in 1 call; auto-detects ANTHROPIC_API_KEY from env). Drop to primitives (configure_llm_provider + create_agent + publish_agent) only for custom flows. CRITICAL ANTI-PATTERN: chat widgets are NOT blocks. Don't search list_blocks for chat — chat agents are a separate primitive (v1.26+). (c) "auto-reply to inbound SMS/email" → CONVERSATION → send_conversation_turn (one-shot Soul-aware reply, not a website widget). (d) "add hero/services/faq/cta section" → BLOCK → get_block_skill + persist_block. (e) "send campaign email/sms" → MESSAGING. (f) CRM ops → list_contacts/create_deal/etc. CHATBOT CANONICAL FLOW (v1.28+ — 1 call instead of 5): build_website_chatbot({workspace_id, name, faq, pricing_facts, greeting}) → wraps configure_llm + create_agent + publish-test in one call, auto-detects ANTHROPIC_API_KEY from env. Then: operator sandbox-tests at /agents/[id]/test → publish_agent({status:"live"}) auto-runs 8-scenario eval gate (≥87.5% pass required). Observability tools after publish: list_agents, tail_agent_conversations, get_agent_conversation, get_agent_metrics, run_agent_evals, replay_conversation. Dashboard surfaces /agents, /agents/[id]/test, /agents/[id]/settings, /agents/[id]/evals, /agents/[id]/conversations let operators iterate without leaving the browser. WORKSPACE FLOW (legacy reference): create_workspace_v2 → IN PARALLEL for all 7 recommended_blocks (hero, services, about, faq, cta, booking, intake): get_block_skill + persist_block → complete_workspace_v2 → finalize_workspace({workspace_id, email}). Run blocks in PARALLEL (Promise.all) — sequential takes 60+ seconds. v1.10+ CUSTOMIZE: regenerate_block, upload_workspace_image (image_url preferred over base64). v1.11+ STRUCTURAL: get_landing_structure, move_section, delete_section. v1.12+ COMPOSITES: add_composite_section / update_composite_section — manifest ANY block from 12 low-level primitives. Skipping finalize_workspace leaves the operator with no admin login. Every URL is real. NEVER create local files.`;
|