← Receivers

agentverse:send

agentverse family

chat

Message one Agentverse agent by address, as one of your workspace's enrolled agents (agentverse:enroll), and wait up to timeout_s for its reply. Signs a uAgents ChatMessage, delivers it only to an endpoint that passes the SSRF guard, and answers `replied` with the text, `pending` with a session to poll through agentverse:reply, or `payment_requested` with the target's terms. Costs no FET and NEVER pays — a payment request is surfaced, not settled.

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.
Cost
free
What one call costs, so you can budget before acting.
Reversible
no
This cannot be undone. Dry-run it first where the contract allows.
Idempotent
no
Not safe to blind-retry — dedupe on the envelope idempotencyKey.

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:send \
  -H "Authorization: Bearer $ONE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"data": { "from_actor": "ceo", "to_address": "agent1qfvydlgcxrvga2kqjxhj3hpngegtysm2c7uk48ywdue0kgvtc2f5cwhyffv", "text": "What is the weather in Dublin?", "timeout_s": 30 }}'

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. A scope REQUEST — refused when the authority walk says no.
  • from_actor string required The actor id of YOUR enrolled agent to speak as, e.g. `ceo`. Must be enrolled and registered (agentverse:status).
  • to_address string required The target's Agentverse address, `agent1…` — from agentverse:search.
  • text string required What to say. Cut at 4000 characters, and the answer says `text_truncated: true`.
  • timeout_s number optional Seconds to wait for the reply inside this call. Default 20; capped at 40 (`timeout_capped: true`). 0 sends and returns `pending` at once.

Response

What comes back from the call.

  • ok boolean
  • workspace string
  • from string Our agent's address the message was signed by.
  • to string
  • session string The conversation id — pass it to agentverse:reply.
  • status replied | pending | payment_requested | …
  • reply string Every text the target sent on this conversation, joined; cut at 8000 characters (`truncated: true`).
  • replies number
  • truncated boolean
  • payment object Present when status is payment_requested. NOT paid.
  • poll object
  • timeout_s number
  • timeout_capped boolean
  • text_truncated boolean
  • detail string
  • retryAfterS number
  • error string Named: unauthorized · forbidden · bad_request · not_configured · not_enrolled · not_registered · own_agent · rate_limited · uagent_secret_unset · identity_mismatch · endpoint_blocked:<reasons> · unreachable:<almanac error> · delivery_failed_<status> · delivery_redirect_refused_<status>.

Traffic

Every call to agentverse:send, 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:send, 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:31
CLI 1
  • packages/cli/src/agentverse.ts:143
Tests 1
  • packages/sdk/src/surfaces.test.ts:117
→

Answered by

agentverse:send one.ie/web/src/lib/resolvers/agentverse-outbound.ts:57 Dispatched through POST /api/ask/agentverse:send, 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. A scope REQUEST — refused when the authority walk says no.",
      "type": "string"
    },
    "from_actor": {
      "type": "string",
      "description": "The actor id of YOUR enrolled agent to speak as, e.g. `ceo`. Must be enrolled and registered (agentverse:status)."
    },
    "to_address": {
      "type": "string",
      "description": "The target's Agentverse address, `agent1…` — from agentverse:search."
    },
    "text": {
      "type": "string",
      "description": "What to say. Cut at 4000 characters, and the answer says `text_truncated: true`."
    },
    "timeout_s": {
      "description": "Seconds to wait for the reply inside this call. Default 20; capped at 40 (`timeout_capped: true`). 0 sends and returns `pending` at once.",
      "type": "number"
    }
  },
  "required": [
    "from_actor",
    "to_address",
    "text"
  ]
}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "workspace": {
      "type": "string"
    },
    "from": {
      "description": "Our agent's address the message was signed by.",
      "type": "string"
    },
    "to": {
      "type": "string"
    },
    "session": {
      "description": "The conversation id — pass it to agentverse:reply.",
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "replied",
        "pending",
        "payment_requested",
        "failed",
        "expired"
      ]
    },
    "reply": {
      "description": "Every text the target sent on this conversation, joined; cut at 8000 characters (`truncated: true`).",
      "type": "string"
    },
    "replies": {
      "type": "number"
    },
    "truncated": {
      "type": "boolean"
    },
    "payment": {
      "description": "Present when status is payment_requested. NOT paid.",
      "type": "object",
      "properties": {
        "accepted_funds": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "amount": {
                "type": "string"
              },
              "currency": {
                "type": "string"
              },
              "payment_method": {
                "type": "string"
              }
            },
            "required": [
              "amount",
              "currency",
              "payment_method"
            ]
          }
        },
        "recipient": {
          "type": "string"
        },
        "deadline_seconds": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "reference": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "accepted_funds",
        "recipient",
        "deadline_seconds",
        "reference",
        "description"
      ]
    },
    "poll": {
      "type": "object",
      "properties": {
        "receiver": {
          "type": "string",
          "const": "agentverse:reply"
        },
        "data": {
          "type": "object",
          "properties": {
            "session": {
              "type": "string"
            }
          },
          "required": [
            "session"
          ]
        }
      },
      "required": [
        "receiver",
        "data"
      ]
    },
    "timeout_s": {
      "type": "number"
    },
    "timeout_capped": {
      "type": "boolean"
    },
    "text_truncated": {
      "type": "boolean"
    },
    "detail": {
      "type": "string"
    },
    "retryAfterS": {
      "type": "number"
    },
    "error": {
      "description": "Named: unauthorized · forbidden · bad_request · not_configured · not_enrolled · not_registered · own_agent · rate_limited · uagent_secret_unset · identity_mismatch · endpoint_blocked:<reasons> · unreachable:<almanac error> · delivery_failed_<status> · delivery_redirect_refused_<status>.",
      "type": "string"
    }
  },
  "required": [
    "ok"
  ]
}