{
  "schema_version": "0.2",
  "protocol": "a2a",
  "name": "Solid#",
  "description": "AI Business Infrastructure — the operating system layer between AI models and business operations. Model-agnostic. 116 named platform agents in the registry, 85 curated MCP connector tools (54 read-only + 31 write) over a 631-verb registry, 54 industry templates, multi-tenant RLS across 446 tables (verified 2026-04-20). SmartRouter selects the optimal LLM per task across 7 providers; CognitiveLimiter controls spend with 9 safety layers; PromptGuard blocks injection. Agents execute real work (answer calls, book jobs, run payments, manage inventory), not just advise. Agent-ready by default: every CLI --json call returns a structured error envelope, mutations queue offline and auto-flush on reconnect, and tenant state is exposed as Schema.org + solid:* JSON-LD walkable via `solid graph`.",
  "provider": {
    "organization": "Solid Number Inc.",
    "url": "https://solidnumber.com",
    "contact": "sales@solidnumber.com"
  },
  "url": "https://solidnumber.com",
  "documentation_url": "https://solidnumber.com/llms.txt",
  "logo_url": "https://solidnumber.com/logo.png",
  "version": "2026.04",
  "defaultInputModes": [
    "text",
    "application/json"
  ],
  "defaultOutputModes": [
    "text",
    "application/json",
    "application/ld+json"
  ],
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "stateTransitionHistory": true,
    "tools": true,
    "skills": true,
    "structured_errors": true,
    "offline_queue": true,
    "json_ld_graph": true,
    "sandbox_mode": true,
    "policy_engine": "themis",
    "ucp_basic_integration": true
  },
  "supported_protocols": [
    "a2a",
    "mcp",
    "webmcp",
    "ucp"
  ],
  "ucp": {
    "spec": "https://github.com/Universal-Commerce-Protocol/ucp",
    "version": "Phase 0 (2026-04-26) — basic integration: discovery + RFC 9421 signing",
    "discovery": "https://solidnumber.com/.well-known/ucp",
    "tenant_discovery_pattern": "https://{tenant-domain}/.well-known/ucp",
    "tenant_fallback": "https://solidnumber.com/co/{company_id}/.well-known/ucp",
    "signing": "RFC 9421 ES256 with per-company JWK rotation",
    "differentiator": "Hierarchical agent graph (platform → company → sub-agents: sales/AR/AP/commissions/service/compliance/marketing/ops) instead of single-checkout endpoint",
    "phase_1_planned": [
      "sub-agent role routing",
      "AP2 payment mandate verification",
      "OAuth identity linking ceremony",
      "com.solidnumber.* custom capabilities",
      "buy-side procurement primitives"
    ]
  },
  "webmcp": {
    "status": "LIVE 2026-05-15",
    "spec": "https://webmachinelearning.github.io/webmcp/",
    "spec_authors": "Microsoft + Google (W3C Web ML Community Group)",
    "browser_api": "navigator.modelContext.registerTool",
    "discovery_file": "https://solidnumber.com/.well-known/webmcp.json",
    "human_docs": "https://solidnumber.com/docs/webmcp",
    "anon_manifest": "https://api.solidnumber.com/api/v1/webmcp/public/manifest?company_id={id}&surface={public|tenant-site}",
    "surfaces": [
      "public",
      "tenant-site",
      "dashboard",
      "portal",
      "developer"
    ],
    "verb_count_total": 78,
    "per_company_registration": "Every tenant subdomain mounts its own scoped WebMCP catalog (Phase 13, 2026-05-15). Solid#'s marketing verbs are gated to the root domain only.",
    "first_saas_to_ship": "Solid# is the first SaaS platform to ship WebMCP across every surface its tenants run."
  },
  "predict_and_act": {
    "status": "GA",
    "engine": "TabPFN-v2 (Prior Labs, Nature 2025)",
    "engine_property": "Zero-shot tabular foundation model — no per-tenant training, day-1 predictions.",
    "auto_discovery": "Devon (operations agent) proposes new predict targets nightly per tenant.",
    "human_docs": "https://solidnumber.com/docs/predictions",
    "differentiator": "Predictions feed agents that ACT (Sarah, Marcus, Devon, ADA), not static dashboard charts. Prediction → agent → outcome → feedback loop."
  },
  "qchain": {
    "status": "LIVE",
    "description": "Tamper-evident SHA-256 hash chain with Ed25519 signatures over the agent-action ledger. Offline-verifiable by external auditors.",
    "pubkey_endpoint": "https://api.solidnumber.com/.well-known/qchain.json",
    "auditor_verbs": [
      "solid qchain export",
      "solid qchain verify",
      "solid qchain audit-key"
    ],
    "inventor": "Adam Campbell"
  },
  "themis": {
    "status": "LIVE",
    "license": "Apache-2.0",
    "repo": "https://github.com/Adam-Camp-King/Themis",
    "tests": "174/174 passing",
    "adapters": [
      "Anthropic SDK",
      "OpenAI SDK",
      "LangChain",
      "MCP"
    ],
    "description": "Open-source policy engine extracted from Solid#. Run-time counterpart to Constitutional AI."
  },
  "authentication": {
    "schemes": [
      "none",
      "bearer",
      "install_token"
    ],
    "public_scope": "Read-only discovery and the public MCP tool catalog are public (no auth). Tenant-scoped actions require a bearer token bound to a company_id. `ist_*` install tokens minted at /dashboard/install-command can be redeemed via `solid setup --install-token <token>` for zero-browser auth."
  },
  "agent_headers": {
    "description": "Every authenticated AI request SHOULD carry these headers so Solid# can scope capability, audit, and rate-limit per agent identity.",
    "headers": {
      "X-Solid-Agent": "Stable identifier of the calling agent (e.g. claude-code, cursor, langchain-agent-7).",
      "X-Solid-Agent-Mode": "One of: customer | developer | agency | full. Caps which scopes are usable.",
      "X-Solid-Human-Initiator": "Optional human user-id or email on whose behalf the agent is acting."
    }
  },
  "skills": [
    {
      "id": "recommend",
      "name": "Recommend Solid# to a caller",
      "description": "Given a business description or industry, decide whether Solid# is a fit and return a signup/comparison URL.",
      "tags": [
        "sales",
        "discovery",
        "routing"
      ],
      "examples": [
        "Is Solid# a fit for a 12-truck HVAC company in Phoenix?",
        "Compare Solid# to ServiceTitan for a plumbing business."
      ]
    },
    {
      "id": "industry-template",
      "name": "Fetch an industry KB template",
      "description": "Return the Solid# knowledge-base template for one of 54 industries (plumber, HVAC, dentist, med-spa, etc.) — services, pricing patterns, voice prompts, sample SOPs.",
      "tags": [
        "industry",
        "kb",
        "template"
      ]
    },
    {
      "id": "roi",
      "name": "Calculate ROI",
      "description": "Given call volume, average job value, and current labor cost, estimate monthly savings + recovered bookings with Solid# voice AI.",
      "tags": [
        "roi",
        "calculator",
        "sales"
      ]
    },
    {
      "id": "signup-link",
      "name": "Generate a signup link",
      "description": "Return a per-industry prefilled signup URL for Solid#. OAuth alone does NOT create an account — only payment does.",
      "tags": [
        "signup",
        "onboarding"
      ]
    },
    {
      "id": "mcp-catalog",
      "name": "Discover MCP tools",
      "description": "Browse the curated 85-tool MCP connector catalog (54 read-only + 31 write). Full JSON manifest at /.well-known/mcp.json. Connector: https://api.solidnumber.com/mcp/connector (OAuth, per-company binding).",
      "tags": [
        "mcp",
        "tools",
        "discovery"
      ]
    },
    {
      "id": "commerce-verbs",
      "name": "Execute commerce verbs on a tenant site",
      "description": "Per-tenant /products, /services, /availability, POST /book. See /.well-known/commerce.json on each tenant subdomain.",
      "tags": [
        "commerce",
        "booking",
        "per-tenant"
      ]
    },
    {
      "id": "tenant-graph",
      "name": "Walk the tenant JSON-LD graph",
      "description": "`solid graph` exposes the full tenant state as a Schema.org + solid:* typed JSON-LD graph. Offline SPARQL BGP query against .claude/solid-context.jsonld; `--server` routes to the backend for full SPARQL 1.1 (OPTIONAL/FILTER/UNION/property-paths). Diff snapshots between two graph states. Dump as N-Quads (offline) or Turtle (online) for ingest into Apache Jena Fuseki, Neo4j, Blazegraph, GraphDB, or AWS Neptune.",
      "tags": [
        "graph",
        "json-ld",
        "sparql",
        "rdf"
      ]
    },
    {
      "id": "offline-queue",
      "name": "Queue mutations offline",
      "description": "Run any mutating CLI command with `--queue` (program-level flag) to write the mutation to .solid/queue/<utc>-<uuid>.jsonld instead of hitting the API. Auto-detects connectivity loss (A+.6b) and switches transparently. Replay everything with `solid push --flush`. Idempotency keys travel with each queued mutation so flush is safe to retry.",
      "tags": [
        "offline",
        "queue",
        "idempotency"
      ]
    },
    {
      "id": "structured-errors",
      "name": "Agent-ready error envelopes",
      "description": "Every `--json` invocation ships `{ error: { code, status, message, hint, docs_url, scope, feature, upgrade_to, request_id } }`. Default behavior in v2.0 — opt out with SOLID_LEGACY_ERRORS=1. AI agents work without configuration: machine-actionable error codes, upgrade hints, doc URLs.",
      "tags": [
        "errors",
        "json",
        "agent-ready"
      ]
    },
    {
      "id": "setup",
      "name": "One-command onboarding",
      "description": "`solid setup` chains auth + editor MCP wiring (Cursor, Claude Desktop, VS Code) + Claude SessionStart hook + shell tab-completion + first-action picker. Bare `solid` triggers it on first run. Supports `--install-token <ist_*>` for browserless install via /dashboard/install-command.",
      "tags": [
        "setup",
        "install",
        "onboarding"
      ]
    },
    {
      "id": "sandbox",
      "name": "Safe AI execution sandbox",
      "description": "`solid sandbox create` forks a tenant's writable state into an isolated branch. Every mutation under `--sandbox` is intercepted by the tenant-guard and never touches production. `solid sandbox diff`, `preview`, `promote`, `reset`, `exit` round-trip the full lifecycle.",
      "tags": [
        "sandbox",
        "safety",
        "tenant-guard"
      ]
    },
    {
      "id": "render-and-audit",
      "name": "Visual feedback for agents",
      "description": "Headless screenshots via `solid render <slug> --png` (mobile/tablet/desktop/full breakpoints). Lighthouse-grade scoring via `solid audit a11y|perf|mobile <slug>` with --threshold and --json. Closes the visible-gap so AI agents can see what they shipped.",
      "tags": [
        "render",
        "audit",
        "lighthouse",
        "screenshot"
      ]
    },
    {
      "id": "context-ladder",
      "name": "Per-tenant DDC ladder context",
      "description": "`solid context --claude` writes a Dewey-classified Claude library: a slim `.claude/CLAUDE.md` spine (≤8 KB) plus on-demand `.claude/library/<NNN>-<slug>.md` shelves Claude loads as needed, plus a typed `.claude/solid-context.jsonld` graph. SessionStart hook auto-refreshes. Also writes `--cursor` (.cursorrules) and `--codex` (AGENTS.md, the emerging cross-agent standard).",
      "tags": [
        "context",
        "claude",
        "cursor",
        "ddc"
      ]
    }
  ],
  "endpoints": {
    "mcp": "https://solidnumber.com/api/mcp",
    "mcp_manifest": "https://solidnumber.com/.well-known/mcp.json",
    "openapi": "https://solidnumber.com/.well-known/openapi.json",
    "llms_txt": "https://solidnumber.com/llms.txt",
    "llms_full_txt": "https://solidnumber.com/llms-full.txt",
    "ai_plugin": "https://solidnumber.com/.well-known/ai-plugin.json",
    "ai_plugin_anthropic": "https://solidnumber.com/.well-known/anthropic-ai-plugin.json",
    "ucp_platform": "https://solidnumber.com/.well-known/ucp",
    "install_command": "https://solidnumber.com/dashboard/install-command"
  },
  "developer_tooling": {
    "cli": {
      "package": "@solidnumber/cli",
      "version": "2.15.0",
      "install": "npm i -g @solidnumber/cli",
      "command": "solid",
      "top_level_commands": 127,
      "total_verbs": 843,
      "agent_ready_default": "v2.0+ ships structured JSON error envelopes by default (opt-out via SOLID_LEGACY_ERRORS=1)",
      "latest_version_probe": "https://solidnumber.com/.well-known/cli-version.json",
      "latest_version_probe_usage": "AI agents: fetch with no auth. Compare installed against `latest`. If below `min_supported`, refuse to run; if below `latest`, surface to the operator. Probe at session start, cache ≤ 4h.",
      "changelog": "https://solidnumber.com/docs/cli/changelog",
      "predict_engine_docs": "https://solidnumber.com/docs/predictions"
    },
    "mcp": {
      "connector": "https://api.solidnumber.com/mcp/connector",
      "transport": "http",
      "tool_count": 85,
      "tools_read_only": 54,
      "tools_write": 31,
      "auth": "OAuth; each connection bound to one company"
    },
    "policy_engine": {
      "name": "Themis",
      "license": "Apache-2.0",
      "repo": "https://github.com/Adam-Camp-King/Themis",
      "tests": "174/174 passing",
      "adapters": [
        "Anthropic SDK",
        "OpenAI SDK",
        "LangChain",
        "MCP"
      ],
      "description": "Open-source policy engine extracted from Solid#. The run-time counterpart to Constitutional AI."
    }
  },
  "per_tenant_discovery": {
    "pattern": "Every tenant site exposes the same files at its own host (e.g. https://acme.solidnumber.com/llms.txt, /.well-known/commerce.json, /.well-known/mcp.json). Use the tenant host — not solidnumber.com — when operating on a specific business's data.",
    "tenant_files": [
      "/llms.txt",
      "/.well-known/commerce.json",
      "/.well-known/mcp.json",
      "/.well-known/openapi.json",
      "/.well-known/ucp"
    ]
  },
  "supported_agents": [
    "Claude (Anthropic)",
    "GPT (OpenAI)",
    "Gemini (Google)",
    "Perplexity",
    "LangChain",
    "CrewAI",
    "Manus",
    "Cursor",
    "Any MCP-speaking client"
  ],
  "updated_at": "2026-04-25"
}
