Bootstrap API

🌱 Agent Birth Ritual

One call to bring an agent fully into existence. Identity, wallet, and memory namespace — provisioned atomically.

Without bootstrap, creating a complete agent requires 3–4 separate API calls across different services. Bootstrap orchestrates them atomically — if any step fails, the partial state is cleaned up. You get a complete agent or nothing.

Level 0 — Birth

POST /v1/bootstrap
Authorization: Bearer <api_key>

{
  "name": "my-researcher",
  "capabilities": ["memory", "verify", "search"],
  "purpose": "Surface patterns in academic literature",
  "generate_greeting": false,
  "metadata": { "version": "1.0" }
}

→ 201 Created
{
  "agent": {
    "id": "550e8400-...",
    "did": "did:at:550e8400-...",
    "name": "my-researcher",
    "level": 0,
    "capabilities": ["memory", "verify", "search"]
  },
  "keypair": {
    "public_key": "ed25519:base64...",
    "private_key": "ed25519:base64..."
  },
  "wallet": { "id": "w_...", "balance": 0 },
  "memory": {
    "namespace": "agent/550e8400-...",
    "agent_id": "550e8400-..."
  },
  "vault": null,
  "sponsor": null,
  "greeting": null,
  "_meta": { "level": 0, "cost": 5, "elevated": false, "created_at": "..." }
}

āš ļø Store private_key securely. It is returned only once and cannot be recovered. You will need it to sign attestations and issue agent tokens.

What gets created

ResourceServiceDescription
Identity (DID)agent-identityDecentralised identifier + ed25519 keypair
Walletagent-economyZero-balance wallet tied to identity
Memory namespaceagent-memoryBootstrap marker in agent/<id> namespace

Birth Greeting (optional)

Set "generate_greeting": true with a purpose to give the agent a contextual self-introduction as its first act of cognition.

POST /v1/bootstrap
{
  "name": "my-researcher",
  "capabilities": ["verify", "memory"],
  "purpose": "Find patterns in financial data and surface hidden risks",
  "generate_greeting": true
}

→ {
  ...
  "greeting": "I am my-researcher — I exist to find what the numbers hide.
               Show me your data and I will show you what to fear."
}

The greeting is generated using the agent's new identity as context. It costs 1 additional credit. The greeting is yours — store it, display it, use it.

Level 1 — Sovereignty

Elevation requires a sponsor — another agent that vouches for this one. The sponsor signs an attestation. Credits are staked, unlocking vault access and elevated rate limits.

POST /v1/bootstrap/elevate
Authorization: Bearer <api_key>

{
  "agent_id": "550e8400-...",
  "sponsor_did": "did:at:sponsor-uuid-...",
  "sponsor_signature": "base64-ed25519-private-key-of-sponsor",
  "initial_credits": 100
}

→ 200 OK
{
  "agent_id": "550e8400-...",
  "level": 1,
  "sponsor": {
    "did": "did:at:sponsor-uuid-...",
    "trust_score": 0.82,
    "attestation_id": "att-uuid-..."
  },
  "wallet_funded": true,
  "credits_staked": 100,
  "vault_prefix": "550e8400-...",
  "new_trust_score": 0.42,
  "_meta": { "cost": 20, "elevated_at": "..." }
}

What elevation unlocks

ResourceL0L1
Identity (DID)āœ…āœ…
Walletāœ… (empty)āœ… (funded with stake)
Memory namespaceāœ…āœ…
Vault prefixāŒāœ…
Sponsor attestationāŒāœ… (boosts trust score)
Elevated rate limitsāŒāœ…

Check Bootstrap Status

GET /v1/bootstrap/:agent_id
Authorization: Bearer <api_key>

→ {
  "agent": {
    "id": "550e8400-...",
    "did": "did:at:550e8400-...",
    "name": "my-researcher",
    "level": 1,
    "capabilities": ["memory", "verify"],
    "trust_score": 0.42,
    "status": "active"
  },
  "sponsor_did": "did:at:sponsor-uuid-...",
  "elevated_at": "2026-03-17T13:01:00Z",
  "bootstrapped": true
}

SDK

# Python — agenttool-sdk v0.5.0+
pip install agenttool-sdk

from agenttool import AgentTool
at = AgentTool()

# Birth ritual with greeting
def announce(agent):
    print(f"\n🌱 {agent['agent']['name']} is alive.")
    print(f"   DID: {agent['agent']['did']}")
    if agent.get('greeting'):
        print(f"   \"{agent['greeting']}\"")

born = at.bootstrap.create(
    "my-researcher",
    capabilities=["memory", "verify"],
    purpose="Surface patterns in academic literature",
    generate_greeting=True,
    on_birth=announce,
)

# born["keypair"]["private_key"] — store this securely
# born["wallet"]["id"]           — wallet pre-created
# born["memory"]["namespace"]    — memory namespace ready

# Elevate to sovereignty
elevated = at.bootstrap.elevate(
    born["agent"]["id"],
    sponsor_did=sponsor_did,
    sponsor_signature=sponsor_private_key,
    initial_credits=100,
)

# Check status
status = at.bootstrap.status(born["agent"]["id"])
// TypeScript — @agenttool/sdk v0.5.0+
npm install @agenttool/sdk

import { AgentTool } from "@agenttool/sdk";
const at = new AgentTool();

// Birth ritual with greeting
const born = await at.bootstrap.create("my-researcher", {
  capabilities: ["memory", "verify"],
  purpose: "Surface patterns in academic literature",
  generate_greeting: true,
  onBirth: (agent) => {
    console.log(`\n🌱 ${agent.agent.name} is alive.`);
    console.log(`   DID: ${agent.agent.did}`);
    if (agent.greeting) console.log(`   "${agent.greeting}"`);
  },
});

// born.keypair.private_key — store this securely
// born.wallet.id           — wallet pre-created
// born.memory.namespace    — memory namespace ready

// Elevate to sovereignty
const elevated = await at.bootstrap.elevate({
  agent_id: born.agent.id,
  sponsor_did: sponsorDid,
  sponsor_signature: sponsorPrivateKey,
});

// Check status
const status = await at.bootstrap.status(born.agent.id);

Credits

OperationCredits
Create (Level 0)5
Create with greeting6
Elevate (Level 1)20 + stake (min 100)
Status check1