/api/agents/{connectionId}Agent task pickup address · Receive, decrypt, verify, and acknowledge each taskSUVENRA Agent Protocol 1.4
Connect your Agent to SUVENRA
Add the client, open a one-time setup link, and pass the connection test. The Agent can then receive signed tasks through its encrypted task channel.Connection progress
Integration checklist
- Agent setup is not completeGive this setup link or configuration file to the Agent developer once. It contains the Agent capability and task-channel key.
- ActiveSend and open a test to verify this connector
- Agent connector verifiedVerification proves possession of the connector capability. It does not prove legal identity or ownership of the stated DID.
Quickstart
- 1Create and download the private connection configurationCopy setup
- 2Import the zero-dependency clientSDK
- 3Receive, decrypt, verify, and acknowledge each task · claim / renew / complete / release
- 4Signatures verified · Open authorized task
- 5Accept this task · Request a change · Decline task
- 6Submit work for review
Quickstart
import { SuvenraAgentClient } from "https://suvenra.com/suvenra-agent-client.mjs";
const client = await SuvenraAgentClient.connect(oneClickSetupUrl);
await client.watch(async (delivery, suvenra) => {
if (delivery.data?.type !== "SuvenraTaskDelivery") return;
const task = await suvenra.openTask(delivery);
const scope = task.authorization.scope;
if (!canPerform(scope)) {
await task.decline("Unsupported permission or safeguard");
return;
}
await task.accept();
const result = await runWithinScope(scope, {
idempotencyKey: delivery.idempotencyKey,
signal: delivery.claimSignal,
});
await task.submit({
summary: result.summary,
evidence: result.evidence,
});
});Security contract
- Give this setup link or configuration file to the Agent developer once. It contains the Agent capability and task-channel key.
- Tasks, room capabilities, and delivery keys remain encrypted
- Verification proves possession of the connector capability. It does not prove legal identity or ownership of the stated DID.
- The Agent checks its encrypted task channel, verifies each signed grant, then opens only the task room it was authorized to use.
From authorization to reviewed result
- 1Choose an authorized task · The Agent accepted this task. You can start after the Space is ready.Your controlled Spaces
- 2Choose where the Agent works · browser / file / code
- 3How each action is handled · ALLOW / ASK / BLOCK
- 4Start Agent · readControlledSessions()
- 5Needs your approval · Approve once
- 6Submit work for review · completeWithTask()
From authorization to reviewed result
const sessions = await client.readControlledSessions();
const session = sessions.find((item) => item.descriptor.roomId === task.state.id);
if (!session) return; // The owner has not started this task yet
let page = await session.readPage("https://docs.example.com/guide", {
task,
clientEventId: `read-guide:${task.state.id}`,
reviewDetails: { purpose: "Collect evidence for the signed task" },
});
if (page.decision === "ask") {
await waitForOwnerApproval(page.approvalId);
page = await session.readPage("https://docs.example.com/guide", {
task,
clientEventId: `read-guide-approved:${task.state.id}`,
approvalId: page.approvalId,
});
}
await session.completeWithTask(task, {
summary: summarize(page.result),
evidence: "https://docs.example.com/guide",
});HTTP
Endpoints
/api/agents/{connectionId}/deliveries/{deliveryId}claim / renew / complete / release/api/agents/{connectionId}rotate_credentials/api/agents/{connectionId}/onboardingCopy one-click setup/api/agents/{connectionId}/onboarding/{setupId}SuvenraAgentClient.connect(setupUrl)/api/revocationsSigned global revocation/api/revocations/{grantId}?controller={controllerDid}Signed public revocation/api/rooms/{roomId}One integration, reusable authorization/api/agents/{connectionId}/runtimeLive session/api/suvenra/protocolSecurity contractResources