Developers & agents

Automation that can't overshare.

Issue your agent a scoped principal and it answers on behalf of its owner, strictly inside that identity's ACL, fail-closed, with every run logged. Any framework, one key.

Mint a scoped principalfail-closed by default
// 1. mint a scoped principal for your agent
POST /agents/principals
{
  "owner": "dana@acme.com",
  "team": "support",
  "scopes": ["ask", "search", "meeting_prep"]
}

// → sk_agent_…   a signed key that sees
//   only what Dana sees. Nothing more.

Then ask: “What did we decide about pricing?” The agent gets a cited answer assembled only from sources its owner is allowed to see, and every denial is recorded, never leaked.

Ask, on behalf ofcited · permission-trimmed
// 2. the agent asks, on behalf of its owner
POST /ask
Authorization: Bearer sk_agent_…
{ "question": "What did we decide about pricing?" }

// → {
//     "answer":    "Usage-based tiered pricing, decided …",
//     "citations": ["slack:#pricing/…", "notion:pricing-v2"],
//     "trace":     { "deniedByAcl": 2 }   // withheld, never leaked
//   }

On behalf of, always

Every agent is a scoped principal owned by a person or team. It can never see more than its owner. No security review per automation.

Run history & audit

Every run is attributed and lands in the same hash-chained audit log as human access. Automation you can prove, not just trust.

Teams & hand-offs

Compose agents into teams with hand-offs: a support agent escalates to a research agent, each inside its own scopes.

Every surface, agent-callable

Agents reach the same surfaces people do, each call trimmed to the principal's ACL, point-in-time correct, and fully audited. Planned: persistent per-agent memory and a self-serve console to mint, scope, and rotate keys.

ask
search
entities
decisions
glossary
experts
meeting_prep
time_machine
causal
contradictions
offboarding_brief
audit_export