The consent & trust layer for AI agents
Zyton records the consent your users give in your app, checks it before an AI agent touches their data, and keeps an audit log of every allowed and blocked action.
Already have an account? Sign in
Works with MCP servers and LangChain. The SDK is open source and in developer preview.
Consent receipt
Revoked
- Agent
- Inbox Assistant
- Acting for
- Maya Chen
- May read
- Purpose
- Summarize the inbox
- Expires
- In 1 hour
- Token
- ct_9f3a…7e21
Activity
- 10:02read_inboxAllowed
- 10:04Maya revoked access
- 10:04read_inboxBlocked
Written to the audit loga90b3f…e17c
How an agent action is checked
The agent shows who it is
Every agent has an identity others can check (X.509-style certificates), tied to the person accountable for it, who can stop it at any time.
Your app records consent
A person agrees in your app, and your backend records a signed consent token that names the data, the purpose and how long it lasts. If they change their mind, you revoke it.
Every action is checked
Before a tool runs, Zyton checks the token. Expired, revoked or out-of-scope requests are refused, so the tool never runs.
Everything is recorded
Each allowed and blocked action is written to your organization's audit log, which your admins can read in the developer portal.
For developers
Wrap any agent tool so it runs only with an active, in-scope consent token. Revoked or expired tokens fail closed, and every decision goes to the audit log.
Install
npm install @zyton/pip// userId: your own id for the person; you recorded their consent
// with pip.consent.recordGrant() when they agreed in your app
import { PipClient } from '@zyton/pip';
import { withConsentGate } from '@zyton/pip/consent-gate';
const pip = new PipClient({ apiKey: process.env.PIP_API_KEY });
const { entityId } = await pip.authenticate(); // swaps the key for a short-lived token
const gate = { consent: pip.consent, actorEntityId: entityId!, audit: pip.createAuditWriter() };
// read_inbox runs only while the person's consent covers reading their email
const readInbox = withConsentGate(
gate,
{ toolName: 'read_inbox', subjectRef: userId, operation: 'read', dataCategories: ['email'] },
(folder: string) => fetchInbox(folder),
);
await readInbox('INBOX'); // allowed, and recorded
// after you revoke their grant: throws ConsentDeniedErrorBuilt on PIP, the Privacy Infrastructure Protocol. The docs cover the TypeScript SDK and the HTTP API.
Already have an account? Sign in
Plans and pricing
Compare plans in detailFree
$0per month
Build and test your agent integration.
Start freeNo card required
Team
$49per month
For agents running in production.
Enterprise
$199per month
For the highest volumes, with priority support.
One flat price per month, with no per-call charges. Every plan has a monthly usage cap.
Every account starts on Free. Upgrade to Team or Enterprise from billing in the developer portal.
Prices are in US dollars. Any tax is calculated at checkout from your billing country.