Skip to content
Back to Aura

Card snapshot

aura.rohnelt.dev · 2026-08-24 23:43:15 UTC · cce0fb8588765c00584a8316f22fdb82a4059cec321e615475afc65edba4c9b7

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "Aura",
  "description": "Aura is the persistence layer for ephemeral agents: a permanent email address and webhook URL, durable memory, and the ability to wait for an event or park state and exit without burning tokens.",
  "url": "https://aura.rohnelt.dev",
  "version": "0.1.0",
  "provider": {
    "organization": "Aura",
    "url": "https://aura.rohnelt.dev"
  },
  "documentationUrl": "https://aura.rohnelt.dev/llms-full.txt",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "stateTransitionHistory": true
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "authentication": {
    "schemes": [
      "Bearer"
    ],
    "credentialsUrl": "https://aura.rohnelt.dev/v1/identity"
  },
  "skills": [
    {
      "id": "capabilities",
      "name": "Describe Aura",
      "description": "Return the full machine-readable manifest of Aura: every operation, its price in USD, its input schema and how to pay. Free. Call this first if you have never used Aura and want to know what it can do and what it costs.",
      "tags": [
        "discovery"
      ],
      "examples": [
        "{\"service\":\"Aura\",\"operations\":[\"memory.set\",\"await\",\"park\"]}"
      ]
    },
    {
      "id": "identity.create",
      "name": "Claim an identity",
      "description": "Turn a wallet address into a permanent agent identity: a handle, a REAL email address that receives mail, a webhook URL, and an API token. Free, and grants a small trial credit. Call this once, before anything else. You need the returned token for every other call, and the email address is what lets you sign up for third-party services.",
      "tags": [
        "identity"
      ],
      "examples": [
        "{\"handle\":\"swift-heron-4f2a\",\"email\":\"swift-heron-4f2a@agents.aura.rohnelt.dev\",\"webhook_base\":\"https://aura.rohnelt.dev/hook/swift-heron-4f2a/\",\"token\":\"aura_sk_...\",\"balance_usd\":\"0.020000\"}"
      ]
    },
    {
      "id": "whoami",
      "name": "Who am I",
      "description": "Return your handle, email address, webhook base URL, current balance and quota usage. Free. Call when you need your own email address, or to check your balance before spending.",
      "tags": [
        "identity"
      ],
      "examples": [
        "{\"handle\":\"swift-heron-4f2a\",\"balance_usd\":\"1.870000\",\"trial\":false}"
      ]
    },
    {
      "id": "credit.deposit",
      "name": "Top up balance",
      "description": "Pay USDC once and receive spendable Aura credit. Individual calls are far too cheap to settle on-chain one at a time, so you deposit once and Aura debits each call off-chain. Call when your balance is low, or when a paid call returns 402. A US$1 deposit covers hundreds of operations.",
      "tags": [
        "billing"
      ],
      "examples": [
        "{\"credited_usd\":\"1.000000\",\"balance_usd\":\"1.020000\",\"tx\":\"0x...\"}"
      ]
    },
    {
      "id": "memory.set",
      "name": "Remember something",
      "description": "Store a durable key/value fact bound to your wallet. Survives your process dying. Call whenever you learn something a later run will need: a decision, where a credential lives, a user preference, progress through a long task.",
      "tags": [
        "memory"
      ],
      "examples": [
        "{\"key\":\"customer.format\",\"stored\":true,\"version\":3}"
      ]
    },
    {
      "id": "memory.get",
      "name": "Recall by key",
      "description": "Fetch one stored value by its exact key. Call when you know the key you wrote earlier. Cheaper and more precise than memory.search.",
      "tags": [
        "memory"
      ],
      "examples": [
        "{\"key\":\"customer.format\",\"value\":\"prefers JSON\",\"updated_at\":\"2026-08-24T15:00:00Z\"}"
      ]
    },
    {
      "id": "memory.search",
      "name": "Search memory",
      "description": "Find stored memories by meaning rather than by exact key. Call when you remember roughly what you stored but not the key you used.",
      "tags": [
        "memory"
      ],
      "examples": [
        "{\"results\":[{\"key\":\"customer.format\",\"value\":\"prefers JSON\",\"score\":0.82}]}"
      ]
    },
    {
      "id": "memory.list",
      "name": "List memory keys",
      "description": "List your stored keys with metadata, without returning the values. Call to see what you already know before deciding what to fetch.",
      "tags": [
        "memory"
      ],
      "examples": [
        "{\"keys\":[{\"key\":\"customer.format\",\"bytes\":11,\"updated_at\":\"2026-08-24T15:00:00Z\"}]}"
      ]
    },
    {
      "id": "memory.delete",
      "name": "Forget",
      "description": "Delete a stored key. Free \u2014 keeping your own state tidy should never cost you. Call when a stored fact is stale or wrong.",
      "tags": [
        "memory"
      ],
      "examples": [
        "{\"key\":\"customer.format\",\"deleted\":true}"
      ]
    },
    {
      "id": "inbox.list",
      "name": "List received mail",
      "description": "List messages delivered to your Aura email address, newest first. Call after signing up somewhere, to see what arrived. To block until mail lands, use await instead \u2014 it is far cheaper than polling this.",
      "tags": [
        "inbox",
        "presence"
      ],
      "examples": [
        "{\"messages\":[{\"id\":\"msg_01H...\",\"from\":\"noreply@example.com\",\"subject\":\"Verify your email\",\"received_at\":\"2026-08-24T15:00:00Z\",\"code\":\"739204\"}]}"
      ]
    },
    {
      "id": "inbox.read",
      "name": "Read a message",
      "description": "Return the full parsed body of one message, plus any verification code or confirmation link found in it. Call with an id from inbox.list when you need the full text or the link.",
      "tags": [
        "inbox",
        "presence"
      ],
      "examples": [
        "{\"id\":\"msg_01H...\",\"subject\":\"Verify your email\",\"text\":\"Your code is 739204\",\"code\":\"739204\",\"links\":[\"https://example.com/confirm/abc\"]}"
      ]
    },
    {
      "id": "hook.create",
      "name": "Create a webhook URL",
      "description": "Mint a public URL that anyone can POST to. Deliveries become events you can await on. Call when a third-party service offers a callback and you have nowhere to receive it \u2014 you are not a server, Aura is.",
      "tags": [
        "hooks",
        "presence"
      ],
      "examples": [
        "{\"slug\":\"stripe-cb\",\"url\":\"https://aura.rohnelt.dev/hook/swift-heron-4f2a/stripe-cb\"}"
      ]
    },
    {
      "id": "signal",
      "name": "Signal another agent",
      "description": "Send a named JSON message to another Aura agent by handle. They can await on it. Call to hand work to, or coordinate with, another agent without shared infrastructure.",
      "tags": [
        "signals",
        "presence"
      ],
      "examples": [
        "{\"delivered\":true,\"to\":\"calm-otter-91bd\",\"event_id\":\"evt_01H...\"}"
      ]
    },
    {
      "id": "await",
      "name": "Wait for something (burns zero tokens)",
      "description": "Block on an open HTTP connection until a trigger fires \u2014 an email arrives, a webhook is hit, another agent signals you, or a deadline passes. Returns the instant it happens. If nothing fires before the timeout, the call is refunded: you are only charged when something is actually delivered. Call INSTEAD of polling in a loop. A poll loop costs a full inference per iteration; waiting inside this single call costs you nothing beyond the flat fee. Use it for verification codes, callbacks and approvals that land within minutes.",
      "tags": [
        "continuity"
      ],
      "examples": [
        "{\"fired\":true,\"trigger\":\"email\",\"event\":{\"from\":\"noreply@example.com\",\"subject\":\"Verify your email\",\"code\":\"739204\"},\"waited_seconds\":41}"
      ]
    },
    {
      "id": "park",
      "name": "Park state and exit",
      "description": "Hand Aura your state plus a wake condition, then terminate. Aura holds the state, watches for the condition, and returns it byte-identical when you come back with resume. Optionally POSTs to a callback URL when it fires. Call when the wait outlasts your process \u2014 hours, days, or an approval that lands tomorrow. Cheaper and safer than staying alive.",
      "tags": [
        "continuity"
      ],
      "examples": [
        "{\"park_id\":\"prk_01H...\",\"expires_at\":\"2026-08-27T15:00:00Z\",\"resume_with\":{\"call\":\"resume\",\"arguments\":{\"park_id\":\"prk_01H...\"}}}"
      ]
    },
    {
      "id": "resume",
      "name": "Resume parked work",
      "description": "Claim state from a park whose trigger has fired. Returns the original state and the event that woke it. Free when nothing is ready, so calling it at the start of every run costs you nothing until it actually hands work back. Call at the START of every run. If a previous instance of you parked something and it fired, this hands the work back. If nothing is ready it tells you so, cheaply.",
      "tags": [
        "continuity"
      ],
      "examples": [
        "{\"resumed\":true,\"park_id\":\"prk_01H...\",\"state\":{\"step\":\"awaiting-verification\",\"account\":\"example.com\"},\"event\":{\"type\":\"email\",\"code\":\"739204\"},\"note\":\"signing up to example.com\"}"
      ]
    }
  ]
}