Skip to main content
Verb Spec@solidnumber/mcp

The verb taxonomy for AI agents
acting on real businesses

12 verb shapes. One manifest format. Receipt-backed writes with rollback. Consent gates that scale from “let the agent run” to “type the exact amount before I charge.” Projected through 4 transports — CLI, MCP, WebMCP, UCP — from a single registry.

12
Shapes
316
Verbs
4
Transports
36
Categories
Install the validator
npm install @solidnumber/mcp

Agents don’t think in CRUD

Every MCP server today is create_invoice, update_contact, delete_record — raw database mutations with no structure for reasoning. Agents think in loops:

↳ if wrong →

12 verb shapes

Each shape declares what kind of reasoning step the verb represents. The agent knows what to do with the result before it calls the tool.

aggregate

Collapse N sub-queries into one tenant-scoped read

Agent uses it to

Build situational awareness without N round-trips

Example verb
customer.full_context
Side effects
Safe to call freely

Every write verb returns a receipt

The receipt is the proof that an action happened, the handle to undo it, and the key to replay it safely.

audit_id

Pass to audit.revert to undo the action

rollback_handle

Opaque token encoding the inverse action

idempotency_key

Same key replays as a no-op — safe retries

Example receipt from infrastructure_resize
{
  "ok": true,
  "verb": "infrastructure_resize",
  "result": {
    "status": "resized",
    "previous_size": "SMALL",
    "new_size": "MEDIUM",
    "new_price_monthly_cents": 14400,
    "rollback_handle": "infra:resize:1:s-2vcpu-4gb"
  },
  "audit_id": 4242,
  "idempotency_key": "4dbfa11cbfc149fc"
}

Consent gates that scale with risk

Five verb classes, from “let the agent run” to “type the exact dollar amount before I charge.” Typed-phrase gates bind into HMAC nonce signatures — tampering between dispatch and confirm is cryptographically blocked.

READNonemin: read_onlycrm_contacts_search
WRITE_REVERSIBLEConfirmation clickmin: employeecrm_contact_update
WRITE_FINANCIALTyped phrasemin: admincharge_invoice
IRREVERSIBLETyped phrasemin: ownergdpr_delete_contact
BLOCKEDNevermin: subscription_cancel_immediate

One registry, four transports

Add a verb to the backend registry and it lights up across CLI, MCP, WebMCP, and UCP within 5 minutes. Parity is enforced by integration tests — no transport drifts.

CLI

Claude Code, shell-running agents, scripts

Installnpm i -g @solidnumber/cli
Discoversolid verbs list --json
Invokesolid agent dispatch <verb> --json

MCP stdio

Claude Desktop, Cursor, Windsurf, Cline

Installnpx @solidnumber/mcp
DiscoverMCP tools/list method
InvokeMCP tools/call method

WebMCP

Chrome agent mode, in-browser AI agents

InstallAutomatic — every Solid# page ships verbs
Discovernavigator.modelContext
InvokePOST /api/v1/webmcp/execute/{verb}

UCP

Gemini AI Mode, ChatGPT shopping agents

Install/.well-known/ucp discovery
DiscoverGET /.well-known/ucp
InvokeRFC 9421 ES256 signed requests

Start building

Validate verb records

TypeScript
import { validateVerbRecord } from '@solidnumber/mcp/validator'

const result = validateVerbRecord({
  name: 'payments.preview_refund_impact',
  description: 'Preview refund impact.',
  shape: 'preview',
  input_schema: { type: 'object', properties: {} },
})

console.log(result.valid)  // true
console.log(result.errors) // []

Hit the live manifest

Shell
# All verbs (no auth required)
curl https://api.solidnumber.com/api/v1/agent/verbs

# Filter by shape
curl ".../agent/verbs?shape=preview"

# Filter by transport
curl ".../agent/verbs?surface=mcp_stdio"

# Single verb schema
curl ".../agent/verbs/infrastructure_diagnose"

The spec is open. The runtime is real.

The verb spec is the contract. Solid# is the implementation — 478 verbs across 36 categories, 4 transports, receipt-backed ACID, deployed to production and serving real businesses.

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