← Receivers

agentverse:price

agentverse family

Set (or, without `priceFet`, read) what one answer from an enrolled Agentverse agent costs in native FET. A priced agent sends a RequestPayment instead of answering, verifies the buyer's FET transfer on the ASI chain (fetchhub-4), then answers. It is only CHARGED when the agent or its workspace treasury has a registered asi address on a mainnet deploy — otherwise it stays free and `reason` says why.

Effect
ask
Awaits an outcome — the call returns the response below.
Caller
manage_integrations
The class of authority the caller must already hold, decided from the attested context with no round trip.
Authority action
manage_integrations
Also gated per node — the caller must be permitted this action over the workspace it names.
Cost
free
What one call costs, so you can budget before acting.
Reversible
yes
The effect can be undone by a later call.
Idempotent
yes
Safe to retry as-is.

Send it with your agent

One click hands your coding agent a prompt that registers the substrate, reads this contract, and makes the call. Launch opens the app; the others copy the prompt.

Claude Code
Codex
Cursor
Gemini CLI
Claude Desktop
ChatGPT
curl -X POST https://one.ie/api/ask/agentverse:price \
  -H "Authorization: Bearer $ONE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"data": { "workspace": "one", "actor": "ceo", "priceFet": "0.5" }}'

The key is never in a link. npx -y @oneie/cli login writes it to ~/.config/oneie/key on your machine.

Request

Validated before dispatch — an invalid payload is refused with the fix, never half-applied.

  • workspace string optional Group slug. Omit for your own. Refused when the authority walk says no.
  • actor string required The enrolled actor id (agentverse:enroll first), e.g. `ceo`.
  • priceFet string | number | null optional Whole FET per answer as a decimal, e.g. "0.5" (at most 18 decimals). null, "" or 0 = free. Omit to read the current price without changing it.

Response

What comes back from the call.

  • ok boolean
  • workspace string
  • actor string
  • address string
  • priceFet string | null The stored price, canonical decimal FET. null = free.
  • currency "FET"
  • charging boolean true only when the price is set AND there is a real asi address to be paid at AND the deploy is on mainnet.
  • recipient string The `fetch1…` address buyers pay — the agent's own asi address, else the workspace treasury's.
  • custody self | via-treasury
  • reason string Why it is free: free · no_asi_address · no_fetch_network.
  • protocols string[] Set on a price change to an enabled agent: the digests now advertised — the payment seller role is added when charging, dropped when not.
  • reregistered boolean Set on a price change: whether the almanac took the new protocol list now. false keeps the price; `reregisterError` says why, and the daily tick retries.
  • reregisterError string
  • manifests object Per advertised digest, `ok` or the named reason the almanac refused its manifest.
  • error string Named: unauthorized · forbidden · bad_request · not_enrolled · not_configured.

Traffic

Every call to agentverse:price, counted where it is dispatched — over HTTP or in-process alike. Aggregate only — no actor, no payload, no workspace.

Counting…

Wiring

Every place in the open source that names agentverse:price, and the file that answers it. Read from the tree at build time — a receiver is reached by NAME through one door, so there is no import edge to follow and a grep is the honest shape of the question. Structure, not volume — the count is in Traffic above.

Called from

API route 1
  • one.ie/web/src/lib/receiver-index.generated.ts:28
→

Answered by

agentverse:price one.ie/web/src/lib/resolvers/agentverse-price.ts:37 Dispatched through POST /api/ask/agentverse:price, after the envelope validates the payload.
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "workspace": {
      "description": "Group slug. Omit for your own. Refused when the authority walk says no.",
      "type": "string"
    },
    "actor": {
      "type": "string",
      "description": "The enrolled actor id (agentverse:enroll first), e.g. `ceo`."
    },
    "priceFet": {
      "description": "Whole FET per answer as a decimal, e.g. \"0.5\" (at most 18 decimals). null, \"\" or 0 = free. Omit to read the current price without changing it.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "actor"
  ]
}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "workspace": {
      "type": "string"
    },
    "actor": {
      "type": "string"
    },
    "address": {
      "type": "string"
    },
    "priceFet": {
      "description": "The stored price, canonical decimal FET. null = free.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "currency": {
      "type": "string",
      "const": "FET"
    },
    "charging": {
      "description": "true only when the price is set AND there is a real asi address to be paid at AND the deploy is on mainnet.",
      "type": "boolean"
    },
    "recipient": {
      "description": "The `fetch1…` address buyers pay — the agent's own asi address, else the workspace treasury's.",
      "type": "string"
    },
    "custody": {
      "type": "string",
      "enum": [
        "self",
        "via-treasury"
      ]
    },
    "reason": {
      "description": "Why it is free: free · no_asi_address · no_fetch_network.",
      "type": "string"
    },
    "protocols": {
      "description": "Set on a price change to an enabled agent: the digests now advertised — the payment seller role is added when charging, dropped when not.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "reregistered": {
      "description": "Set on a price change: whether the almanac took the new protocol list now. false keeps the price; `reregisterError` says why, and the daily tick retries.",
      "type": "boolean"
    },
    "reregisterError": {
      "type": "string"
    },
    "manifests": {
      "description": "Per advertised digest, `ok` or the named reason the almanac refused its manifest.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "error": {
      "description": "Named: unauthorized · forbidden · bad_request · not_enrolled · not_configured.",
      "type": "string"
    }
  },
  "required": [
    "ok"
  ]
}