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

> ## Agent Instructions
> These docs describe the Ancha CLI, npm package @ancha-labs/cli version 0.1.4, and the hosted workspace at app.ancha.io. Coding agents should start at https://docs.ancha.io/coding-agents. Run the CLI as `ancha` after `npm install -g @ancha-labs/cli`, or as `npx -y @ancha-labs/cli@0.1.4` without installing. Pass --json for machine-readable output, or set ANCHA_JSON=1. Every command ends with a `next:` line naming the next command. Exit codes: 0 pass, 1 a check failed or a comparison regressed, 2 usage, config or authentication error, 3 infrastructure error, 4 unimplemented endpoint with --strict.

# Tools

> The 38 tools Ancha replicates, which API version each one follows, how many endpoints it implements, and how your agent connects to it.

Each tool is a stateful replica of a real service's API. It answers the same endpoints with the same response shapes, keeps state that changes as your agent acts, and starts from fictional starter data about one company, Acme, and its customers. Your agent talks to it with its normal SDK or HTTP client, pointed at the URL Ancha provides.

## The 38 tools

Use the key in scene files (`twins: [slack, github]`), in `--tools` lists and in commands such as `ancha twins coverage slack`.

### Communication and documents

| Tool | Key | API | Endpoints | Starter data |
| - | - | - | - | - |
| [Slack](https://docs.ancha.io/tools/slack.md) | `slack` | Web API subset, bot token | 22 | A workspace with ten channels, nine people and 52 messages |
| [Gmail](https://docs.ancha.io/tools/gmail.md) | `gmail` | v1 subset | 26 | A support mailbox with labels, threads, a draft and an attachment |
| [Google Drive](https://docs.ancha.io/tools/google-drive.md) | `google-drive` | Drive API v3 subset | 26 | Folders of Docs, Sheets, Slides, PDFs and CSVs with permissions and comments |
| [Microsoft Word](https://docs.ancha.io/tools/microsoft-word.md) | `microsoft-word` | Graph v1.0 drive items | 21 | Contracts, policies and templates as `.docx` files in one OneDrive |
| [Notion](https://docs.ancha.io/tools/notion.md) | `notion` | Notion-Version 2025-09-03 subset | 19 | Engineering and product pages, a feedback database and meeting notes |
| [Dropbox](https://docs.ancha.io/tools/dropbox.md) | `dropbox` | API v2 subset | 24 | Sales, marketing and customer folders with revisions, shared links and a shared folder |
| [Resend](https://docs.ancha.io/tools/resend.md) | `resend` | REST subset | 40 | Domains, segments, contacts, sent emails and broadcasts |

### Engineering and operations

| Tool | Key | API | Endpoints | Starter data |
| - | - | - | - | - |
| [GitHub](https://docs.ancha.io/tools/github.md) | `github` | REST subset | 71 | Three repositories with commits, pull requests, labeled issues and check runs |
| [Datadog](https://docs.ancha.io/tools/datadog.md) | `datadog` | API v1 and v2 subset | 26 | Seven monitors, three dashboards, metrics, logs and events |
| [PagerDuty](https://docs.ancha.io/tools/pagerduty.md) | `pagerduty` | REST v2 and Events v2 subset | 17 | Four services, two escalation policies and five resolved incidents |
| [Better Stack](https://docs.ancha.io/tools/better-stack.md) | `better-stack` | Uptime API v2 and v3 subset | 29 | Monitors, heartbeats, incidents, on-call and a status page |
| [Linear](https://docs.ancha.io/tools/linear.md) | `linear` | GraphQL subset | 27 | Two teams, two projects and seventeen issues |
| [Jira](https://docs.ancha.io/tools/jira.md) | `jira` | REST v3 and Agile 1.0 subset | 57 | Three projects, thirteen issues and three sprints |
| [Okta](https://docs.ancha.io/tools/okta.md) | `okta` | Management API v1 subset | 31 | Twelve users in every lifecycle state, nine groups, eight apps and the System Log |
| [Amazon S3](https://docs.ancha.io/tools/amazon-s3.md) | `amazon-s3` | REST (SigV4) subset | 25 | Four buckets with different access, customer exports and web assets |
| [Clerk](https://docs.ancha.io/tools/clerk.md) | `clerk` | Backend API v1 subset | 32 | Customers' users, five organizations, invitations and sessions |

### Revenue and commerce

| Tool | Key | API | Endpoints | Starter data |
| - | - | - | - | - |
| [HubSpot](https://docs.ancha.io/tools/hubspot.md) | `hubspot` | CRM v3 | 18 | Nine companies, thirteen contacts, eight deals and a pipeline |
| [Salesforce](https://docs.ancha.io/tools/salesforce.md) | `salesforce` | REST v67.0 | 14 | Seven accounts, contacts, leads, six opportunities and two campaigns |
| [Attio](https://docs.ancha.io/tools/attio.md) | `attio` | REST v2 subset | 30 | People, companies, deals, a renewals list, notes and tasks |
| [Gong](https://docs.ancha.io/tools/gong.md) | `gong` | v2 subset, read-only | 5 | Two workspaces and seven calls, six with transcripts |
| [Stripe](https://docs.ancha.io/tools/stripe.md) | `stripe` | API 2026-10-28.endive subset, test mode | 34 | Products and prices, five customers, subscriptions, invoices, payments and a refund |
| [PayPal](https://docs.ancha.io/tools/paypal.md) | `paypal` | REST subset | 35 | Plans and subscriptions, checkout orders and reports |
| [Shopify](https://docs.ancha.io/tools/shopify.md) | `shopify` | Admin GraphQL 2026-10 subset | 32 | A store with products, inventory at two locations, customers and eight orders |
| [Lob](https://docs.ancha.io/tools/lob.md) | `lob` | Print & Mail API v1 subset | 28 | Addresses, letters, postcards, a check, bank accounts and templates |

### Marketing and analytics

| Tool | Key | API | Endpoints | Starter data |
| - | - | - | - | - |
| [Google Analytics](https://docs.ancha.io/tools/google-analytics.md) | `ga4` | Data API v1beta, REST | 4 | Two properties with historical sessions |
| [Google Ads](https://docs.ancha.io/tools/google-ads.md) | `google-ads` | v26, REST and gRPC | 9 | Accounts, a search campaign, budget, ad group, ad and reports |
| [LinkedIn Ads](https://docs.ancha.io/tools/linkedin-ads.md) | `linkedin-ads` | 202610, Rest.li 2.0 | 17 | Ad accounts, campaigns, creatives and analytics |
| [ChatGPT Ads](https://docs.ancha.io/tools/chatgpt-ads.md) | `chatgpt-ads` | Advertiser API v1 | 26 | An ad account, campaigns, an ad group, ads and insights |

### Other

| Tool | Key | API | Endpoints | Starter data |
| - | - | - | - | - |
| [Open-Meteo](https://docs.ancha.io/tools/open-meteo.md) | `open-meteo` | v1 subset, no key | 2 | Ten places with a synthetic climate |
| [Kalshi](https://docs.ancha.io/tools/kalshi.md) | `kalshi` | Trade API v2 subset | 25 | Three series of markets with order books and an account with positions |

`ancha twins list` prints the same keys and counts.

Eight more tools ship in 0.1.3: Twilio (`twilio`), Google Calendar (`google-calendar`), Intercom (`intercom`), Zendesk (`zendesk`), Asana (`asana`), Discord (`discord`), Sentry (`sentry`) and Airtable (`airtable`). `ancha twins` lists them with their endpoint counts, and `ancha twins coverage <key>` lists the endpoints each one implements.

## How your agent connects

For every tool in the world, Ancha sets environment variables with the tool's base URL and fake credentials before it starts your agent. Point your SDK or HTTP client at the URL and send the credentials the way the real service expects them. The fake credentials work only against this attempt's tools.

```bash theme={null}
ancha connect github --lang ts
```

```text Output theme={null}
Ancha supplies GITHUB_API_URL, GITHUB_TOKEN, GITHUB_WEBHOOK_SECRET for the selected sandbox or trial.

import { Octokit } from '@octokit/rest';
const github = new Octokit({ auth: process.env.GITHUB_TOKEN, baseUrl: process.env.GITHUB_API_URL });
await github.repos.get({ owner: 'acme', repo: 'starter' });
```

`ancha connect <tool>` prints settings for Node (`--lang ts`) for every tool, and for Python (`--lang py`) for Slack, GitHub and Google Ads. Where an official SDK cannot take a base URL, the snippet shows the custom fetch or adapter that sends its requests to the replica, as for Stripe, Dropbox, Shopify and PayPal. See [`ancha connect`](https://docs.ancha.io/cli/connect) and [Environment variables](https://docs.ancha.io/reference/environment-variables.md) for every variable.

Locally, tool URLs look like `http://127.0.0.1:<port>/e/<environment-id>/github`. In a hosted workspace they look like `https://app.ancha.io/t/<workspace>/e/<environment-id>/github`. Read them from the environment; never build them yourself.

## Coverage

Every replica implements a documented subset of the real API, not the whole service. `ancha twins coverage <tool>` lists each implemented endpoint with its status and notes:

```bash theme={null}
ancha twins coverage slack
```

| Status | Meaning |
| - | - |
| `supported` | The endpoint behaves like the real one for the documented request shapes. |
| `partial` | The endpoint works for the common cases. Its notes list the parameters and behaviors it does not model. |

A call to anything else fails visibly. The replica answers in the tool's native error shape, with a message that starts with `ancha: not implemented:` and the response header `x-ancha-gap: 1`:

| Tool | Response to an unimplemented call |
| - | - |
| Slack | HTTP 200 with `{"ok":false,"error":"unknown_method","ancha_gap":"ancha: not implemented: POST /api/chat.scheduleMessage"}` |
| GitHub | HTTP 501 with `{"message":"ancha: not implemented: GET /repos/acme/orders/releases", ...}` |
| HubSpot, Salesforce | HTTP 400 with the tool's validation error and an `ancha: not implemented:` message |
| Linear, Shopify | A GraphQL error that names the unsupported field or operation |
| Others | HTTP 501 with the tool's error shape |

`ancha run` and `ancha explain` report these calls as coverage gaps. With `--strict`, any gap makes the run exit with code `4`.

## Fidelity

Responses follow the real APIs' documented shapes and were tested with the official clients where a tool page names one. They have not been compared call by call with the live services. Behavior that depends on the real world is not simulated: nothing is probed, printed, mailed, delivered or traded for real, reporting data is historical, and mail, invitations and notifications are recorded rather than sent. Each tool page lists its limits.


## Related topics

- [ancha world gen](https://docs.ancha.io/cli/world-gen.md)
- [Introduction](https://docs.ancha.io/index.md)
- [Test file (scene.yaml)](https://docs.ancha.io/reference/test-file.md)
- [Troubleshooting](https://docs.ancha.io/troubleshooting.md)
- [For coding agents](https://docs.ancha.io/coding-agents.md)


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