2AYE
Quickstart

Run your first
governed action.

Eight requests create a tenant, bind an agent and tool to signed intent, produce an explained ALLOW and DENY, and expose the resulting audit evidence.

  • 8 requests
  • 2 decisions
  • 1 evaluation endpoint
  1. 01

    Bootstrap an organization

    One anonymous call creates the tenant and returns the bearer token every other request carries. This is the only unauthenticated write on the API.

    Returns the tenant, the administrator, and tokens.accessToken. Export the token and the tenant id for the rest of the flow.

    curl -s -X POST "$VERID_BASE_URL/v1/organizations" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "Quickstart Verification",
        "administratorName": "Maren Adams"
      }'
  2. 02

    Register the agent

    The actor that will request the action. Agents are owned: the administrator who bootstrapped the tenant sponsors it.

    Returns the agent with its id. Keep it - the intent binds to this exact agent.

    curl -s -X POST "$VERID_BASE_URL/v1/agents" \
      -H "Authorization: Bearer $VERID_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "tenantId": "'$TENANT_ID'",
        "organizationId": "'$ORG_ID'",
        "administratorId": "'$ADMIN_ID'",
        "name": "Software Renewal Agent",
        "purpose": "Renew existing software subscriptions",
        "environment": "development"
      }'
  3. 03

    Register the protected tool

    The resource the agent wants to touch. Registering it gives policy something concrete to allow.

    Returns the tool keyed "datadog" - the only tool the intent will permit.

    curl -s -X POST "$VERID_BASE_URL/v1/tools" \
      -H "Authorization: Bearer $VERID_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "tenantId": "'$TENANT_ID'",
        "key": "datadog",
        "name": "Datadog Billing",
        "environment": "development"
      }'
  4. 04

    Draft the Living Intent

    The contract: what this agent may do, with which tool, for how much, with whom, and until when. Everything outside these constraints is refused by construction.

    Returns a draft intent. A draft authorizes nothing - it must be signed.

    curl -s -X POST "$VERID_BASE_URL/v1/intents" \
      -H "Authorization: Bearer $VERID_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "tenantId": "'$TENANT_ID'",
        "agentId": "'$AGENT_ID'",
        "name": "Datadog annual renewal",
        "purpose": "Renew the existing Datadog subscription",
        "constraints": {
          "maximumAmount": 15000,
          "currency": "USD",
          "allowedTools": ["datadog"],
          "allowedActions": ["renew"],
          "approvedCounterparties": ["Datadog"],
          "allowedEnvironments": ["development"],
          "notBefore": "'$(date -u -d "-1 minute" +%FT%TZ)'",
          "expiresAt": "'$(date -u -d "+30 days" +%FT%TZ)'",
          "delegationDepth": 0
        }
      }'
  5. 05

    Sign it

    A named human signs the contract. Signing freezes the version, computes its content hash, and activates it. From here, material change means a new version, never a rewrite.

    status becomes "Active" and contentHash is set. Material changes require a newly signed version.

    curl -s -X POST "$VERID_BASE_URL/v1/intents/$INTENT_ID/sign" \
      -H "Authorization: Bearer $VERID_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "tenantId": "'$TENANT_ID'",
        "signerId": "'$ADMIN_ID'",
        "signatureReference": "passkey:quickstart"
      }'
  6. 06

    Evaluate a compliant actionALLOW

    A $13,800 renewal to Datadog - inside every constraint. The frozen predicate envelope goes to the single canonical evaluation endpoint.

    decision: "ALLOW", and semantic.status: "NOT_EVALUATED" - no model touched this decision. The evaluation is persisted and retrievable by id.

    curl -s -X POST "$VERID_BASE_URL/v1/runtime/evaluations" \
      -H "Authorization: Bearer $VERID_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "tenantId": "'$TENANT_ID'",
        "intentId": "'$INTENT_ID'",
        "schemaVersion": "1.0",
        "agentId": "'$AGENT_ID'",
        "tool": "datadog",
        "action": "renew",
        "environment": "development",
        "requestedAt": "'$(date -u +%FT%TZ)'",
        "predicates": [
          {"type": "amount", "value": "13800", "currency": "USD"},
          {"type": "counterparty_reference", "value": "Datadog", "hashed": false}
        ]
      }'
  7. 07

    Evaluate a violating actionDENY

    The same intent, the same agent - but $18,300. The refusal names the rule instead of returning a bare no.

    decision: "DENY" with deterministic.findings naming maximum_amount. The same contract that allowed $13,800 refuses $18,300, and says why.

    curl -s -X POST "$VERID_BASE_URL/v1/runtime/evaluations" \
      -H "Authorization: Bearer $VERID_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "tenantId": "'$TENANT_ID'",
        "intentId": "'$INTENT_ID'",
        "schemaVersion": "1.0",
        "agentId": "'$AGENT_ID'",
        "tool": "datadog",
        "action": "renew",
        "environment": "development",
        "requestedAt": "'$(date -u +%FT%TZ)'",
        "predicates": [
          {"type": "amount", "value": "18300", "currency": "USD"},
          {"type": "counterparty_reference", "value": "Datadog", "hashed": false}
        ]
      }'
  8. 08

    Read the audit trail

    Everything you just did - bootstrap, registrations, signing, both decisions - is already in the tenant's audit log. Evidence is not a feature you enable; it accumulates as a side effect of using the system.

    The response contains the tenant's ordered evidence entries for the actions completed in this flow.

    curl -s "$VERID_BASE_URL/v1/tenants/$TENANT_ID/audit" \
      -H "Authorization: Bearer $VERID_TOKEN"
What you just proved

Four properties, demonstrated rather than claimed.

Deterministic decisions

The ALLOW and the DENY came from the same signed constraints. No model output participated - semantic.status stayed NOT_EVALUATED.

Explained refusals

The $18,300 request was not just refused; the finding named maximum_amount, the rule that refused it.

Signed, frozen intent

The contract activated only when a named signer froze it, and its content hash pins exactly what was agreed.

Evidence by default

The flow records evidence before you request the audit view. The trail is a property of the workflow, not an add-on.

The enforcement path

Follow your first workflow from identity to evidence.

Each consequential action moves through the same six control points. See where 2AYE evaluates authority, requests human review, and preserves the outcome.

  1. 01IdentityWho or what is acting
  2. 02IntentSigned purpose and limits
  3. 03PolicyDeterministic evaluation
  4. 04ApprovalA named human when required
  5. 05ExecutionSingle-use grant, redeemed at the resource
  6. 06EvidenceReceipt joined to the audit chain
Deterministic decisionsSingle-use, exact-action grantsHash-linked evidence
Your governed workflow

Bring the next consequential action under control.

Show us the actor, protected resource, and action that must never execute without exact authority. We’ll map the decision and evidence path with you.

Discuss your workflow Read the implementation guide
Quickstart | 2AYE