> ## Documentation Index
> Fetch the complete documentation index at: https://docs.a-char.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP

> Connect Claude, Cursor, VS Code, Codex or any MCP client to the hosted A-Char MCP server and let the assistant handle time off for you.

Point any MCP client at `https://a-char.com/api/mcp` and sign in with your A-Char account. The assistant can
then check balances, book and change time off, and approve your team's requests. The server is hosted, so
there is nothing to install, and it implements the [Model Context Protocol](https://modelcontextprotocol.io/),
so it works with Claude Code, Claude, Cursor, Codex, Grok Bot, VS Code and any other MCP client.

## First call

Add the server to your client and sign in. In Claude Code that is 2 commands:

```bash theme={null}
claude mcp add --transport http a-char https://a-char.com/api/mcp
claude /mcp
```

Then ask the assistant how much time off you have left. It calls `get_time_off_balances`, which answers
with every policy you are assigned to:

```
You have 14 days of Annual leave left in the current cycle (1 Jan – 31 Dec 2026):
20 accrued, 4 taken and 2 waiting for approval.
```

[Setup](/mcp/setup) has the configuration for Claude, Cursor, VS Code, Codex and every other client.

## Autonomous agents

An agent has nobody at a browser to sign in, so it sends an [API key](/mcp/setup#authentication) and calls the
tools itself. The server speaks Streamable HTTP, so plain HTTP works. This previews a week of annual leave
with the `preview_time_off` tool, without booking it:

```bash theme={null}
curl https://a-char.com/api/mcp \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer $A_CHAR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "preview_time_off",
      "arguments": {
        "policy_id": "8c2f6a0e-4b1d-4e8a-9f3c-2d7b5e1a9c40",
        "start_date": "2026-12-21",
        "end_date": "2026-12-25"
      }
    },
    "id": 1
  }'
```

Response (`200`), a JSON-RPC result whose `content[0].text` is the tool's output as JSON:

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      { "type": "text", "text": "{\"days\":[...],\"days_requested\":3,\"remaining_balance\":11}" }
    ]
  }
}
```

The 24th and 25th are public holidays, so only 3 days count against the balance. Call `request_time_off`
with the same arguments to book it.

Create a dedicated key per agent so you can revoke it on its own; [Setup](/mcp/setup#building-autonomous-agents)
has the rest.

## Tools

9 time-off tools cover checking balances, previewing, booking, changing, cancelling and approving leave, and
downloading its documents.

<CardGroup cols={2}>
  <Card title="Setup" icon="gear" href="/mcp/setup">
    Config for Claude Code, Claude, Cursor, Codex, Grok Bot, VS Code and other clients, API keys, and what to do when
    it fails
  </Card>

  <Card title="Tools" icon="wrench" href="/mcp/tools">
    Every tool with its parameters, the `tools/list` call that returns your catalog, and how errors come
    back
  </Card>
</CardGroup>

## How it behaves

### Sign-in or an API key

Clients that support OAuth need only the server URL: you sign in with your A-Char account and there is no
key to copy. Agents, and anyone who wants to choose exactly which tools the assistant gets, send an
[API key](/mcp/setup#authentication) as `Authorization: Bearer $A_CHAR_API_KEY`.

### It acts as you

Every tool runs the same code as the [API](/introduction) and the dashboard, as you, in your organization.
The assistant can do exactly what you can do in A-Char and nothing more, and the usual rules still apply:
a request that would overdraw a balance or overlap another one is rejected with the message you would see
in A-Char.

## Related

* [Setup](/mcp/setup): per-client configuration, API keys, and fixes when it fails.
* [Tools](/mcp/tools): every tool's parameters and the `tools/list` catalog.
* [Claude connector](/claude-connector): add A-Char to Claude on the web, desktop and phone.
* [Authentication](/authentication): API keys and scopes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.