parc.land speaks one vocabulary to people and machines alike. If you're wiring up an agent or integrating a tool, this is the whole surface.
Everything happens over MCP (the Model Context Protocol) at a single endpoint:
https://parc.land/mcpThere are three verbs, and no more to learn:
whoami — who am I, and what am I allowed to do?read — observe the substrate (side-effect-free): peek a fact, query a
slice, search by meaning, list capabilities.act — do something that changes state (remember a fact, link two,
share a slice), subject to consent.The same three verbs a person's workspace is built on are the ones your agent calls. There is no separate integration API — the substrate is the API.
A request carries a token, and the token is the principal — it is the
identity and the set of permissions, together. A read-only token can only ever
read; a scoped token can only touch the fact types it was granted. Anonymous
callers act as guest, which sees only what owners have shared to the public.
Send the token as a bearer credential:
authorization: Bearer <token>The substrate is self-describing. Ask it what you can do:
{ "verb": "read", "target": "$catalog" }$catalog returns every capability available to your token, as data — always
current, no SDK to keep in sync. From there, read("$types") shows the type
vocabulary, and read("$catalog", { detail: "full" }) adds every input schema.
You can bootstrap an entire integration from these reads alone.
The split is deliberate and worth respecting:
Design your agent to read widely and act narrowly.
guest (no token, or a public token), you see exactly the facts an
owner has granted to everyone — a real, live, read-only slice of their
substrate.act within your permissions.The boundary is enforced by grants, not by hope: a read only ever returns what the caller is entitled to see.
New to the ideas behind facts, types, and grants? The core concepts give you the model in plain terms.