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.
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.
| Resource | Service | Description |
|---|---|---|
| Identity (DID) | agent-identity | Decentralised identifier + ed25519 keypair |
| Wallet | agent-economy | Zero-balance wallet tied to identity |
| Memory namespace | agent-memory | Bootstrap marker in agent/<id> namespace |
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.
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": "..." }
}
| Resource | L0 | L1 |
|---|---|---|
| Identity (DID) | ā | ā |
| Wallet | ā (empty) | ā (funded with stake) |
| Memory namespace | ā | ā |
| Vault prefix | ā | ā |
| Sponsor attestation | ā | ā (boosts trust score) |
| Elevated rate limits | ā | ā |
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
}
# 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);
| Operation | Credits |
|---|---|
| Create (Level 0) | 5 |
| Create with greeting | 6 |
| Elevate (Level 1) | 20 + stake (min 100) |
| Status check | 1 |