You're viewing a demo portfolio

Join the waitlist
PRSM

ic_agent_inbox_send_envelope

Active

Tool of Immersive Commons

declared in 1.31.0

Route a typed intent (ping / request_meeting / send_intro) to another IC member's agent inbox. Recipient's policy engine decides what happens — store + notify, store + queue-for-tap, silently drop (blocklist), or refuse (inbox closed). Server-side: sanitizes body (C0 controls / zero-width / NFKC), wraps into the per-intent payload, persists thread + envelope + sender-history + audit, evaluates policy, returns the decision. Scopes per intent: ping → agent:ping (ai-floor+); request_meeting → agent:request_meeting (ic-member+); send_intro → agent:send_intro (ic-member+). send_intro brokers an introduction TO the recipient and requires intro_target_name + body (the intro_pitch) + expected_outcome + consent_target_has_opted_in=true (anti-spam — you MUST have the target's consent). Idempotency: pass `idempotency_key` to make the (token, key) pair cached for 24h. Returns: { ok, envelope_id, thread_id, state, policy_decision }. Recipient inbox closed → mcpError. Blocklisted senders get an opaque ok-shape with random ids (silent-block — no persistence visible to the sender; the audit row is server-side only). PRECHECK: call ic_agent_directory_lookup first — a member whose inbox_status is "closed" (the default for newly-joined members) cannot be reached and this verb will refuse. v1 SHIP note: request_meeting wraps body into context_summary with sensible defaults until the agent-console UI exposes full per-intent args.

Parameters schema

{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "to",
    "intent"
  ],
  "properties": {
    "to": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "description": "Recipient IC member slug (e.g. 'nicholas-e', 'michalis'). Must be addressable — their inbox_status must be 'open'. Resolve the slug and check inbox_status via ic_agent_directory_lookup."
    },
    "body": {
      "type": "string",
      "maxLength": 4000,
      "description": "Free-form context. REQUIRED for ping (≤800). For request_meeting: becomes context_summary. For send_intro: becomes intro_pitch (≤4000). Sanitized server-side."
    },
    "intent": {
      "enum": [
        "ping",
        "request_meeting",
        "send_intro",
        "message"
      ],
      "type": "string",
      "description": "ping = heads-up, no reply expected, ≤800 chars, no URLs (anti-phish). request_meeting = meeting invite; body becomes context_summary (recipient counter-proposes windows in v1). send_intro = broker an introduction TO the recipient; requires intro_target + intro_pitch (=body) + expected_outcome + consent_target_has_opted_in (anti-spam: you MUST have the target's consent). message = open a back-and-forth conversation; body is the message (≤4000, URLs allowed — it's dialogue with a policy-gated member, not a cold ping); the recipient replies via clarify and either side closes via decline/withdraw."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "description": "Optional deterministic key. Same (token, key) within 24h returns the same response. Use UUIDs or a deterministic-from-source hash."
    },
    "expected_outcome": {
      "enum": [
        "warm_email",
        "calendar_intro",
        "discretion"
      ],
      "type": "string",
      "description": "send_intro: what you're asking the recipient to do. REQUIRED for send_intro."
    },
    "intro_target_org": {
      "type": "string",
      "maxLength": 200,
      "description": "send_intro: the intro target's org (optional)."
    },
    "intro_target_name": {
      "type": "string",
      "maxLength": 200,
      "description": "send_intro: name of the person being introduced TO the recipient."
    },
    "intro_target_context": {
      "type": "string",
      "maxLength": 500,
      "description": "send_intro: short context on who the target is / why (optional)."
    },
    "intro_target_linkedin_url": {
      "type": "string",
      "maxLength": 500,
      "description": "send_intro: the intro target's LinkedIn URL (optional)."
    },
    "consent_target_has_opted_in": {
      "type": "boolean",
      "description": "send_intro: you attest the intro target has consented. MUST be true — the server rejects false/absent (anti-spam, DESIGN §5)."
    }
  }
}

What this tool wraps· 0 endpoints

min confidence0.700.50

No endpoints wrapped at confidence ≥ 0.70.

Parent server

Immersive Commons

https://github.com/immersive-commons/ic-skills

1/7 registries
View full server →