Skip to main content
Docs
Solid# · agent surface reference

Verb Atlas

Every verb the platform exposes to an agent, filed at a coordinate, with what it costs to call and whether it can be rehearsed first. Read from the live manifest, not from a list anyone maintains by hand.

Why this exists
verbs
1468
nouns
181
writes · reads
841 · 625
need consent
854
Try

Ten classes hold the whole surface. Pick one to drill into its nouns, or search above to jump straight to a verb.

How the Atlas works

Six sections, each closed until you want it. The rules behind the coordinates, the doors a verb can be called through, and what an agent can rehearse before it commits.

Nouns · the address spaceReading a coordinateWhy no digit is ever an ordinal, why none is ever re-sorted, and why money has three.

A name has to be known before it can be used. A coordinate does not: the prefix is the query, so truncating it widens the scope with no filter flag to learn and no enum to memorise.

3_   Customers & CRM       class — the first digit
31   Customers & CRM → contact         division — the noun

solid verbs list 3     272 verbs · the whole class
solid verbs list 31    10 verbs · the contact neighbourhood

No digit is ever an ordinal. A digit counted inside its parent renumbers every later sibling the moment something is inserted — which destroys the one property that makes a coordinate worth caching. So every digit is allocated once, written down, and never moved; a verb’s identity stays its name and its coordinate locates the neighbourhood.

A curated class has three digits: class, domain, noun. Money is the first. One word there names several different things — a deposit can be what the processor paid into the bank (541) or what a customer paid up front (513); an invoice can be the business billing its customer (510) or Solid# billing the business (581) — so its nouns are placed by reading what each verb actually touches and whose money it is, not by how the verb is spelled. solid verbs list 5 is all money, 53 is taking payment, 531 is refunds. Every coordinate a class used before it was curated is retired, never reused, and redirects to where its verbs went.

Division digits are allocated once and never re-sorted. They used to be ranked by weight — the busiest noun in a class took digit 0, the next took 1. That read well, and it was the same defect the third digit was refused to prevent, one level up: measured on the live registry, adding a single verb renumbered other verbs’ coordinates for 57 of 116 nouns, and one extra integration verb moved 32 of them. It was also intermittent — a new payment verb moved nothing while a new brand verb moved eleven — so it looked stable right until an agent’s cached coordinate was silently wrong. A noun that has a digit now keeps it forever, and a new noun takes the next free digit in its class.

Overflow is reported, not absorbed. Ten division slots per class is a hard ceiling, and a class with an eleventh noun collapses it onto digit 9 — which is why a coordinate ending in 9 can be a crowd of unrelated verbs rather than an address. That is a curation debt, not a numbering problem: the fix is to merge two nouns or move one to a class that fits it, never to add a digit. The registry names the full classes rather than letting them stay quiet.

Class and division are curated, not counted. Outside a curated class, classification scans every segment of a name, namespace first, against a keyword table — so list_blog_posts files under blog rather than under listing, because listing is not a subject. Inside one, a verb is placed by the noun that claimed it, and a new verb nobody claimed fails the build.

The name “Atlas” is deliberate: Dewey Decimal Classification is an OCLC trademark, so the idea is borrowed and the name is not.

Verbs · who can reach themEvery platform, and what it can callWeb, iOS, Android and the CLI reach all of them. The published manifests carry fewer.

“Is this verb in the catalog” and “can my app call it” are different questions, and only the second one matters to somebody building. The surfaces a verb declares govern the published manifests — they do not govern the dispatch endpoint, which is the door the products themselves use.

1468Web dashboardPOST /api/v1/ada/cli-dispatch100%
1468iOS appsame dispatch endpoint, Bearer JWT100%
1468Android appsame dispatch endpoint, Bearer JWT100%
1468solid CLIsolid <noun> <verb>100%
1014External AI over MCPtools/list on the hosted connector69%
1009In-browser agent (WebMCP)navigator.modelContext69%
1009Buyer agent (UCP)capability catalog69%
2Anyone, unauthenticatedno tenant at all0%

The apps are not a special case, and that is the design. The web dashboard, the iOS app and the Android app all post to the same dispatch endpoint against the same verb registry the CLI and the MCP connector use. There are no bespoke mobile endpoints: a tap and an agent’s sentence are the same operation, audited the same way. A verb therefore reaches every product the moment it is registered, whatever its surfaces say, because that path resolves against the registry and does not consult them.

Verbs · the transportsThe doorsThe same capability offered through several transports, which do not carry the same set.

A verb is not one thing an agent calls. It is the same capability offered through several transports, and they do not carry the same set — so “it is in the catalog” and “I can call it from here” are different claims, and only one of them is answered by the total at the top of this page.

1468httpPOST /api/v1/agent/... — authenticated REST; a dotless verb routes through cli-dispatch instead100%
1463clisolid <noun> <verb> — the operator CLI, and the one door that carries the whole surface100%
1014mcp_stdioMCP tools/list — the hosted connector an outside agent speaks69%
1009webmcpnavigator.modelContext — in-browser, registered per page surface69%
1009ucpbuyer-agent catalog — capability roles a purchasing agent can request consent for69%
2publicunauthenticated — readable with no tenant at all0%

The CLI is the widest door because it can reach both halves of the registry: the 1199 dotted verbs that have a real REST route, and the 269 dotless ones that only cli-dispatch can resolve. MCP, WebMCP and UCP carry the dotted half. A verb missing from a door is not necessarily a defect — a destructive write is deliberately kept out of the browser — but it is always a fact a planner needs before it promises a customer something it cannot execute from where it is standing. 307 verbs carry a same_as link to their canonical twin, so the two names resolve to one capability rather than reading as two.

Do not confuse these with the marketing MCP. solidnumber.com/api/mcp answers an unauthenticated tools/list with a much smaller set that sells the platform to a stranger’s agent — pricing, comparisons, industry fit. It touches no tenant data and none of it is on this page.

Nouns · level 1Noun index181 nouns, with how many verbs each carries and how many of those write.

24 of them hold exactly one verb: the tail of the surface, and the honest picture of where the vocabulary is still thin. Every entry here is also a filter in the explorer above — pick a class, then a noun.

70 coordinatepage noun35·25w 35 verbs, 25 write

00nest13·6w
01flow8·7w
02module7·6w
03transaction6·5w
04blueprint5·0w
05chain5·4w
06console5·5w
07sandbox7·5w
08workflow8·4w
09ant6·4w
09app1·1w
09audit8·1w
09backup2·2w
09changes10·6w
09clarity1·1w
09code4·1w
09data2·2w
09deployment1·0w
09devops5·1w
09document4·4w
09errors1·0w
09event4·2w
09field3·2w
09flows14·10w
09history3·1w
09infrastructure8·4w
09performance3·0w
09relate3·2w
09setup2·2w
09staging6·2w
09transactions2·0w
09ucp4·1w
09validation10·1w
10agent45·19w
11ai15·11w
12stitch8·3w
13ada42·17w
14llm7·2w
15playbook4·1w
16insights3·0w
17capability2·2w
18devon3·0w
19mission4·4w
19predict10·0w
20team14·10w
22company6·3w
23gdpr5·5w
25security2·2w
26teams2·2w
27key2·2w
28oauth2·2w
29roles6·0w
29staff22·16w
29user8·8w
30sales26·7w
31contact10·8w
32survey7·4w
33deal12·5w
34review9·4w
35appointment45·34w
360estimate19·16w
361estimate_draft6·4w
362job5·2w
37crm56·31w
38healthcare48·34w
39advocacy1·0w
39appointments1·0w
39customer2·0w
39deals6·4w
39lead1·0w
39quiz1·0w
39reminder7·5w
39request1·1w
39reviews1·0w
39schedule3·3w
39surveys5·2w
40serialize23·12w
41pricing1·0w
42order14·8w
43inventory13·6w
45product3·2w
450catalog_item9·6w
46marketplace5·5w
47ecommerce3·3w
49cart2·2w
49checkout1·0w
49fulfillment2·1w
49orders3·1w
49promotion2·2w
500books3·0w
502accounting_connection11·7w
510invoice12·6w
511invoice_payment6·6w
512customer_credit2·2w
520vendor1·0w
521expense15·11w
530payment5·3w
531refund4·3w
532card_on_file5·2w
533payment_link9·6w
534tip1·1w
536terminal3·3w
540merchant_account3·2w
541settlement3·2w
542dispute3·2w
550fee_program9·1w
551fee_law7·0w
552account_fee6·2w
553interchange2·0w
560promoter10·5w
562affiliate_commission4·1w
564commission_ledger2·0w
580plan10·8w
581platform_invoice5·2w
583platform_payment_method2·2w
584ai_usage3·2w
600phone_line17·13w
601external_number11·7w
602email_identity1·0w
610call_flow7·3w
611voice_engine2·2w
612comms_health1·0w
620voice_call15·4w
621call_report3·0w
630text_message3·3w
640email_message3·3w
641mailbox8·0w
642email_template6·2w
650chat_conversation1·1w
651chat_widget8·4w
660inbox_thread5·3w
670email_campaign4·4w
671comms_workflow7·5w
672communication_settings2·2w
680presence3·2w
681notification3·3w
690phone_charges3·0w
70page42·32w
71site20·12w
72form21·8w
73cms20·9w
74vibe7·3w
75design24·12w
76domain13·8w
77brand12·7w
78widget3·2w
79block2·0w
79draft1·0w
79edit1·1w
79forms1·0w
79landing4·4w
79pages1·0w
79ssl1·1w
79website2·2w
79widgets9·5w
80capture13·7w
81kb15·11w
82notes7·3w
83seo9·3w
84file5·4w
85blog17·16w
86knowledge4·2w
87storage3·2w
88faq2·1w
89asset11·5w
89grounding2·0w
90google86·66w
91integration9·3w
92social14·11w
93thumbtack5·4w
94webhook8·7w
95content20·14w
96gtm3·3w
97offer2·0w
98marketing24·9w
99analytics6·0w
99connect1·0w
99drip11·9w
99referral1·0w
99research7·2w
99tasks4·0w
Verbs · the twelve shapesWhat kind of thing a verb isEvery verb declares a shape. The shape says how an agent should reach for it.

A name says what a verb touches; a shape says what kind of move it is. An agent picking between two verbs that both mention invoices wants to know which one explains, which one previews and which one charges. Counts are live; the definitions are written down because the manifest publishes the label and not the meaning.

aggregateread
Collapse N sub-queries into one tenant-scoped read
Build situational awareness without N round-trips
customer.full_context
117
explainread
Return the causal chain that produced a state
Understand why something is the way it is before changing it
crm.explain_contact_state
26
previewread
Dry-run a write, return projected impact
Show the human what will happen before they confirm
level3.preview
34
suggestread
Ranked next-actions with a confidence envelope
Pick the highest-value move with calibrated confidence
deal.suggest_next_action
40
discoveryread
Introspect the verb manifest itself
Learn what tools are available at runtime
agent.manifest
404
subscriberead
Cursor-polling observe stream
Watch for changes without websockets
event.subscribe
4
trailread
Query the audit log
Trace what happened, when, and who did it
agent.trails__lookup
2
reputationread
Reliability scoreboard for verbs and agents
Pick tools that actually work — success rate and latency
agent.reliability__scoreboard
4
transactionwrite
Grouped, sealed multi-step writes
Batch mutations with rollback on failure
transaction.commit
358
receiptwrite
Attestation on a side-effecting write
Prove an action happened — audit trail plus a rollback handle
voice.call_outbound
464
revertwrite
Single-action undo against an audit row
Roll back a mistake — one audit id, one undo
audit.revert
8
macrowrite
Saved multi-verb chains promoted to one call
Replay proven sequences without re-orchestrating
agent.macros__execute
6

A thirteenth shape, telemetry, exists on the surface with a single verb behind it and has never been written up. It is listed here rather than quietly omitted.

Playground · the safety planeRehearsal without consequenceWhat an agent can try before it commits, and what an error owes it afterwards.

The third plane. Verbs say what can be done, nouns say where it lives, and the playground answers the question an agent must resolve before touching a real business: what happens if I do this, and can I try it first?

Preview comes before consent, never after

A dry run makes no mutation by definition, so it never needs consent. --confirm stays mandatory for the real call and only for the real call. A gate that demands consent to preview a write makes rehearsal impossible, which is the whole point of the plane.

A preview that validates nothing is worse than no preview

The dry run checks the payload against the verb’s own input_schema before echoing the request. A green sandbox followed by a red production is the one arrangement worse than having no sandbox at all — the agent learns to distrust the safe path and goes straight at the live one.

A preview never reports success

No success:true beside dry_run:true. An agent checking the conventional field must not read a rehearsal as a completed write.

The dry-run response

{"dry_run":true, "valid":false,
 "verb":"contact.create",
 "missing_required":["company_id"],
 "type_errors":[],
 "unknown_fields":[],
 "would":{"method":"POST","url":"/api/v1/agent/contact/create","body":{...}},
 "fix":"solid verbs example contact.create"}
exit 1 — a failing rehearsal fails loudly, and names the next command

One caveat the schema alone will not tell you: company_id appears in most required arrays and is injected from the caller’s auth. Validating required[] literally fails every dry run — replacing “always yes” with “always no”. Tenant-injected fields are satisfied before the check runs.

The recovery contract

The playground covers the attempt. This covers the miss — one rule generates it: an error must leave the agent one cheap call away from correct.

{"error":{
   "code":"VALIDATION_FAILED",   never SERVER_ERROR for a client fault
   "retryable":false,             true only for 408, 429 and 5xx
   "message":"contact_id: Field required",
   "fix":"solid verbs example contact.relationship_map"
}}

Every command named in a fix must exist. A hint that points at a command the CLI has never had costs an agent a full turn and teaches it to ignore the field.

What a cold agent does in its first minute

1. solid map                            the whole platform · cached once
2. solid find "<the task>"              intent → coordinate + name
3. solid verbs describe contact.create  exact call shape
4. solid verbs invoke ... --dry-run     validated, nothing sent
5. solid verbs invoke ... --confirm     committed
steps 1–3 are answerable from cache on every task after the first
Nouns · the proposed registryThe Register — who a verb is forProposed, not built. Rank and relabel by industry; never hide.

The Atlas says what a verb is; it does not say who it is for. That fact exists — every company carries an industry identity and a merchant category code — and it drives the money layer, but on the agent surface it reaches only a few places, and some of those hide verbs instead of ranking them.

ours     kb_series (~10)  ->  kb_sub_code (227)     stable forever · ours · the identity
theirs   mcc_class        ->  mcc (204)             ISO 18245 · not ours to renumber
join     kb_sub_code.mcc  +  assigned_on  +  source

Two spines, one join — not one tree. MCC is ambiguous by construction (227 of our codes collapse onto 204 MCCs) and it is revised by the card networks, so our industry identity cannot hang beneath it without inheriting their renumbering.

The payoff is not filtering. Only a small share of verbs are genuinely vertical, so hiding by industry buys a few percent. The prize is the rest: rendering the same verb in the tenant’s own vocabulary — appointment.book as “book a job” for a plumber and “schedule a patient visit” for a clinic — from a terminology service that is already live. Rank and relabel; never hide. A verb hidden by industry is a capability deleted the moment a tenant does something adjacent.

ProvenanceWhere these numbers come fromRead out of the running platform when the page was built. Nothing here is typed by hand.
FieldSource
verbs · schemas · facetsthe live manifest at GET https://api.solidnumber.com/api/v1/agent/verbs — unauthenticated metadata, 1468 records, re-read hourly
coordinate · nounpublished on every manifest record by the Atlas classifier, not derived in this page
transport · same_as1199 http · 269 dispatch · 307 twin links
output shapes867 of 1468 verbs publish one; the rest declare nothing rather than guess
pack-gated verbsexcluded from the manifest by design; the manifest does not report how many, so this page cannot say
infrastructurenot published here at all — this page describes the surface, never where it runs

Carried by some records, not all — an output shape on 867 of 1468 verbs, a twin link on 307. Partial is the state worth watching: a field nobody populates gets noticed, and a field everybody populates can be planned against. One that is there four times in five teaches an agent to expect it and then drops out without warning.

The one rule that keeps this page honest is the same one that governs the platform’s other counts — change the code, never the number. There is no snapshot behind this page to fall out of date.

Solid# verb surface · 1468 verbs · 181 nouns · 10 classes · read from the live manifest 30 September 2026 at 12:48 UTC
Atlas coordinates are never ordinals · pack-gated vocabularies excluded · no tenant data, no customer records and no infrastructure detail on this page