npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@solidnumber/solid-verbs

v0.1.0

Published

The verb taxonomy for AI agents acting on real businesses — 12 shapes, manifest format, receipt contract, consent gates.

Downloads

164

Readme

solid-verbs

The verb taxonomy for AI agents acting on real businesses.

solid-verbs is an open specification for how AI agents should structure actions against business systems — safely, auditably, and reversibly. It defines 12 verb shapes, a manifest format, a receipt contract, and transport bindings for CLI, MCP, WebMCP, and UCP.

This is the spec. Solid# is the reference implementation.

Why this exists

Every MCP server today is CRUD in tool-calling wrapping paper. An agent gets create_invoice, update_contact, delete_record — raw database mutations with no structure for reasoning.

Agents don't think in CRUD. They think in loops:

observe → explain → preview → commit → verify → (rollback if wrong)

solid-verbs codifies that loop as a type system. Each verb declares its shape — what kind of reasoning step it represents — so the agent knows what to do with the result before it calls the tool.

The 12 shapes

| Shape | What it does | Agent uses it to... | |---|---|---| | aggregate | Collapse N sub-queries into one tenant-scoped read | Build situational awareness without N round-trips | | explain | Return the causal chain that produced a state | Understand why something is the way it is | | preview | Dry-run a write, return the projected impact | Decide whether to commit without side effects | | suggest | Ranked next-actions with confidence envelope | Pick the highest-value move | | transaction | ACID grouping over multi-step writes | Batch mutations with rollback on failure | | receipt | Attestation on a side-effecting write | Prove an action happened (audit trail) | | revert | Single-action undo against an audit row | Roll back a mistake | | subscribe | Cursor-polling observe stream | Watch for changes without websockets | | discovery | Introspect the verb manifest itself | Learn what tools are available | | trail | Query the audit log | Trace what happened and when | | reputation | Reliability scoreboard for verbs/agents | Pick tools that actually work | | macro | Saved multi-verb chains promoted to one-click | Replay proven sequences |

Manifest format

Every verb is declared as a VerbRecord:

{
  "name": "payments.preview_refund_impact",
  "description": "Project the impact of refunding a transaction WITHOUT executing it.",
  "shape": "preview",
  "side_effects": "read",
  "input_schema": {
    "type": "object",
    "properties": {
      "company_id": { "type": "integer", "minimum": 1 },
      "transaction_id": { "type": "integer", "minimum": 1 },
      "refund_amount_cents": { "type": "integer", "minimum": 1, "nullable": true }
    },
    "required": ["company_id", "transaction_id"]
  },
  "output_schema": { "type": "object", "additionalProperties": true },
  "surfaces": ["http", "mcp_stdio", "webmcp", "ucp", "cli"],
  "requires_consent": false,
  "tier_floor": "starter"
}

Fields

| Field | Type | Description | |---|---|---| | name | string | Dot-notation namespace. {domain}.{verb} for agent-attraction; snake_case for ADA dispatcher verbs. | | description | string | What the verb does — written for an LLM, not a human. | | shape | enum | One of the 12 shapes above. | | side_effects | enum | read (safe to call freely), write (mutates state), mixed (writes but reverses cleanly). | | input_schema | JSON Schema | OpenAI-compatible tool parameter schema. company_id is injected by the runtime, never by the LLM. | | output_schema | JSON Schema | Optional. Describes the response shape. | | surfaces | string[] | Which transports project this verb: http, mcp_stdio, webmcp, ucp, cli. | | requires_consent | boolean | Whether the runtime gates this verb behind human approval. | | tier_floor | string | Minimum subscription tier required to call this verb. |

Receipt contract

Every write verb returns a receipt:

{
  "status": "completed",
  "audit_id": 4242,
  "rollback_handle": "infra:resize:1:s-2vcpu-4gb",
  "idempotency_key": "4dbfa11cbfc149fc"
}
  • audit_id — pass to audit.revert to undo the action.
  • rollback_handle — opaque token the runtime uses to replay the inverse.
  • idempotency_key — replay-safe; calling the same verb with the same key is a no-op.

The reasoning loop with receipts:

aggregate → explain → preview → commit (receipt + audit_id)
                                         │
                                         ↓ if wrong
                                    revert (audit_id)

Consent gates

Write verbs are classified by risk:

| Class | Gate | Min role | Example | |---|---|---|---| | READ | none | read_only | crm_contacts_search | | WRITE_REVERSIBLE | confirmation click | employee | crm_contact_update | | WRITE_FINANCIAL | typed phrase + admin | admin | charge_invoice | | IRREVERSIBLE | typed phrase + owner | owner | gdpr_delete_contact | | BLOCKED | never | — | subscription_cancel_immediate |

Typed-phrase gates require the human to type a specific string that includes the action details (e.g., "CHARGE $50.00 to invoice #4242"). The phrase is bound into a nonce signature — tampering between dispatch and confirm is cryptographically blocked.

Transport bindings

One registry, four projections:

                    UNIFIED_VERB_REGISTRY
                            │
     ┌──────────────┬───────┴──────────┬──────────────┐
    CLI         MCP stdio          WebMCP            UCP
 shell agent   Claude Desktop    in-browser     buyer-agent
               Cursor/Windsurf   Chrome agent   Gemini/ChatGPT

Adding a verb to the registry lights up all four transports. Parity is enforced by integration tests — a verb visible on one transport is visible on all four unless it explicitly opts out via surfaces.

| Transport | Discovery | Auth | |---|---|---| | CLI | solid verbs list --json | API key or browser login | | MCP stdio | tools/list MCP method | SOLID_API_KEY env var | | WebMCP | navigator.modelContext | Session cookie (in-browser) | | UCP | /.well-known/ucp | RFC 9421 ES256 signatures |

Reference implementation

Solid# is the reference implementation:

  • 316 verbs across 36 categories (CRM, payments, voice, scheduling, CMS, inventory, infrastructure, subscriptions, GDPR, email, analytics, social, integrations, agents, KB, workflows, audit, team, predict, and more).
  • 4 transports shipping in production: @solidnumber/cli, @solidnumber/mcp, WebMCP (in-browser), UCP.
  • Receipt infrastructure with typed-phrase consent gates, nonce-signed confirmation, and append-only audit trail.
  • Live verb manifest: GET https://api.solidnumber.com/api/v1/agent/verbs

Spec documents

  • Shapes — detailed definition of each verb shape with examples
  • Manifest — VerbRecord format and registration semantics
  • Transport bindings — how shapes project to CLI / MCP / WebMCP / UCP
  • Receipts — receipt contract, rollback handles, idempotency
  • Consent — typed-phrase gates, role floors, verb classification

JSON Schema

Machine-readable schemas for validators and code generators:

Who this is for

  • Agent runtime builders (Anthropic, OpenAI, Google, Cohere) — implement verb shapes in your tool-calling APIs so agents reason in structured loops instead of raw CRUD.
  • SaaS platforms — adopt the manifest format so your tools are discoverable and interoperable across transports.
  • AI agent developers — build against typed shapes instead of guessing what a tool returns.
  • Compliance teams — use the receipt + consent spec to audit what AI agents did and why.

License

MIT. Use it, implement it, extend it.

The spec is open. The Solid# runtime is BSL-1.1 (converts to Apache 2.0 on 2030-04-14).


Created by Adam Campbell — Solid Number Inc.