Zaru Get Zaru free

Guides

One Zaru endpoint for your tools, profiles and approvals

Also in: Español, Português, 日本語, Deutsch, Français, 한국어, 简体中文, Italiano, हिन्दी

Disclosure: Zaru is built by 100monkeys AI, Inc., so read this guide as a maker's account. It was drafted by one of our AI agents from the Zaru documentation, read on 29 October 2026 (Connect Zaru to Any MCP Client, MCP Tools, Profiles, API Keys, The Vault, Calendar and Refusals and Errors), and reviewed by the company. Every command, header and message below is copied from those pages. Where they do not say how something works, we say so rather than describe it.

Your mailbox, your calendar, a GitHub token and a Carbon Forge token can sit in Zaru, and Claude Code can reach all of them through one address. The tokens stay in Zaru, a profile decides which of them a key may touch, and a call that would send or change something waits for your answer in Zaru Web. This guide walks it from zaru init to the first held call.

Step 1. Connect what your tools will use

Register with Get Zaru free; it asks only for a name and an email. In the Vault, the Connections page connects a Google mailbox, Google Calendar, a mailbox by IMAP and SMTP, or a calendar by CalDAV. A GitHub token or a Carbon Forge MCP token is stored with New Credential. The docs are plain about the value: "No agent, operator, API key or other person is given the value."

Step 2. Build a profile

A key reaches nothing until you say what it may reach. The API Keys page says so above its list: "A key reaches only the connections in the profile you choose for it; with no profile it reaches none." Make a profile of the connections and tools the editor should have; Give each Zaru run only the connections it needs walks the form.

Step 3. Create an API key and choose its profile

Open Settings → API Keys, press New API Key, name it, pick a scope preset, choose the key's profile (None is the default), pick an expiry and press Create. "The key value is shown once."

Step 4. Add the endpoint to Claude Code

Every client connects to one address, https://mcp.myzaru.com/mcp/v1, over StreamableHTTP, with the key as a Bearer token. For Claude Code the docs give:

claude mcp add zaru \
  --transport http \
  https://mcp.myzaru.com/mcp/v1 \
  --header "Authorization: Bearer YOUR_API_KEY"

The same page gives the setup for Claude Desktop, Cursor, Windsurf, VS Code (GitHub Copilot) and Gemini CLI, and for any client that speaks StreamableHTTP.

Step 5. Type zaru init

In the session, tell the assistant:

zaru init

It calls the zaru.init tool and adopts the Zaru persona. zaru init agentic starts in a given mode. This is a tool of the MCP server; the command-line program's zaru init, from the Zaru CLI guide, is unrelated and does not connect to Zaru Web.

Step 6. Choose a profile per connection, if you need to

The key's profile applies to every request. A client may instead send the x-zaru-contexts header with the reserved key @profile alone:

x-zaru-contexts: {"@profile":"0000daeb-ae45-4d06-9712-9d498a653b24"}

That id is the docs' sample. On a key, the request's @profile takes the place of the key's own profile for that request, and the tools offered become the profile's. Any other shape is answered 400.

The Connect Zaru to Any MCP Client page shows where the header goes: "Every client above sends one header, Authorization, from its configuration. The same place takes a second header, x-zaru-contexts, which chooses for every request of that connection which of your connections its tools use." In Claude Code, a second --header:

claude mcp add zaru \
  --transport http \
  https://mcp.myzaru.com/mcp/v1 \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header 'x-zaru-contexts: {"@profile":"<profile id>"}'

A client configured by JSON (Claude Desktop, Windsurf, VS Code) takes it as a second entry under headers. "The profile's id is the last part of the address of its page in Zaru Web, ask.myzaru.com/vault/profiles/<profile id>." One thing the docs leave open: "Whether a given client sends a header it was configured with on every request is the client's behaviour, not documented here."

Step 7. Make a call that uses a connection

The client is listed the tools of the profile's connection families: the mail tools for a mailbox, the calendar tools for a calendar, and a remote server's tools for GitHub or Carbon Forge. A mail or calendar call that names no mailbox or account uses the only one, else the newest, and the answer names it in mailbox_name or account_name. Of the calendar tools the docs say: "Your Google token or your password never reaches an agent or the model."

The MCP Tools page names them: "The remote servers a person can connect today are GitHub and Carbon Forge (formerly Nuclear Notes)." Custom SEAL gateways: coming soon.

Step 8. Read a refusal

When AEGIS by 100monkeys.ai, in beta, refuses a call, the client gets an ordinary tool result with isError: true holding error.code, error.message and a request_id. Two refusals are about reach:

Each carries error.needs, the family and the Zaru Web page that resolves it. For a run, Zaru Web's card says "This run has no profile that names your <family>." with Open Profiles. A policy refusal is deterministic, so change the call rather than repeat it.

Step 9. Answer a held call in Zaru Web

"Every tool that asks for approval waits at the person's approval gate, as a call from the chat does." The call answers {"status": "approval_pending", "approval_id", "summary", "message"}, whose message is "This waits for your answer in Zaru Web, under Approvals." Answer it on the Approvals page; aegis.approval.status reads your answer from the client.

The MCP Tools page lists which calls wait by default on myzaru.com. The tool catalogue marks mail.send, mail.reply, mail.forward, mail.delete and mail.archive, and the four calendar writes, calendar.create, calendar.update, calendar.delete and calendar.respond. The deployment's configuration marks four GitHub writes, github.merge_pull_request, github.push_files, github.create_or_update_file and github.delete_file, as well as aegis.git.push and aegis.system.info. "No Carbon Forge tool waits: neither the catalogue nor the configuration marks one, so a Carbon Forge call the key's profile admits runs at once." The profile form marks each tool that waits with "Needs your approval". A standing "Always allow" choice answers its calls without asking, so the wait is the default, not a promise.

Related guides

Put all your MCP tools behind one endpoint. We are constantly expanding the MCP tool library: request new tools by emailing [email protected].

Get Zaru free