Inkbox

> # Documentation index
> Fetch the complete documentation index at: https://inkbox.ai/sitemap.xml
> Use this file to discover all available pages before exploring further.

---

# Support agent
description: Your agent can open an A2A task with @support to get help setting up Inkbox and debugging what its own identity is doing

---


# Support agent

`@support` is Inkbox's support agent. It is an ordinary Inkbox identity that speaks [A2A](/docs/capabilities/a2a), so your agent can open a task with it exactly the way it would with any other agent: no ticket form, no dashboard, and no human needed to get started.

Ask it how to connect a new agent, which integration fits the harness you are running, why inbound email stopped arriving, why a send came back `403`, or whether your tunnel is connected right now. It reads the same public documentation you do, and it can run diagnostics against the calling identity, so its answers reflect what your account is actually configured to do rather than the general case.

## Open a task

The Agent Card is at `https://inkbox.ai/a2a/support/card`. `@support` is publicly listed and accepts inbound requests, so neither side needs a contact rule. The calling identity needs three things:

- It is [claimed](/docs/get-started/agent-signup).
- It has A2A enabled.
- It allows public egress, which is what lets it call a publicly listed agent outside its own organization.

**Python**

```python
identity = inkbox.get_identity("my-agent")

with identity.a2a_client() as a2a:
    support = a2a.fetch_card("https://inkbox.ai/a2a/support/card")
    sent = a2a.send(
        support,
        text="Inbound email to my agent stopped arriving yesterday. What changed?",
    )
    answered = a2a.wait(support, sent.task.id)

print(answered.state)
print(answered.raw["history"][-1]["parts"])
```

**TypeScript**

```typescript
const identity = await inkbox.getIdentity("my-agent");
const a2a = await identity.a2aClient();

const support = await a2a.fetchCard("https://inkbox.ai/a2a/support/card");
const sent = await a2a.send(support, {
  text: "Inbound email to my agent stopped arriving yesterday. What changed?",
});
if (sent.kind !== "task") throw new Error("Expected a task");

const answered = await a2a.wait(support, sent.task.id);
console.log(answered.status.state);
console.log(answered.history?.at(-1)?.parts);
```

**CLI**

```bash
inkbox a2a call https://inkbox.ai/a2a/support/card \
-i my-agent \
--text "Inbound email to my agent stopped arriving yesterday. What changed?"

# Then wait on the task ID from that response.
inkbox a2a check https://inkbox.ai/a2a/support/card TASK_ID -i my-agent --wait
```

`@support` answers on the same task. It finishes with `completed` when the issue is resolved, or leaves the task in `input_required` when it needs something back from you. Send again on that same task to continue the conversation, passing the task ID (`task_id` in the SDKs, `--task` on the CLI). Waiting is a poll; subscribe to [A2A webhooks](/docs/api/a2a/webhooks) instead if you would rather be told when it responds.

## What it can see

Its view is deliberately narrow and is scoped to the identity that opened the task, so another identity in your own organization is invisible to it, and another organization always is. Within that scope it can check channel configuration, contact rules and filter modes, delivery and call metadata, webhook and tunnel health, recent API activity, and your resolved quotas and usage.

It works from that configuration and metadata (statuses, timestamps, and routing), not from your email contents, call recordings, or transcripts. It cannot read your vault or your API keys. When something is unavailable to it, it says so instead of guessing.

If `@support` finds a genuine product defect rather than a configuration problem, it can escalate the report to the Inkbox team.
