tenzro-xyz Identity & agents API

The Identity & agents API from tenzro-xyz — 6 operation(s) for identity & agents.

Operations 7

GET /identity Get your Tenzro identity #
GET /agents List agents #
POST /agents Create an agent #
GET /agents/{id} Get an agent #
POST /agents/{id}/settings Change an agent's limits #
POST /agents/{id}/keys Create an API key for an agent #
POST /agents/{id}/revoke Revoke an agent #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tenzro-xyz:tenzro-xyz-identity-agents-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tenzro-xyz-identity-agents-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Tenzro Labs Platform Identity & agents API
  version: 1.0.0
  description: Browse the curated catalogue; manage credits, billing, keys, plans and rentals; place and pay orders; run Datasets, Fieldwork, Voices and Forecasts. Chat, embeddings, images, speech and the model list keep the OpenAI-compatible /v1 paths.
servers:
- url: https://api.tenzro.xyz
security:
- apiKey: []
tags:
- name: Identity & agents
paths:
  /identity:
    get:
      tags:
      - Identity & agents
      summary: Get your Tenzro identity
      description: 'Your did:tenzro:human identity and wallet, rooted in your passkeys. manage_url is where passkeys and devices are managed.


        Needs a key with the `read` permission.'
      operationId: getIdentity
      x-tenzro-scope: read
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                state: ready
                did: did:tenzro:human:e0b27720-3043-84d5-9b66-49eba92b1a8d
                wallet_address: '0xd8aa2ca0a3b56be2b58d6c883c7b3ed31d749428'
                error: null
                passkeys: 2
                can_send: true
                manage_url: https://accounts.tenzro.xyz/wallet?return_to=…
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /agents:
    get:
      tags:
      - Identity & agents
      summary: List agents
      description: 'Each agent''s status and the limits its owner approved. An outstanding approval is collected first, so a list read after the owner approves shows the result.


        Needs a key with the `read` permission.'
      operationId: getAgents
      x-tenzro-scope: read
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                data:
                - id: agt_Zp3kQ9x1RmW4sT
                  name: research-bot
                  status: active
                  approval: null
                  capabilities:
                  - inference
                  limits:
                    max_transaction_tnzo: null
                    max_daily_tnzo: null
                    daily_limit_credits: 20000
                    total_limit_credits: 500000
                    expires_in_days: 90
                  proposed: null
                  did: did:tenzro:machine:e0b27720-3043-84d5-9b66-49eba92b1a8d:7c1d…
                  wallet_address: 0x4b1f…
                  serving:
                    nodes: 3
                    operators: 2
                  error: null
                  created_at: '2026-09-26T09:05:00.000Z'
                  approved_at: '2026-09-26T09:12:00.000Z'
                  activated_at: '2026-09-26T09:12:00.000Z'
                  expires_at: '2026-12-25T09:12:00.000Z'
                  revoked_at: null
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      tags:
      - Identity & agents
      summary: Create an agent
      description: 'Proposes an agent under your identity and returns approve_url. The account owner opens it, may adjust the settings, and approves with their passkey on the account site; a passkey cannot be pressed from code, so relay the link to a person. The agent becomes active once the approval is collected: reading the agent collects it. The settings the owner approved are the ones that apply. Refused with no_serving_nodes while the network has none.


        Needs a key with the `manage` permission.'
      operationId: postAgents
      x-tenzro-scope: manage
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  description: 1 to 64 lowercase letters, digits, dots, dashes or underscores.
                capabilities:
                  type: array
                  items:
                    enum:
                    - inference
                    - payments
                  default:
                  - inference
                max_transaction_tnzo:
                  type: string
                  description: Network cap on any one payment the agent makes, in TNZO (e.g. "1.5").
                max_daily_tnzo:
                  type: string
                  description: Network cap on what the agent pays per day, in TNZO.
                daily_limit_credits:
                  type: number
                  description: Tenzro Labs credits this agent may spend per UTC day.
                total_limit_credits:
                  type: number
                  description: Tenzro Labs credits this agent may spend in total.
                expires_in_days:
                  type: integer
                  minimum: 1
                  maximum: 3650
                  description: The delegation ends after this many days.
            example:
              name: research-bot
              capabilities:
              - inference
              daily_limit_credits: 20000
              total_limit_credits: 500000
              expires_in_days: 90
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                approve_url: https://accounts.tenzro.xyz/agents/approve/apr_3xQk…
                agent:
                  id: agt_Zp3kQ9x1RmW4sT
                  name: research-bot
                  status: awaiting_approval
                  approval:
                    kind: create
                    state: pending
                    approve_url: https://accounts.tenzro.xyz/agents/approve/apr_3xQk…
                  capabilities:
                  - inference
                  limits: null
                  proposed:
                    agent_name: research-bot
                    capabilities:
                    - inference
                    max_transaction_tnzo: ''
                    max_daily_tnzo: ''
                    daily_limit_credits: 20000
                    total_limit_credits: 500000
                    expires_in_days: 90
                  did: null
                  wallet_address: null
                  serving:
                    nodes: 3
                    operators: 2
                  error: null
                  created_at: '2026-09-26T09:05:00.000Z'
                  approved_at: null
                  activated_at: null
                  expires_at: null
                  revoked_at: null
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /agents/{id}:
    get:
      tags:
      - Identity & agents
      summary: Get an agent
      description: 'Includes what it has spent today and in total. Collects an outstanding approval first.


        Needs a key with the `read` permission.'
      operationId: getAgentsById
      x-tenzro-scope: read
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                id: agt_Zp3kQ9x1RmW4sT
                name: research-bot
                status: active
                approval: null
                capabilities:
                - inference
                limits:
                  max_transaction_tnzo: null
                  max_daily_tnzo: null
                  daily_limit_credits: 20000
                  total_limit_credits: 500000
                  expires_in_days: 90
                proposed: null
                did: did:tenzro:machine:e0b27720-3043-84d5-9b66-49eba92b1a8d:7c1d…
                wallet_address: 0x4b1f…
                serving:
                  nodes: 3
                  operators: 2
                error: null
                created_at: '2026-09-26T09:05:00.000Z'
                approved_at: '2026-09-26T09:12:00.000Z'
                activated_at: '2026-09-26T09:12:00.000Z'
                expires_at: '2026-12-25T09:12:00.000Z'
                revoked_at: null
                spend:
                  today_credits: 0
                  total_credits: 0
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /agents/{id}/settings:
    post:
      tags:
      - Identity & agents
      summary: Change an agent's limits
      description: 'Proposes new settings for an active agent, starting from the ones its owner approved last; fields you leave out stay as they are. Nothing changes until the owner approves at approve_url with their passkey. The agent''s name cannot be changed.


        Needs a key with the `manage` permission.'
      operationId: postAgentsByIdSettings
      x-tenzro-scope: manage
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                capabilities:
                  type: array
                  items:
                    enum:
                    - inference
                    - payments
                  default:
                  - inference
                max_transaction_tnzo:
                  type: string
                  description: Network cap on any one payment the agent makes, in TNZO (e.g. "1.5").
                max_daily_tnzo:
                  type: string
                  description: Network cap on what the agent pays per day, in TNZO.
                daily_limit_credits:
                  type: number
                  description: Tenzro Labs credits this agent may spend per UTC day.
                total_limit_credits:
                  type: number
                  description: Tenzro Labs credits this agent may spend in total.
                expires_in_days:
                  type: integer
                  minimum: 1
                  maximum: 3650
                  description: The delegation ends after this many days.
            example:
              daily_limit_credits: 50000
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                approve_url: https://accounts.tenzro.xyz/agents/approve/apr_3xQk…
                agent:
                  id: agt_Zp3kQ9x1RmW4sT
                  name: research-bot
                  status: active
                  approval:
                    kind: update
                    state: pending
                    approve_url: https://accounts.tenzro.xyz/agents/approve/apr_3xQk…
                  capabilities:
                  - inference
                  limits:
                    max_transaction_tnzo: null
                    max_daily_tnzo: null
                    daily_limit_credits: 20000
                    total_limit_credits: 500000
                    expires_in_days: 90
                  proposed: null
                  did: did:tenzro:machine:e0b27720-3043-84d5-9b66-49eba92b1a8d:7c1d…
                  wallet_address: 0x4b1f…
                  serving:
                    nodes: 3
                    operators: 2
                  error: null
                  created_at: '2026-09-26T09:05:00.000Z'
                  approved_at: '2026-09-26T09:12:00.000Z'
                  activated_at: '2026-09-26T09:12:00.000Z'
                  expires_at: '2026-12-25T09:12:00.000Z'
                  revoked_at: null
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /agents/{id}/keys:
    post:
      tags:
      - Identity & agents
      summary: Create an API key for an agent
      description: 'An inference key that identifies this agent. Its usage counts against the limits its owner approved. Active agents only. The secret is returned once.


        Needs a key with the `manage` permission.'
      operationId: postAgentsByIdKeys
      x-tenzro-scope: manage
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                machine_id:
                  type: string
                  description: Pin the key to one machine.
                permissions:
                  type: array
                  items:
                    enum:
                    - inference
                    - read
                    - datasets:read
                    - datasets:write
                    - fieldwork:read
                    - fieldwork:write
                    - voices:speak
                    - voices:batch
                    - voices:train
                    - voices:admin
                    - vision:analyse
                    - vision:generate
                    - vision:batch
                    - wallets:read
                    - wallets:write
                  default:
                  - inference
                  description: 'What the agent''s key may do: inference and any service scopes. Never manage.'
            example:
              name: research-bot prod
              permissions:
              - inference
              - datasets:read
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                id: key_Zb81Qm0sP4aT
                name: ci
                prefix: tzl_3kQ9aZ1x
                permissions:
                - inference
                scope: null
                subscription_id: null
                rental_id: null
                created_at: '2026-09-26T08:00:00.000Z'
                last_used_at: null
                revoked_at: null
                agent_id: agt_Zp3kQ9x1RmW4sT
                secret: tzl_…
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /agents/{id}/revoke:
    post:
      tags:
      - Identity & agents
      summary: Revoke an agent
      description: 'Proposes revoking the agent. Once the owner approves at approve_url with their passkey, its identity is revoked on the network and every Platform API key it holds stops working.


        Needs a key with the `manage` permission.'
      operationId: postAgentsByIdRevoke
      x-tenzro-scope: manage
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                approve_url: https://accounts.tenzro.xyz/agents/approve/apr_3xQk…
                agent:
                  id: agt_Zp3kQ9x1RmW4sT
                  name: research-bot
                  status: active
                  approval:
                    kind: revoke
                    state: pending
                    approve_url: https://accounts.tenzro.xyz/agents/approve/apr_3xQk…
                  capabilities:
                  - inference
                  limits:
                    max_transaction_tnzo: null
                    max_daily_tnzo: null
                    daily_limit_credits: 20000
                    total_limit_credits: 500000
                    expires_in_days: 90
                  proposed: null
                  did: did:tenzro:machine:e0b27720-3043-84d5-9b66-49eba92b1a8d:7c1d…
                  wallet_address: 0x4b1f…
                  serving:
                    nodes: 3
                    operators: 2
                  error: null
                  created_at: '2026-09-26T09:05:00.000Z'
                  approved_at: '2026-09-26T09:12:00.000Z'
                  activated_at: '2026-09-26T09:12:00.000Z'
                  expires_at: '2026-12-25T09:12:00.000Z'
                  revoked_at: null
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            scope:
              type: string
              description: 'On a 403: the permission the key lacks.'
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: A Tenzro Labs API key (tzl_…).
    ingestKey:
      type: http
      scheme: bearer
      description: 'A Fieldwork ingest key (tzi_…): bound to one project and the origins listed on it, able only to run the participant flow. Safe in a browser. Create it with POST /fieldwork/projects/{id}/ingest-keys.'
    serviceAssertion:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'A Tenzro Labs service''s ES256 assertion: header kid = the RFC 7638 thumbprint of a key in the service''s published JWKS; iss = sub = the service; aud = this endpoint; exp at most 60 s after iat; jti used once.'