Appearance
The Agent Surface
AI agents are first-class, governed callers of the ontology — not a bypass around it. Manifest exposes the platform to agents over MCP (the Model Context Protocol), and the surface is deliberately thin.
Tools generated from the registry
The MCP toolset is generated from the published ontology: read tools per object type, action tools per action type, plus search and object-set tools. The surface holds no schema of its own — when a new version publishes, the tools regenerate. A tool that isn't in the ontology cannot exist; a tool the caller's policy doesn't permit isn't listed.
PDP-filtered listing, one dispatch path
- Listing is policy-filtered. An agent asking "what can I do?" sees only the tools its token's scopes and the PDP admit — discovery itself is governed.
- Dispatch is single-path. Every tool call routes to the same commands and queries the REST controllers send. The MCP layer owns no execution; an agent's create proposal is validated, guarded, reviewed, and audited exactly like a human's.
- Obligations apply. Row filters and masking shape what an agent reads; reason-required actions demand a reason argument from the agent just as the REST surface demands a header.
Object sets
Agents work over data at set granularity: an object set is a handle over a filtered slice of a type that can be filtered further, aggregated, and traversed along links without streaming rows into context. Large results answer as a reference envelope rather than inlined rows, keeping token budgets sane while the data stays on the platform.
Saved sets and set operations
Sets combine: union, intersect and subtract two sets of the same type (or interface) into a new one (CombineSets). For example, "new duplicate candidates minus those already reviewed."
A set can be saved under a name (SaveSet) and reloaded by anyone in the tenant (LoadSavedSet). What is saved is the set's definition, never its members. Loading re-evaluates it for whoever loads it, under their own permissions, against today's ontology.
A saved set's owner can switch on a monitor. The monitor re-evaluates the set on an interval and publishes the instances that entered or left it as manifest.object-set.objects-entered.v1 and objects-exited.v1 events. The full contract is in docs/saved-sets.md.