Developer CLI
v2.11.12Built for AI agentsGive your AI the keys.
CLI · MCP · WebMCP · UCP — same verbs, same receipts, any AI model.
npm i -g @solidnumber/cliGive your AI the keys.
Same verbs work everywhere — the terminal, Claude Desktop, in-browser agents, buyer-agent protocols. Your AI books appointments, processes payments, builds websites, manages inventory, and runs your CRM. Every action is versioned, auditable, and reversible. Switch between Claude, Grok, and GPT without losing context. One verb registry. Every AI can use it.
solid agent dispatch <verb> from the terminal. claude mcp add solidnumber for Claude Desktop. navigator.modelContext for in-browser agents. /.well-known/ucp for buyer-agents. Same verbs. Same receipts. Any AI.
solid verbs invokeFor AI agents in shells (Claude Code, Codex, Cursor terminal) + humans.
@solidnumber/mcpFor Claude Desktop / Cursor / Cline / Codex / Windsurf. claude mcp add solidnumber
navigator.modelContextFor in-browser agents. First SaaS to ship across every tenant subdomain.
/.well-known/ucpFor AI buyer-agents (Gemini AI Mode, ChatGPT shopping). RFC 9421 signed.
The reasoning loop these verbs support
observe (aggregate) → explain → preview (dry-run) → commit (transaction / receipt) → revert (undo). Every write returns an audit_id — pass it to solid agent dispatch audit.revert and the action is undone (whitelisted handlers; unsupported types refuse cleanly).
v2.11.12 — Sales Agent CLI
Tell an AI “run my sales team” and it has every verb it needs. 18 new sales verbs — intelligence, AI suggestions, and pipeline actions — wired to 5 agents across all 5 transports. 122 top-level commands, 827 verbs total.
Sales Agent — 18 verbs, 5 agents, AI + your KB
NewIntelligence
solid sales pipeline, prospects, sources, forecast, report, velocity, followup, win-rate
AI Suggestions
score, suggest, outreach, opportunities, compare — powered by your industry KB (54 templates)
Actions
qualify, advance, close, nurture, sequence — consent-gated, voice handoff built in
Wired to Jackson (sales), ADA (orchestrator), Emma (followup), Marcus (growth), and Devon (metrics). Every verb surfaces on CLI, MCP, WebMCP, UCP, and HTTP.
Predict-and-Act (TabPFN-v2)
Zero-shot tabular foundation model (Nature 2025). No per-tenant training, no cold-start. solid predict gives every tenant predictions on day 1. Devon auto-discovers new targets nightly.
Outbound voice + live translation
solid voice call / text dispatch ADA to make real calls and send SMS. solid voice translate toggles 13-language live translation per phone.
Q-Chain auditor verbs
solid qchain export / verify / audit-key — external auditors validate the tamper-evident agent-action chain offline. Every SHA-256, every Ed25519 signature, no Solid# access required.
Universal verb dispatch
solid agent dispatch <verb> calls any of the 408 agent-attraction verbs through one command. Declare once in the backend, auto-bridged to all 5 transports.
Quick Start — install + first day
Four commands to go from zero to managing your business in the terminal.
One command. Detects your OS, installs Node if missing, installs the CLI, opens the browser to log you in, wires Claude Code + shell completion. ~60 seconds.
curl -fsSL https://solidnumber.com/install.sh | shiwr -useb https://solidnumber.com/install.ps1 | iexAlready have brew? Skip the curl pipe and install through the package manager you already trust. Pulls in Node automatically as a dependency, gives you brew upgrade for free.
brew install solidnumber/tap/cliPair with solid setup --install-token ist_xxx from the dashboard for zero-browser auth — same magic-link flow as the curl path.
Already have scoop on Windows? Add our bucket and install in two commands. Pulls Node automatically as a dependency, gives you scoop update solid for free.
scoop bucket add solidnumber https://github.com/Solidnumber/scoop-bucket
scoop install solidnumber/solidwinget support is in the backlog — needs a self-contained Windows binary first. Scoop covers the Windows package-manager use case today.
Already logged in to the dashboard? The install-command page mints you a single-use ist_* token (5-min TTL), embeds it in your install command, and the CLI exchanges it for real auth in one paste. No browser-back, no second login. Token rotates on every refresh.
curl -fsSL https://solidnumber.com/install.sh | SOLID_INSTALL_TOKEN=ist_xxx sh$env:SOLID_INSTALL_TOKEN = 'ist_xxx'; iwr -useb https://solidnumber.com/install.ps1 | iexAlready have the CLI installed? solid setup --install-token ist_xxx --yes redeems a fresh token from the dashboard without reinstalling.
npm i -g @solidnumber/clisolid auth login
# Email: you@company.com
# Password: ********
# Logged in to Acme Corp (ID: 42)solid pull
# Pulling pages... 12 files
# Pulling KB entries... 48 files
# Pulling services... 8 files
# Saved to ./my-business/# Edit files in VS Code, Cursor, Vim, or any editor
solid push
# Changes: 2 pages updated, 1 KB entry created
# Push to Acme Corp? (y/n) y
# Pushed successfullyAgents Start Here
Every default favors a machine reader. Stable anchors, deterministic JSON, self-describing surface, structured error envelopes. If you're an AI agent reading this page, these are the eight things to know before issuing your first command.
solid schema verbs --jsonEvery verb, every option, every arg as JSON. Parse once, reason about the whole surface forever.
GET /openapi.json1,944 endpoints, fully-typed Pydantic schemas. Same spec that ships to npm.
GET /.well-known/mcp.jsonthe full verb surface plus platform tools. Bearer-token, tenant-scoped per company_id. Bearer-token, tenant-scoped per company_id. stdio transport.
solid graph --query "..."Offline SPARQL BGP, online SPARQL 1.1 (--server), N-Quads/Turtle dump. Schema.org + solid:* IRIs.
solid <anything> --jsoncode · status · message · hint · docs_url · request_id · scope · feature · upgrade_to. See JSON Envelope Spec below.
solid agent activity --jsonEvery agent-driven request carries X-Solid-Agent, X-Solid-Agent-Mode, X-Solid-Human-Initiator headers. Server-logged.
solid ai --sandboxEvery mutation intercepted + mocked. Your reasoning still works; no real state changes.
GET /.well-known/qchain.jsonTamper-evident agent-action chain. Offline SHA-256 + Ed25519 verification. No Solid# access needed.
--help examples are <id> placeholders — copy any command and run it as-is.Never run a stale version
Fetch /.well-known/cli-version.json at session start. No auth, no rate limit gate. Compare your installed version against latest; if below min_supported, refuse to run.
$ curl -s https://solidnumber.com/.well-known/cli-version.json | jq
{
"package": "@solidnumber/cli",
"latest": "2.11.9",
"latest_published_at": "2026-05-25",
"min_supported": "2.0.0",
"deprecated_below": "1.10.0",
"install": "npm i -g @solidnumber/cli",
"upgrade": "npm i -g @solidnumber/cli@latest",
"changelog": "https://solidnumber.com/docs/cli/changelog",
...
}Agent contract
- At session start: probe the URL. Cache the response ≤ 4 hours.
- If installed <
min_supported: refuse to issue mutations; surfaceupgradecommand to the operator. - If installed <
latest: read-only is fine; surface staleness in your status report. - If installed ≥
latest: proceed. - If probe fails: proceed with your installed version; warn the operator the probe is unreachable.
meta.cli_update on every JSON response · solid version --json as canonical local probe · typed cli_outdated error envelope when below min_supported. Until those ship, the static probe URL is the canonical source of truth.JSON Error Envelope
v2.0+ default. Every --json error response on every command. Same shape on the REST API, the CLI, and the MCP server. Stable across the entire 2.x line.
{
"error": {
"code": string, // NOT_FOUND, FORBIDDEN, RATE_LIMIT, ...
"status": number, // 404, 403, 429, ...
"message": string, // human prose, optional
"hint": string, // next-step suggestion
"docs_url": string, // deep link to /docs/cli#anchor
"request_id": string, // server-side correlation id
"scope": string?, // when gated: customer | developer | agency
"feature": string?, // when feature-gated
"upgrade_to": string? // when tier-gated: builder | professional | enterprise
}
}$ solid kb get 99 --json
{
"error": {
"code": "NOT_FOUND",
"status": 404,
"message": "KB entry 99 not found",
"hint": "Run \"solid kb list\" to see valid IDs",
"docs_url": "https://solidnumber.com/docs/cli#kb",
"request_id": "req_8f2a3c"
}
}
# Opt out (1.x prose shape):
$ SOLID_LEGACY_ERRORS=1 solid kb get 99 --json
Error: KB entry 99 not found
Hint: Run "solid kb list" to see valid IDsRelease history
v2.0 made structured JSON envelopes the default. v1.21 → v1.26 shipped the JSON-LD tenant graph with SPARQL 1.1 and the offline mutation queue. v1.10 introduced the 4-layer safety model so AI agents can drive the CLI without taking down customer data. The full deep-dive lives on its own page.
Global Flags
v2.11.12Every command inherits these flags. Set via CLI or environment variable — whichever is more convenient for your shell, script, or CI pipeline.
| Flag | Purpose | Env Var |
|---|---|---|
--dry-run | Preview every mutation, no server writes | SOLID_DRY_RUN=1 |
--json | JSON output (cascades to every subcommand) | SOLID_JSON=1 |
--format json|csv|tsv | List output format for scripting | — |
--sort-by <field> | Sort list output by any field | — |
--order asc|desc | Sort direction | — |
--output <file> | Write output to file (creates parent dirs) | — |
--token <token> | One-shot auth token (never persisted) | SOLID_API_KEY |
--timeout <seconds> | Per-request HTTP timeout (default 30s) | SOLID_TIMEOUT_MS |
--debug | Append method/URL/body context to every error | SOLID_DEBUG=1 |
--no-color | Disable ANSI colors (standard Unix convention) | NO_COLOR=1 |
--raw | Pipeline-clean output — no spinner, no decoration | — |
--no-spinner | Disable progress spinner | — |
-V, --version | Print CLI version | — |
--dry-run intercepts every write. Audit the plan before touching production.
--json, --format csv, and --raw make every command pipe-ready for jq, awk, or xargs.
SOLID_API_KEY env var or --token for headless auth. Never persisted to disk.
solid orders list --all --format csv --sort-by amount --order desc --output orders.csv
# Fetched 1,247 orders across 13 pages
# Saved to orders.csvCommand Reference
Graph (JSON-LD)
solid graphSummary — counts per @type (Company / Service / Product / Agent / KnowledgeBaseEntry / Chain / Webhook / ...)solid graph --list-typesEvery @type present in this tenant's JSON-LD graphsolid graph --type ServiceList every node of a given @type (bare "Service" or prefixed "schema:Service" / "solid:Agent")solid graph kb/42Subgraph centred on KB entry #42 — node + 1-hop neighbourssolid graph kb/42 --hops 2N-hop BFS from any short-form IRI (kb/<id>, service/<id>, tier/builder, shelf/400, ...)solid graph kb/42 --outDirected — only outbound edgessolid graph kb/42 --jsonMachine-readable JSON-LD subgraph (preserves @context)solid graph --offlineWalk .claude/solid-context.jsonld — no network, no auth requiredsolid graph --remoteForce API fetch, ignore any local .jsonldsolid graph --validateAssert every edge target resolves in @graph + per-@type required fields present; exit 1 on errorssolid graph --dump nquadsExport the graph as N-Quads — pipe into Fuseki, Neo4j, Blazegraph, GraphDB, Neptune. Works offline.solid graph --dump turtleExport the graph as Turtle (currently online-only; offline turtle is a future patch)solid graph --diff baseline.jsonldStructural diff between a baseline snapshot and current graph — exits 1 on any change for CI gatessolid graph --query "SELECT ?s WHERE { ?s a schema:Service }"Offline SPARQL BGP — joins, projections, prefixed names, list-valued predicates. No backend required.solid graph --query "..." --serverFull SPARQL 1.1 — OPTIONAL, FILTER, property paths, UNION, GROUP BY, ORDER BY, LIMIT. Routed to the backend.Pull / Push Workflow
Work on your business using any editor. Pull downloads JSON and Markdown files, you edit them locally, then push deploys the changes. A manifest tracks file-to-ID mappings so the CLI knows what to create vs. update.
CMS pages with layout, meta, and content blocks
Knowledge base with YAML frontmatter + content
Company info, website config, module flags
my-business/
├── pages/ # CMS pages
│ ├── home.json
│ ├── about.json
│ └── services.json
├── kb/ # Knowledge base (Markdown)
│ ├── welcome.md
│ ├── services-overview.md
│ └── faq.md
├── services/ # Service catalog (read-only)
│ └── consultation.json
├── solid.config.json # Company info + website settings
└── .solid/
└── manifest.json # Sync metadata (DO NOT EDIT)Push only creates and updates — it never deletes data remotely. Company isolation is enforced: the manifest locks to your company_id. Use --dry-run to preview before pushing.
AI Training
Train your AI agents directly from the terminal. Import docs, test conversations, and audit KB coverage.
Bulk import from Markdown files
solid train import ./company-docs/
# Scanning directory... 24 .md files found
# Importing FAQ entries... 24/24
# Done. 24 KB entries created.Chat with your agents to test training
solid train chat marcus
# Connected to Marcus (Marketing Director)
# Type your message (Ctrl+C to exit)
> What campaigns are running?
Marcus: You have 3 active campaigns:
1. Holiday Sale (email, 2,400 recipients)
2. New Year Promo (SMS, 800 recipients)
3. Referral Push (social, ongoing)Coverage dashboard
solid train status
# KB Coverage Dashboard
# ─────────────────────
# company_identity ████████████ 12 entries
# services ████████░░░░ 8 entries
# faq ██████████░░ 10 entries
# pricing ████░░░░░░░░ 4 entries ⚠ Low
# policies ██████░░░░░░ 6 entries
#
# Gap: pricing needs more entries for AI accuracyAgent Management
Your AI agents learn and improve over time. Inspect their soul (identity + config + learned patterns), review performance scores, track what they've learned, and coordinate multi-agent missions where ADA delegates tasks across your team.
Each agent's identity, configuration, learned patterns, and expertise — built from every interaction
5-criteria scoring after every interaction — tracks accuracy, helpfulness, and tool usage over time
Real-time tokens, latency, cost, revenue attribution, and ROI tracking per agent
View an agent's soul
solid agent soul sarah
#
# Sarah — Agent Soul
#
# ── Identity ────────────────
# Name Sarah
# Type customer_service
# Autonomy Level 4 / 5
#
# ── Performance ─────────────
# Accuracy ████████████░░░ 89%
# Helpfulness █████████████░░ 92%
# Tool Usage ██████████░░░░░ 78%
# Resolution ████████████░░░ 85%
#
# ── Learned Patterns ────────
# customer empathy, refund handling, scheduling
#
# ── 30d Stats ───────────────
# Conversations: 1,420 | Avg Score: 87/100Launch a multi-agent mission
solid agent mission "Create a Valentine's campaign for VIP customers" --execute
# ADA is planning the mission...
# Mission planned: m_8f2a3c
#
# ── Mission Steps ───────────
# ○ Step 1: Marcus — Query CRM for VIP segment, draft strategy
# ○ Step 2: Maya — Design template, write copy, schedule sends
#
# Executing mission...
# ✓ Mission complete — 2 steps executedAgent dashboard
solid agent dashboard
#
# Agent Dashboard
#
# ╭─ Overview ─────────────────────╮
# │ Total Agents: 48 │
# │ Active Tasks: 3 │
# │ 30d Tasks: 1,250 │
# │ Success Rate: 98.8% │
# │ Avg Response: 2.4s │
# ╰───────────────────────────────╯
#
# ── Telemetry ───────────────────
# Tokens: 1,245,000
# Est. Cost: $12.45
# Revenue: $8,420.00
# ROI: 676.5xMulti-Company & Agency Mode
Agencies and developers with access to multiple companies can switch between them instantly. The CLI adapts: single-company users get a simple login, multi-company users get a picker.
Business owner managing their own company. Single login.
Freelancer/employee building for 1–2 clients. Invited to companies.
Manages many companies. Creates new clients, switches between them.
# Create a new client company from a template
solid company create "Mike's Plumbing" --template plumber
# Company created (ID: 47) with plumber template (500+ KB entries)
# Send registration to the client — they get a branded referral email
solid company send-registration mike@mikesplumbing.com --name "Mike"
# Email sent with referral link. Mike onboards + pays on his own time.
# You get referral attribution automatically.
# Keep building while Mike sorts out payment
solid switch "Mike's Plumbing"
solid pull && code .
# Open in VS Code, edit pages/kb, then push
solid switch "Sarah's Salon"
# Switched to Sarah's Salon (ID: 22)solid doctor
Read-onlyRun before filing any bug. solid doctor hits 9 live backend endpoints against your authenticated company and reports status, HTTP code, and response time. Zero writes. Safe on production, safe in CI.
Solid# CLI Doctor
────────────────────────────────────────
● PASS auth 200 489ms /api/v1/auth/me
● PASS kb 200 487ms /api/v1/kb/company
● PASS pages 200 497ms /api/v1/cms/pages
● PASS sites 200 490ms /api/v1/sites
● PASS services 200 106ms /api/v1/services/catalog
● PASS orders 200 107ms /api/v1/orders/
● PASS crm contacts 200 111ms /api/v1/crm/contacts
● PASS leads 200 108ms /api/v1/crm/leads/stats
● PASS billing 200 67ms /api/v1/billing/overview
✓ 9 passed 2462ms total- \u2022 Before filing a support ticket (paste the output)
- \u2022 After switching companies
- \u2022 In CI as a smoke test (
exit 1on any failure) - \u2022 When "the CLI feels slow" — see exact per-endpoint latency
- \u2022
0\u2014 all probes passed - \u2022
1\u2014 one or more probes failed - \u2022
2\u2014 not authenticated (runsolid auth login)
Smart Typo Suggestions
StableWhen you mistype a command, the CLI ranks the nearest matches by prefix, substring, then Levenshtein distance — same UX as gh, cargo, and git.
✗ Unknown command: psh
Did you mean solid push? ✗ Unknown command: dcotor
Did you mean solid doctor? ✗ Unknown command: comapny
Did you mean one of these?
solid company
solid domains ✗ Unknown command: frobnicate
Run solid --help to see all commands.Shell Completion
Tab-completion scripts reflect the live command tree — every new command you build as a developer shows up automatically. No stale static scripts.
bash
solid completion bash > \
/etc/bash_completion.d/solidzsh
solid completion zsh > \
"${fpath[1]}/_solid"fish
solid completion fish > \
~/.config/fish/completions/solid.fishDon't know your shell path? Run solid completion install — it detects your shell, finds the right directory, and wires it up.
API Keys for CI/CD
Create scoped API keys for CI/CD pipelines, LLM agents, and automation scripts. Keys use the sk_solid_ prefix, are stored as SHA-256 hashes, and support fine-grained scopes.
solid auth token create \
-n "GitHub Actions" \
-s kb:read,pages:write \
-e 90
# Key: sk_solid_abc123...
# (Shown once — save immediately.)# 1. Env var (recommended)
export SOLID_API_KEY=sk_solid_abc123
solid push --yes
# 2. One-shot flag (never persisted)
solid push --yes --token sk_solid_abc123
# 3. Pipe (for secret managers)
cat /run/secrets/solid | solid auth login --stdinname: Deploy site to Solid#
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npm i -g @solidnumber/cli
- name: Smoke-test backend
run: solid doctor
- name: Push changes (dry-run on PR, real on main)
run: solid push --yes
env:
SOLID_API_KEY: ${{ secrets.SOLID_API_KEY }}Available Scopes
kb:readRead knowledge base entrieskb:writeCreate/update/delete KB entriespages:readRead CMS pagespages:writeCreate/update/publish pagesvibe:executeExecute vibe modificationstrain:readRead training datatrain:writeImport/modify training datacompany:readList linked companiescompany:switchSwitch active companycms:blog:readRead blog postscms:blog:writeCreate/update blog postscms:pages:readRead CMS page contentcms:pages:writeCreate/update CMS pagescontent:review:readRead content review pipelinecontent:review:writeApprove/reject content reviewsrag:retrieveRAG context retrievalagents:readList agents, view configs, get resumesagents:writeUpdate custom instructions, personality, settingsagents:dataView reflection history and performanceagents:converseStart/continue agent conversations (full context chain)flows:readList flows, get details, metricsflows:writeCreate, update, activate, pause, archive flowsbrand:readGet brand, CSS variables, voice context, auditbrand:writeCreate and update brand identitywidgets:readList widgets, get embed codes, metricswidgets:writeCreate, update, activate, pause widgetsTelemetry & Privacy
The CLI sends anonymous usage events so we know which commands people actually use. No business data, no KB content, no customer info. Opt out any time.
What we collect
- Command name (
pull,push, etc.) - CLI version + Node version + platform
- Anonymous machine ID (hash, not reversible)
- Success / failure + error class (no stack traces)
What we NEVER collect
- \u2717 KB entries, pages, or any business data
- \u2717 Customer info, contacts, orders
- \u2717 Auth tokens, API keys, passwords
- \u2717 File paths, directory contents, env vars
# One-off (this shell)
export SOLID_DISABLE_TELEMETRY=1
# Permanent (add to ~/.zshrc or ~/.bashrc)
echo 'export SOLID_DISABLE_TELEMETRY=1' >> ~/.zshrcConfiguration
Credentials and preferences live in ~/.solid/. You can override any setting via environment variable — env vars take precedence over the config file.
~/.solid/
├── config.json # active company, base URL, token
├── identity.json # anonymous machine ID for telemetry
└── cli_history.json # recent commands (for solid feedback context)SOLID_API_URL — backend base URLSOLID_API_KEY — auth tokenSOLID_TIMEOUT_MS — HTTP timeoutSOLID_DISABLE_TELEMETRY — opt out- 1. CLI flag (
--token) - 2. Environment variable (
SOLID_API_KEY) - 3. Config file (
~/.solid/config.json) - 4. Interactive prompt (if TTY)
52 Industry Templates
Clone a pre-built template to bootstrap a new company with 500+ KB entries, services, FAQs, and industry-specific AI training.
solid company create "Mike's Plumbing" --template plumber
# Creating company... done
# Applying plumber template:
# ✓ 500+ KB entries (services, FAQ, pricing, policies)
# ✓ Service catalog (leak repair, water heater, drain...)
# ✓ AI agent training (plumbing terminology, pricing rules)
# Company ready at ID: 47MCP Editor Integration
The Solid# MCP Server gives AI editors (Claude Code, Cursor, VS Code Copilot) direct access to the full agent verb surface. Your AI assistant can query customers, update inventory, send emails, and manage your business — all from your editor.
stdio (local development)
npx solid-mcp --stdioHTTP (cloud / production)
https://api.solidnumber.com/mcp/v1With MCP connected, ask your AI: “Show customers who spent over $1000 this month”, “Create a calendar event for tomorrow at 10am”, “Search the knowledge base for return policies”, or “Check Google Workspace connection status”. The AI uses MCP tools to execute real actions on your business.
Integrations
Full lifecycle management for third-party integrations: browse the catalog, create, validate, test, deploy, and rollback — all from the CLI.
solid integrations catalog # Browse available integrations
solid integrations generate # Scaffold a new integration
solid integrations test <id> # Run integration tests
solid integrations deploy <id> # Deploy to production
solid integrations health # Check all integration health
solid integrations logs <id> # View integration logsOpen-Core Model
Free & Open
- CLI binary & all commands
- Pull / Push file workflow
- SDK libraries (JS, Python, Ruby, PHP, Java, Go, .NET)
- Public REST API
- MCP Server (stdio & HTTP)
- Industry templates (52)
Platform (Subscription)
- SmartRouter (multi-model AI routing)
- CognitiveLimiter (AI cost control)
- AI agents (24/7 autonomous)
- the full agent verb surface via MCP
- Vibe modifications (natural language)
- Multi-tenant orchestration
- Agent soul, performance scoring, and persistent memory
- Multi-agent missions (ADA coordinates)
Start Building
v2.11.12 on npm · brew + scoop + magic-link installInstall the CLI, pull your business data, and start shipping from the terminal.