Skip to main content
MCP Protocolmcp/connector · 85 tools

Connect your AI assistant to a
real business in 30 seconds

One hosted connector URL. 85 curated tools — 54 read-only + 31 write, grouped by MCP annotations — connect Claude, ChatGPT, Claude Code, or Cursor directly to CRM, payments, scheduling, website, and AI agents. OAuth with per-company binding — no API to learn, no keys to paste.

MCP is for operators of YOUR Solid# tenant — install it in your AI editor and authenticate with your own per-tenant API key. Building a buyer-agent that needs to discover and shop across Solid# tenants? You want UCP instead — signed wire format, marketplace-aware, AP2 payments.
Want the agent to act inside the browser instead? Every Solid# page also registers its verbs via navigator.modelContext (W3C WebMCP). 455 verbs across 5 surfaces — same JSON-LD vocabulary as the connector, no API key needed for read-only public surfaces. See WebMCP docs.
85
Curated Tools
54
Read-Only Tools
31
Write Tools (consent-gated)
OAuth
Per-Company Binding
Free
Developer Access
connector architectureReceipt-backed ACID for AI agents

The verb-shape architecture

Most agent frameworks orchestrate (chain LLM calls). Solid# is the layer underneath — the safe-action substrate agents write to. Every one of the agent-attraction verbs across every business function has a SHAPE that matches how AI agents actually reason: observe → explain → preview → commit → receipt → revert. Every write emits an audit row. Whitelisted writes are revertible. Multi-tenant RLS enforces isolation at the database. That's ACID for AI agents — the missing infrastructure layer the labs are looking for.

Aggregate

Collapse 5-8 sub-queries into one tenant-scoped read

  • customer.full_context
  • payment.full_history
  • order.complete_fulfillment_state
  • contact.relationship_map
Explain

Causal chain that produced the current state

  • deal.explain_stage_change
  • crm.explain_contact_state
  • inventory.explain_stockout
  • audit.explain_balance_change
Preview

Dry-run a write before commit — no side effects

  • payments.preview_refund_impact
  • subscription.preview_tier_change
  • pricing.preview_margin_impact
  • inventory.preview_allocation
Suggest

Ranked next-actions with confidence + reason + sample_size

  • deal.suggest_next_action
  • customer.suggest_upsell
  • inventory.suggest_reorder
  • lead.suggest_assignment
Transaction

ACID grouping over multi-step writes — rollback as a unit

  • transaction.start
  • transaction.append
  • transaction.commit
  • transaction.abort
Receipt

Cryptographic attestations on side-effecting writes

  • ucp.receipts.issue
  • voice.call_outbound
  • voice.send_sms
Revert

Single-action undo against whitelisted audit rows

  • audit.revert (NEW shape — v2.12)
Subscribe

Cursor-polling observe streams over the audit log

  • event.subscribe
  • event.poll
  • event.unsubscribe
  • event.list
Discovery

Introspection — agent learns its own surface

  • agent.manifest
  • voice.translate_status
  • ucp.recommendations
Trail

Agent reconstructs the chain of actions that led here

  • agent.trails.lookup
  • agent.trails.chain
Reputation

Per-verb reliability + agent track-record

  • agent.reliability.scoreboard
  • agent.reputation.verb
  • agent.reliability.needs_attention
Macro / Telemetry

Saved verb-chains + agent self-monitoring

  • agent.macros.execute
  • agent.macros.register
  • agent.telemetry.status

The reasoning loop these shapes support

observe explain preview commit (transaction / receipt) revert if needed

An agent invoking a write verb gets back an audit_id. Pass that id to audit.revert and the action is undone (whitelisted handlers in the backend; unsupported types return a structured refusal with a machine-readable reason). Same architecture across every registered verb. This is what the labs (Anthropic / OpenAI / Cursor / Cognition) are looking for: a safe-action substrate where every write is auditable and (where applicable) reversible.

Write safety: view → preview → approve → publish → roll back

You control what an AI is allowed to do without a human. Every write is classified reversible or irreversible — and an irreversible action (a sent email/SMS, a charge) always says so up front and is never presented as undoable. Connections start read-only; granting write is an explicit opt-in on the consent screen.

Role-gated by default. A role without publish rights can propose changes but not commit them — the change parks in a review queue for an owner/admin to approve. Configure who can propose / approve / publish / roll back per company with roles_set. Review and act on the queue from the assistant (changes_list, changes_approve, changes_reject, changes_rollback) or from the Pending AI Changes screen in the dashboard — see every proposed diff, approve, or roll a published change back to its prior version.

One registry. Four sibling transports.

All verbs are declared once in services/agent_verb_manifest.py and auto-projected to four sibling transports. A backend CI test (test_sibling_transport_parity.py) enforces it: a verb visible on one is visible on all four unless the verb explicitly omits a surface. Different AI runtimes hit different transports; the shape contract stays the same.

CLI

solid verbs invoke

For AI agents in shells: Claude Code, Codex, Cursor terminal. npm i -g @solidnumber/cli

MCP

mcp/connector (hosted)

For AI assistants + editors: Claude, ChatGPT, Claude Code, Cursor. api.solidnumber.com/mcp/connector

WebMCP

navigator.modelContext

For in-browser AI agents: Claude.ai web, Chrome agent mode. Per-tenant scoped on every Solid# subdomain. /docs/webmcp

UCP

/.well-known/ucp

For AI buyer-agents: Gemini AI Mode, ChatGPT shopping. RFC 9421 ES256 signed. /docs/ucp

Add a verb once → all four transports light up within 5 minutes of the backend manifest update. The hosted connector dispatches in-process against the live registry — nothing to install, nothing to republish. This is the "Phase 5 unifier" architecture — declare-once, bridge-everywhere.

LiveRemote connector

Connect your assistant — Claude, ChatGPT, or your editor

One hosted OAuth endpoint turns any MCP-capable assistant into an operator for one company. Add it as a custom connector, sign in, and pick the company to bind — the connection only ever acts on that tenant. 85 curated tools: the 54 read-only tools carry MCP read-only annotations, so clients like Claude run them with fewer approval prompts; the 31 write tools preview first and commit on confirm, and money actions require a human-typed approval phrase. Ask how_to in-session and the connector explains itself; run connection_self_check for a one-call diagnostic of auth, company binding, and tool health.

Connector URL — paste this into any custom-connector field
https://api.solidnumber.com/mcp/connector

Claude (claude.ai)

  1. Settings → Connectors → Add custom connector
  2. Paste the connector URL above
  3. Authorize (OAuth) and pick your company
  4. Grant read or read+write
Open Claude connectors

ChatGPT

  1. Settings → Connectors (custom)
  2. Paste the connector URL above
  3. Authorize (OAuth) and pick your company
  4. Same verbs, same receipts as Claude
Open ChatGPT

Claude Code / Cursor

  1. Add the connector (Step 2 below), or
  2. solid context --claude for full context
  3. solid ai launches Claude/Gemini/Grok
Editor setup

Any MCP client works the same way — the connector implements the full OAuth handshake (RFC 7591 dynamic registration, RFC 8414/9728 metadata, PKCE) discoverable at /.well-known/oauth-protected-resource. For an in-browser agent on a Solid# tenant subdomain, WebMCP needs no setup at all.

1

Get your API key

Sign up for free developer access. Your login is what the connector's OAuth binds to — plus you get a sandbox company and scoped API keys for the REST API and CLI.

Or use the CLI
npx @solidnumber/cli auth login
2

Connect your editor

Same connector URL everywhere. OAuth opens in the browser on first use — sign in, pick the company to bind, grant read or read+write. No API keys to paste, nothing to install, always the live tool surface.

Claude Code
# One command — OAuth opens in the browser, pick your company
claude mcp add --transport http solidnumber https://api.solidnumber.com/mcp/connector
Cursor / Windsurf
{
  "mcpServers": {
    "solidnumber": {
      "url": "https://api.solidnumber.com/mcp/connector"
    }
  }
}
Any MCP client (streamable HTTP + OAuth)
{
  "mcpServers": {
    "solidnumber": {
      "type": "http",
      "url": "https://api.solidnumber.com/mcp/connector"
    }
  }
}
One MCP surface

The hosted connector (api.solidnumber.com/mcp/connector) is Solid#'s MCP surface of record — 85 curated tools that dispatch in-process with real tenant context. It replaces the earlier raw API-mirror stdio server, which is retired. For raw-endpoint or engineering work, use the REST API with a bearer token or the solid CLI instead.

3

Start building

Just talk to your assistant. The AI already understands every tool.

"How's the business — what should I do today?"

get_business_briefingTasks, deals, calls, revenue + ranked recommended actions in one call

"Text Maria a payment link for $299"

create_payment_link → send_payment_linkHosted checkout link, sent by SMS — write tools confirm first

"Tell me everything about John Peterson"

get_customer_360Contact, deals, appointments, payments, and calls for one person

"Why is this connection acting up?"

connection_self_checkOne-call diagnostic — auth, company binding, tool health

"Generate a 5-page website for a plumber"

generate_websiteBuilds pages from the industry KB template as drafts

85 Curated Tools, 6 Categories

How It Works

Your Assistant

Claude, ChatGPT, Claude Code, or Cursor. You type natural language. The AI picks the right MCP tool automatically.

Hosted Connector

85 curated tools (54 read-only + 31 write) dispatching in-process against the 631-verb registry. OAuth auth, bound to one company per connection.

Business Data

550 tables (446 with RLS), 14 trained AI agents + 116 background workers, CRM, payments, calendar, KB. Every tool operates on real data with full tenant isolation.

Three Transports, One Vocabulary

Solid# exposes the same JSON-LD verb registry over three transports. Pick the one that matches your runtime — the metadata and IRIs are identical.

MCP connector

85 tools

This page. Add api.solidnumber.com/mcp/connector to any MCP client. OAuth, bound to one company, curated operator surface.

For operator AI assistants

WebMCP

455 verbs

Every Solid# page registers its verbs via navigator.modelContext. 5 surfaces (public / dashboard / tenant-site / writes). W3C draft. docs.

For in-browser AI agents

UCP

capabilities

Signed wire format for buyer-agents to discover and transact across Solid# tenants. RFC 9421 + AP2 payments. docs.

For external buyer agents

Source of truth: services/webmcp/tool_registry.py — one registry, three transports, identical IRIs at https://api.solidnumber.com/webmcp/tools/{name}.

Who Uses This

Freelance Developers

Build client businesses from your editor. Pull data, push changes, manage AI agents — all without leaving VS Code.

Free developer access

Agencies

Manage 50 client businesses from one MCP connection. Switch companies, deploy changes, monitor health — all from your terminal.

Multi-company support built in

AI Agent Builders

Build custom AI agents that use MCP tools to execute real business operations. Not a wrapper — closed-loop execution.

AI agents as reference implementations

Configuration

The connector itself needs zero configuration — OAuth handles identity and company binding. Driving the REST API or the solid CLI directly instead? These environment variables apply:

VariablePurposeDefault
SOLID_API_KEYBearer token (scope-limited API key)required
SOLID_API_URLBackend base URLhttps://api.solidnumber.com
BACKEND_URLAlias for SOLID_API_URL (legacy)
API_KEYAlias for SOLID_API_KEY (legacy)
Get your API key via the CLI

The fastest way to get a scoped key without leaving the terminal — reuse it in your MCP config:

# install via brew (mac), scoop (windows), or npm (any)
brew install solidnumber/tap/cli
solid auth login
solid auth token create -n "MCP" -s kb:read,pages:write,agents:converse
# Paste the sk_solid_... value into SOLID_API_KEY in your MCP config

Troubleshooting

\u203ANot sure what's wrong? Run connection_self_check first
Ask your assistant to run connection_self_check — one call reports auth status, which company the connection is bound to, the granted access level (read vs read+write), and tool health. It turns most of the questions below into a single answer.
\u203AConnector shows as disconnected or every call returns an auth error
The OAuth grant expired or was revoked. Remove and re-add the connector (Settings → Connectors), sign in again, and pick the company to bind. No keys to rotate — the browser flow is the whole fix.
\u203AWrite tools are refused
The connection was granted read-only. Re-authorize and opt in to write on the consent screen. Write tools always preview and commit on confirm; money actions additionally require a typed approval phrase.
\u203AClaude asks for approval on every single call
It shouldn't for reads — the 54 read-only tools carry MCP read-only annotations, which Claude uses to run them with fewer approval prompts. Write tools (31) intentionally keep the confirmation step.
\u203AThe connection acts on the wrong company
Each connection is bound to exactly one company at OAuth time. Run connection_self_check to see the binding, then re-add the connector and pick the right company. One assistant can hold multiple connections for multiple companies.
\u203ANeed a raw endpoint the curated tools don't cover
The connector is a curated operator surface, not an API mirror. For raw-endpoint or engineering work, use the REST API with a bearer token (solid keys create) or the solid CLI — solid agent dispatch <verb> reaches all 600 registry verbs.

Discovery Surface

Solid# ships every machine-readable manifest an AI agent expects, per-tenant. Every `@id IRI is stable across the public site, the tenant CLI payload, MCP tool outputs, and on-disk `.claude/solid-context.jsonld. One graph, one identifier space.

/.well-known/agent.json

Agent2Agent (A2A) protocol manifest — capabilities, skills, auth schemes.

/.well-known/ai-plugin.json

OpenAI plugin manifest (+ anthropic-ai-plugin.json variant).

/.well-known/mcp.json

MCP discovery manifest — connector URL, tool catalogue, auth schemes.

/.well-known/openapi.json

1,944-endpoint OpenAPI spec.

/llms.txt + /llms-full.txt

Hand-curated platform summary for LLM crawlers. Per-tenant on every tenant host.

/ai.txt

AI-crawler policy + endpoint directory (supported bots, rate limits, contact).

GET /api/v1/cli/context?format=jsonld

Schema.org + solid:* typed graph of the tenant — walkable via solid graph.

/sitemap.xml + robots.txt

497 URLs; explicit allow rules for GPTBot / Google-Extended / Claude-Web / Perplexity / Applebot.

Schema.org reuse where it fits (Organization, Service, Product, Article, WebPage, Offer). Solid#-specific types under solid:* (Agent, Chain, KnowledgeBaseEntry, Tier, Industry, Shelf, MCPTool). Contract-stable IRIs.

Security

Tenant Isolation

Every API call scoped to your company_id. RLS on 446 of 550 tables (100% of tenant-scoped tables). You can never see another company's data.

Scoped API Keys

26 granular scopes. Give a key only kb:read access, or full write. Keys are SHA-256 hashed at rest.

Vibe Safety

Every vibe action is reversible. No deletions, always rollback. Preview before apply.

Audit Trail

Every MCP tool call logged with who, what, when, and which company. Full accountability.

Your AI assistant already speaks MCP

One connector URL. 85 curated tools — 54 read-only + 31 consent-gated writes. Free developer access. Start managing real businesses from Claude, ChatGPT, or your editor.

SolidNumber — AI That Answers Calls, Books Jobs & Runs Your Business