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

# Work from Claude

> Connect Claude Code to Olympus over MCP and work your CRM from the terminal

Olympus serves a Model Context Protocol (MCP) endpoint at `https://<your-app-domain>/api/mcp`. Connect Claude Code to it and Claude can read your Connect CRM and make the same changes the in-app Agent can. Because those writes go through the same mutation path as the Olympus UI, they sync to Close like any other change.

<Note>
  This works with MCP clients that support bearer-token authentication, such as
  Claude Code. Custom connectors on claude.ai require OAuth, which Olympus does
  not offer yet.
</Note>

## Mint an API key

<Steps>
  <Step title="Create the key">
    In Olympus, open **Settings > API keys** and create a new key. Each key is bound to exactly one workspace. If you belong to several workspaces, pick the one this key should act in.
  </Step>

  <Step title="Copy it once">
    The full key is shown a single time. Copy it before closing the dialog. Olympus stores only a hash and cannot show it again.
  </Step>
</Steps>

You can keep at most 10 active keys and revoke any of them at any time from the same page. Keys minted before workspace binding existed cannot authenticate; mint a new one.

## Connect Claude Code

```bash theme={null}
claude mcp add --transport http olympus https://<your-app-domain>/api/mcp \
  --header "Authorization: Bearer <your-key>"
```

Run `/mcp` inside Claude Code to confirm the connection and list the tools.

## Available tools

Read tools:

* `olympus_connect_contacts_read` and `olympus_connect_contacts_read_activity`
* `olympus_connect_contacts_find_duplicates`
* `olympus_connect_opportunities_read`, `olympus_connect_opportunities_read_activity`, and `olympus_connect_opportunities_read_configuration` (pipelines and stages)
* `olympus_connect_tasks_read`
* `olympus_integrations_close_sync_status`
* `olympus_integrations_shopify_sync_status`, `olympus_integrations_shopify_products_read`, and
  `olympus_integrations_shopify_backfill_read`

Write tools:

* `olympus_connect_contacts_create` and `olympus_connect_contacts_add_note`
* `olympus_connect_tasks_create`, `olympus_connect_tasks_complete`, and `olympus_connect_tasks_reschedule`
* `olympus_connect_opportunities_create`, `olympus_connect_opportunities_update`, and `olympus_connect_opportunities_transition`
* `olympus_connect_opportunities_log_contact_attempt`

Every write runs as you, in the key's workspace, with your role's permissions. A viewer key cannot write.
Shopify catalog refresh and product-to-Offer mapping are deliberately app-only and do not appear as
MCP tools.

## Confirmations and ambiguity

Some operations are guarded. Moving an opportunity backward, or reopening one that was closed, does not apply on the first call. The tool returns a confirmation request, and Claude must repeat the call with an explicit `conflictResolution` value before the change lands.

When a name matches more than one record ("add a note to Alex"), the tool returns the candidates instead of picking one. Claude retries with the specific record id.

## Limits

* List results are capped at 100 rows per call, with cursors for paging.
* Requests are rate-limited per key and per user. Throttled calls receive a retry-after hint.
* Oversized text arguments are rejected before anything runs.
* Retried writes do not double-apply. Claude can pass a `requestId`, and identical retries replay the original result.

## What to do next

Connect Close so changes made from Claude fan out to your CRM of record. See [Close](/modules/integrations/close).
