MCP — embed Seny in any AI tool
Newer dashboard workflows also have named connector tools. Call list_dashboard_operations to see the operations your token can execute, including imports, saved views, caller IDs, meetings and role templates. See Dashboard operations for permissions, confirmation fields and external effects. The full current tool list comes from tools/list; the dashboard Help assistant intentionally uses a narrower ceiling.
Seny ships two Model Context Protocol servers so Claude, ChatGPT, Cursor, and anything else MCP-aware can talk to your agents natively — no proxying, no API wrappers, no glue code.
- Per-widget public MCP— every widget gets a public MCP URL. Anyone (with or without a Seny account) can add it to their AI tool and chat with that widget's agent using the same persona and knowledge.
- Workspace admin MCP — a Bearer- or OAuth-authenticated server exposing 160+ management tools: create and configure agents, edit transfer rules and knowledge, run campaigns, manage white-label client workspaces, fetch conversation transcripts, and everything else the REST API can do.
Per-widget public MCP
Every active widget exposes a public MCP endpoint at:
https://broker.seny.ai/v1/mcp/<public_key>You can find the per-widget URL on the Channels tab of any widget in the dashboard, under AI assistants (the old /distribution route redirects there). The endpoint speaks MCP Streamable HTTP (JSON-RPC 2.0).
What's exposed
The MCP server returns the widget's configured tool list on every tools/list call:
chat— send a message to the agent and get its reply. Same persona, same knowledge base, same conversation memory as the embedded widget on the live site.search— semantic search across every page Seny indexed during the crawl. Returns the top-N matching pages with title, URL, and excerpt.- Every per-widget integration tool — eDealer inventory, AutoVerify forms, Twilio SMS, custom HTTP integrations, webhooks. If the agent has it, the MCP client gets it.
Authentication & rate limits
No API key required. Each call goes through the widget's org credit balance — abuse is bounded by what the operator has paid for. Browser-action tools (navigate, click, fill) are not exposed; they only make sense in a live DOM.
Add to Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent path on Windows / Linux:
{
"mcpServers": {
"your-widget": {
"url": "https://broker.seny.ai/v1/mcp/wgt_XXXXXXXX"
}
}
}Restart Claude Desktop after saving.
Add to Claude Code
claude mcp add --transport http your-widget https://broker.seny.ai/v1/mcp/wgt_XXXXXXXXAdd --scope user to install globally instead of per-project.
Add to Cursor / Continue / other IDEs
Same JSON shape as Claude Desktop. Cursor reads from ~/.cursor/mcp.json; Continue stores it in its own settings. Most MCP-aware editors accept this format unchanged.
Add to ChatGPT
ChatGPT MCP support is in rollout — currently available on Business / Enterprise / Edu plans. In ChatGPT settings → Connectors, add a new MCP server with the URL above. See OpenAI's MCP docs for the latest UI.
The MCP discovery pill
Every embedded chat widget renders a small MCPbadge in its header. Visitors who click it see the same copy-paste configs above, pre-filled with the current site's widget URL. The pill is on by default — operators can disable it from Channels → AI assistants → Public MCP server in the dashboard. Disabling the pill hides it from visitors; the MCP endpoint itself stays publicly reachable.
Workspace admin MCP
Use this when you want an LLM (your own Claude session, an internal agent, a CI bot) to manage your Seny workspace — create widgets, edit personas, pull conversation transcripts. Authenticated with a Seny API key.
Connect from the dashboard (fastest)
The admin server runs in the app itself at a single Bearer-authenticated endpoint:
https://app.seny.ai/api/v1/mcpThe quickest way to wire it up is the Manage Seny from your AI panel in the dashboard — on the first-run card, or any time under Settings → API keys. Pick a key scope (read-only or full), generate it, and copy the pre-filled config for Claude Code, Claude Desktop, Cursor, ChatGPT / claude.ai, or the npxbridge. The freshly minted key is dropped straight into the snippet, so there's nothing to paste by hand.
Connecting by hand instead? Claude Code is one command:
claude mcp add --transport http seny \
https://app.seny.ai/api/v1/mcp \
--header "Authorization: Bearer seny_..."Every tool is scoped to the key's permissions — a read-only key can inspect everything but change nothing. Tighten or revoke a key from Settings → API keys and it takes effect immediately.
Claude Code plugin
Prefer not to touch config files? Install the official Seny plugin — it bundles the server config and reads your key from SENY_API_KEY:
/plugin marketplace add devlift/seny-mcp
/plugin install seny@senyThen export your key (shell profile or project .env):
export SENY_API_KEY=seny_...Install via npx
SENY_API_KEY=seny_... npx @seny/mcp-serverAdd to Claude Desktop
{
"mcpServers": {
"seny": {
"command": "npx",
"args": ["@seny/mcp-server"],
"env": { "SENY_API_KEY": "seny_..." }
}
}
}Tools exposed
The admin server exposes everything the REST API can do — over 160 tools, one-to-one with the endpoints in the OpenAPI reference. If the dashboard can change it, there's a tool for it. The tools are grouped by domain:
| Domain | Representative tools |
|---|---|
| Agents | list_agents, get_agent, create_agent, update_agent (persona, voice, greeting, channels, branding, goals, tracking, prompt modules…), delete_agent, clone_agent, promote_agent, export_agent / import_agent, connect_agent_site, draft publish/discard. |
| Call routing | create_transfer_rule, update_transfer_rule, list_transfer_rules, delete_transfer_rule, SIP trunks, phone numbers. |
| Knowledge & data | knowledge bases + entries, KB website sources, document upload, data tables, attach_data_table, pronunciations, prompt-module library. |
| Conversations & analytics | list_conversations, get_conversation, calls, analytics, reports, simulations + scenarios. |
| Campaigns | full campaign lifecycle — lists, contacts, templates, CRM sources, write-back rules, approvals. |
| Channels & integrations | email inboxes, webhooks, post-call webhooks, org integrations + per-agent links, notifications. |
| Workspace & clients | team, API keys, branding, billing (read), audit log, and white-label create_client / update_client / start_client_trial / set_client_plan and friends. |
Call tools/listfor the live, complete set — it reflects your key or connector's permissions exactly.
Permissions & hidden tools
Every tool is gated on a capability (the same catalog used for API keys). Tools whose capability your key or connector doesn't hold are hidden from tools/list — so if a tool you expect is missing, the fix is almost always to grant the capability, not a bug. Two things to know:
- Client-workspace tools (
create_clientand friends) needclients.access. Grant it on the key, or — for an OAuth connector — tick "Access client workspaces" on the consent screen. (These used to requireorg.write, which OAuth connectors can never hold;clients.accessis the connector-friendly capability.) - The tool list is snapshotted when a session connects.After changing a key's permissions or reconnecting a connector, restart / reconnect the MCP session so the new tools appear.
Generate an API key from Settings → API keys in the dashboard. Keys are shown once at creation; store them in a password manager.
Rich responses (MCP-UI cards)
Tool results aren't limited to plain text — Seny's MCP servers return MCP-UI cards alongside the text fallback. Compatible clients (Claude Desktop's web view, Smithery's hosted gateway) render them inline; other clients see the text and ignore the resource entry. Always-on by default, per-widget toggle in Channels → AI assistants → Public MCP server → Rich UI card responses.
Card kinds
vehicle_card— emitted bysearch_inventoryandget_vehicle_details(eDealer integration). Shows hero image, year/make/model, price, mileage, color, drivetrain, VIN, stock number, and a "View on dealer site" button.page_result— emitted by the built-insearchtool. Shows page title, URL, snippet, and OpenGraph thumbnail when the crawler captured one.booking_card— emitted bybook_test_driveon success. Shows the booked vehicle, datetime, location, and confirmation number.conversation_summary— admin MCP'sget_conversationreturns one of these. Shows transcript preview, duration, outcome, extracted-data chips, and criteria pass/fail.form_preview— reserved for upcoming form-fill integrations. Shows submitted field values + a confirmation state.
How it works
Each card is encoded as an HMAC-signed token. The operator preview route at app.seny.ai/cards/<token> validates the signature and JIT-renders self-contained HTML — no DB lookup, no card-storage table, no cleanup. The token format is stateless and sized to fit comfortably in a URL (typically 600–1500 bytes after base64-encoding the JSON payload). The card actually delivered to MCP clients carries that same HTML inline in the resource entry (see above).
Cards are returned as MCP resource content entries with uri ui://seny/card/<token> and mimeType: text/html;profile=mcp-app, carrying the self-contained HTML inline in the resource's text field — the host srcdoc-loads it into a sandboxed iframe. The text fallback is always the first entry in the content[] array, so non-rendering clients still get a useful answer.
Theming
Cards inherit dark mode by default. On the operator preview route you can append ?theme=light to the app.seny.ai/cards/<token>URL to switch. The card returned to MCP clients is pre-themed inline HTML — the theme is baked in at render time, so a client can't switch it by editing a URL.
Action callbacks
Card buttons currently deep-link to URLs (the dealer site, the Seny dashboard, etc.) rather than firing follow-up MCP tool calls. Cross-client callback round-trip support isn't yet stable across MCP clients; deep-linking is universal and delivers the visitor back to the live widget pre-loaded with context.
Listing in MCP catalogs
Each widget gets a generated server.json manifest you can submit to public MCP catalogs so AI users find your widget without you handing them a URL. Download from Channels → AI assistants → List in public MCP catalogs in the dashboard.
- Official MCP Registry — Anthropic-backed canonical registry. Submit by publishing server.json with a verified GitHub or DNS namespace.
- Smithery — most-used community catalog + hosted gateway. Paste the MCP URL into the "Add Server" form.
- Glama — auto-indexes server.json files in public GitHub repos.
- PulseMCP — curated directory with weekly newsletter. Manual submission.
llms.txt
Every widget also serves an llms.txt at app.seny.ai/llms/<public_key>.txt— the emerging convention for telling LLMs what your site is about and where to look. We auto-generate it from your widget's crawled pages and persona. The full body (...-full.txt) is bigger and meant for indexing; the short index is meant for quick orientation.
Why this matters
MCP is becoming the standard interface between LLMs and external systems. By shipping per-widget MCP servers, every Seny customer gets distribution into the AI tools their own customers already use — not just a chat bubble on their site, but a callable agent that fits inside Claude, ChatGPT, Cursor, and the dozens of MCP-aware tools shipping every month. The discovery pill in the embedded widget makes that surface visible without anyone needing to read these docs.