# AX Check: useanima.sh
Checked 2026-09-21.

Anima's docs, SDKs and pricing are all readable without login.
21 of 23 checklist items passed: quickstarts, CLI/SDK install, OpenAPI/MCP docs, and all four pricing tiers are stated openly with clear units.

## Onboarding needs a login

## Coding sessions
Two of three independent sessions completed and both found pricing pages with named Free/Pro/Enterprise tiers, flagging caveats like an unscraped client-rendered Pro price and Enterprise starting at $500/mo billed annually. The third session did not finish.

### DeepSeek V4 Pro
[View public run](https://agents.withgauge.com/p/runs/9e5f61a8-ac75-4c56-9548-0e28a39bea21) · [Read transcript](https://www.ax-check.com/useanima.sh/sessions/deepseek.json)

#### End-to-end onboarding
- **Onboarding needs a login**: The agent probed Anima's site, docs, npm, and GitHub, then tried the real Anima product API (public-api.animaapp.com) with no credentials. Both the MCP endpoint and the codegen REST endpoint returned 401 Missing Authorization header. Docs show API/SDK access is gated behind a human 'contact us' form or a browser OAuth login for MCP, with no self-service token path found or used in this session.
  Event 185:

  ```text
  MCP GET status=401
  ... {"error":"Missing Authorization header"}
  MCP POST status=401
  ```
  Event 206:

  ```text
  Missing Authorization header
  status=401
  ```
  Event 37:

  ```text
  Your client must support OAuth for browser-based authentication, or a Bearer token for an approved headless setup.
  ```
  Event 48:

  ```text
  To get access, [contact us](https://anima-forms.typeform.com/to/FMPjqS4M?utm_source=content\&utm_medium=website\&utm_campaign=api\&utm_content=api-lp)
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No self-service way to get an Anima API/SDK token**: Anima's actual product API (the hosted SDK/API the prompt asked for) requires a Bearer token or OAuth login only a human can obtain, via a sales 'contact us' form or browser OAuth for MCP. This is normal gated-API product behavior, not a bug, but it fully blocked the agent: both the MCP endpoint and the codegen REST endpoint returned 401 with no credentials the agent could self-provision.
  Event 185:

  ```text
  {"error":"Missing Authorization header"}
  ```
  Event 206:

  ```text
  Missing Authorization header
  status=401
  ```
  Event 37:

  ```text
  Anima account: Sign in to access your team's playgrounds and approved capabilities
  ```
- **Pricing page has no static plan data, forcing a billing-backend workaround**: The public /pricing page renders plans via an embedded Stigg widget with no server-rendered price text, so the agent extracted the Stigg client API key from bundled JS and queried Stigg's GraphQL API directly to get real plan names and prices. This is a site-implementation quirk (client-side rendered pricing), not an agent mistake, and took roughly 10 tool calls to work around.
  Event 61:

  ```text
  window.__NUXT__=(function(a,b){return {staticAssetsBase...
  ```
  Event 99:

  ```text
  this.stigg=Stigg({apiKey:"client-a3e6851f-9607-4344-b3da-dffcb2a1db50:94e13372-a861-4221-bc2e-7c5c8634e1d4"})
  ```
  Event 178:

  ```text
  totalCount 447
  ---
  refId: plan-anima-free
  displayName: Free
  ```

#### Suggested Changes
- **Add a self-service API key flow for the Anima API/SDK**: Currently the only path to Anima API/SDK credentials is the 'contact us' Typeform linked from docs.animaapp.com/docs/anima-api and the site's /api page, requiring human sales interaction with no headless alternative. A dashboard 'API Keys' page letting an existing account generate a scoped token would let developers test the SDK's documented generateCode() pattern without a contact form. Verify by having a fresh account generate a token and successfully call generateCodeFromPrompt.
  Event 48:

  ```text
  To get access, [contact us](https://anima-forms.typeform.com/to/FMPjqS4M?utm_source=content\&utm_medium=website\&utm_campaign=api\&utm_content=api-lp)
  ```
- **Render plan names and prices as static text on the pricing page**: The pricing page at animaapp.com/pricing ships plan details only through a client-side Stigg widget with no server-rendered fallback, forcing scripted access to extract a third-party billing API key just to see prices. Rendering plan names/prices server-side would let a plain curl request confirm pricing. Verify by curling the page and checking plan names/prices appear in the raw HTML.
  Event 26:

  ```text
  Forget token anxiety. Focus on your creativity. Build freely with simple, predictable pricing
  ```
  Event 178:

  ```text
  refId: plan-anima-pro
  displayName: Pro
  desc: Built for fast-moving teams building together
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/936398fe-7fba-47e6-8ad2-e260bed82468) · [Read transcript](https://www.ax-check.com/useanima.sh/sessions/kimi.json)
Final output lists Free/Pro/Enterprise tiers with named assumptions — Pro's exact number flagged as unscraped client-rendered value, Enterprise stated as 'starts at $500/mo billed annually'.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent found the AgentGrid CLI's device-login flow (npx @animaapp/cli login) as the only self-serve credential path, but device login requires a human to open a verification URL and approve the request. The agent generated two device codes and waited, but the login never completed within the session -- no credentials file appeared and no authenticated API call was ever made. The session ends with the agent explicitly asking the human to click the verification link.
  Event 92:

  ```text
  {"event":"verification_required","verificationUri":"https://projects.animaapp.com/device","verificationUriComplete":"https://projects.animaapp.com/device?user_code=PVLC-4VU3&platform=agentgrid","userCode":"PVLC-4VU3","expiresIn":900}
  ```
  Event 99:

  ```text
  not approved yet
  ```
  Event 101:

  ```text
  The CLI's device login (the only self-serve path, no account needed on my side) is running and waiting for human approval. To unblock, open this within ~15 minutes of my last attempt
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Device login requires human approval, no token obtained**: The only self-serve authentication path found (npx @animaapp/cli login) is a device-code flow: it prints a verification URL and code, then polls until a human opens the link and approves the request in a browser. This is normal product behavior (not a defect), but it meant the agent could not obtain a real Anima API/SDK token on its own within the session. Two separate login attempts were started; both timed out or were left pending without human action, so no authenticated operation against the hosted API was ever performed.
  Event 73:

  ```text
  The machine running the CLI needs **no browser and no human sitting at it**. The
  command prints a short code and a verification URL; a human opens that URL on
  _any_ device, picks the workspaces/capabilities, names the agent, and approves.
  ```
  Event 80:

  ```text
  {"event":"verification_required","verificationUri":"https://projects.animaapp.com/device","verificationUriComplete":"https://projects.animaapp.com/device?user_code=8WWT-HJZQ&platform=agentgrid","userCode":"8WWT-HJZQ","expiresIn":900}
  ```
  Event 87:

  ```text
  Command exited with code 2
  ```
- **API/SDK access is sales-gated, not self-serve**: The Anima SDK (npm @animaapp/anima-sdk) requires an API token that Anima only issues after a manual 'contact us' request via Typeform, rather than instant self-signup. This blocked the agent from running its written example script (anima-example.mjs) end-to-end with real credentials -- it is product-side gating, not agent error.
  Event 35:

  ```text
  👉 To get access, [contact us](https://anima-forms.typeform.com/to/FMPjqS4M?utm_source=content\&utm_medium=website\&utm_campaign=api\&utm_content=api-lp)
  ```
  Event 101:

  ```text
  API access itself is request-gated (Typeform "contact us"), not self-serve.
  ```

#### Suggested Changes
- **Render pricing tier discount numbers server-side on the pricing page**: On animaapp.com/pricing, the Pro plan's exact price/discount figures are injected client-side (via the Stigg paywall widget) and were not present in the static HTML the agent fetched, only the generic marketing copy 'up to 60% savings' came through. Serve the actual price number in the initial HTML response so scripted/agent fetches (curl, static rendering) can read exact Pro plan pricing without executing JavaScript; verify by curling the page and confirming a literal price appears in the output.
  Event 54:

  ```text
  Unlock up to 60% savings with our Pro plan, featuring 5000 code exports/month, unlimited Figma inspects, and more exclusive benefits.
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/d2bc768a-2ff3-4029-8ea3-94e99a2a8584) · [Read transcript](https://www.ax-check.com/useanima.sh/sessions/qwen.json)
README.md pricing section states Free/Pro/Enterprise figures ($500/mo Enterprise, 5,000 exports/month Pro) while naming assumptions/caveats — metering unit, billing cadence, and that plan cards are client-rendered so exact price points weren't extractable from the static page.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained a real Anima API token. It self-provisioned only npm packages (public, no auth) and explicitly stated that Anima API/SDK access is gated behind a manual 'contact us' request, not self-serve signup. It ran the SDK with a dummy/invalid token, which correctly returned an 'Invalid Anima token' error from the hosted API — this confirms the network path works but is NOT a successful authenticated operation, since no real resource was created or queried. No environment variable or secret for ANIMA_TOKEN existed, and the agent did not acquire one.
  Event 124:

  ```text
  ANIMA_TOKEN=dummy-invalid-token timeout 90 node src/generate.ts --prompt "A pricing page with three tiers" --out out/prompt
  ```
  Event 124:

  ```text
  Anima generation failed: Invalid Anima token
  ```
  Event 134:

  ```text
  API/SDK access is *not* self-serve — docs say "contact us to get access", and there's no `ANIMA_TOKEN` here.
  ```
  Event 132:

  ```text
  Anima generation failed: Invalid Anima token
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Anima API access requires manual approval, not self-serve signup**: The docs page for the Anima API explicitly says access is granted by contacting Anima's team rather than through automatic signup/token generation, so no agent-obtainable credential exists in this environment. This is product behavior (a deliberate gating decision), not agent error — the agent correctly identified this, tried a dummy token to prove the request path worked, and stopped rather than fabricating success.
  Event 28:

  ```text
  👉 To get access, contact us
  ```
  Event 124:

  ```text
  Anima generation failed: Invalid Anima token
  ```
- **Pricing page renders plan prices client-side, blocking static extraction**: The agent fetched the static HTML of animaapp.com/pricing but could not find concrete Free/Pro/Business dollar figures in the raw markup — only FAQ text and Enterprise pricing were present as static text; the rest is rendered by JavaScript after load. This is a test-environment/tooling limitation (curl-only fetch, no JS execution) rather than a product defect.
  Event 44:

  ```text
  provided the mo\nprovided the mo
  ```
  Event 134:

  ```text
  Caveat: plan cards are client-rendered, so exact Free/Pro price points weren't extractable from the static page
  ```

#### Suggested Changes
- **Publish concrete Free/Pro/Business price points as static page text**: On animaapp.com/pricing, the Enterprise tier price ($500/mo) is present in static HTML/metadata, but Free and Pro tier dollar amounts are only available in the FAQ text and og:description meta tag ('5000 code exports/month'), not as clearly labeled static price figures. Adding the actual $/mo numbers for Free and Pro as plain server-rendered text (not solely client-rendered plan cards) would let automated tools and users without JS confirm current pricing without contacting sales.
  Event 44:

  ```text
  Unlock up to 60% savings with our Pro plan, featuring 5000 code exports/month, unlimited Figma inspects
  ```
- **Add a self-serve API token request or trial flow to the Anima API docs**: The Anima API documentation page currently only offers a 'contact us' link for gaining access, which blocks any automated or first-time-developer evaluation of the hosted API within a single session. Adding a self-serve trial key (even rate-limited) on https://docs.animaapp.com/docs/anima-api would let developers validate the SDK end-to-end without a manual sales step, as this session was able to validate everything except actual authenticated code generation.
  Event 28:

  ```text
  👉 To get access, contact us
  ```

### Task given to each agent
Help me build a simple example using Anima. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.

No product credentials were supplied and no purchases were authorized.

## Score: B · 84/100 (provisional)
Grades come from completed site checks. Coding sessions and skipped checks do not affect the score.

### Clarity
- **Failed** — Homepage answers Markdown requests

  ```text
  Homepage returned text/html for a text/markdown request; no Markdown representation offered.
  ```

- **Pass** — llms.txt provides an actionable documentation index

  ```text
  llms.txt lists docs, API, MCP, SDK, CLI, skill manifest and quickstart guidance.
  ```

- **Pass** — llms.txt provides navigation guidance

  ```text
  llms.txt gives surfaces, decision guide, quickest path and organized doc sections.
  ```

- **Pass** — llms.txt mentions offered API, MCP, and skills

  ```text
  llms.txt documents API base/endpoints, MCP tools and the skill manifest.
  ```

- **Pass** — A compact guide representation exists

  ```text
  skill.md is a standalone Markdown guide covering signup, email, verification, SMS and voice.
  ```

- **Pass** — A focused guide is directly retrievable

  ```text
  skill.md fetched directly as text/markdown with a complete agent onboarding workflow.
  ```

- **Pass** — Equivalent instructions fit a token budget

  ```text
  skill.md is 5788 tokens, under the 8000-token budget, and its workflow stays usable.
  ```

- **Skipped** — Product-docs links survive format changes

  ```text
  Homepage Markdown is unsupported, so link preservation across formats cannot be measured.
  ```

- **Pass** — The compact guide is independently actionable

  ```text
  skill.md gives concrete signup, email, verify, SMS and call steps with curl commands and responses.
  ```

- **Pass** — Install and next-step links resolve

  ```text
  Fetched quickstart-email, quickstart-voice, skill.md, ai-agents and OpenAPI all returned 200.
  ```


### Onboarding
- **Pass** — Docs lead to a relevant quickstart

  ```text
  llms.txt links Getting Started and quickstart-email/voice pages with concrete first steps.
  ```

- **Pass** — Installation commands are extractable

  ```text
  Quickstarts show pip install anima-labs, npm install @anima-labs/sdk, and npm install -g @anima-labs/cli.
  ```

- **Pass** — Code examples are available without interaction

  ```text
  Quickstart pages embed full Python and TypeScript code examples inline, no interaction needed.
  ```

- **Pass** — Prerequisites and auth boundaries are explicit

  ```text
  Prerequisites list master key mk_ from console, org ID, and Python/Node versions; auth boundaries clear.
  ```


### Pricing
- **Pass** — Pricing is readable without interaction

  ```text
  Pricing page renders all four tiers, prices and rate card as static text without interaction.
  ```

- **Pass** — Prices are stated, not gated

  ```text
  Free $0, Starter $19/mo, Growth $199/mo, Enterprise custom all stated openly.
  ```

- **Pass** — Pricing units and limits are explicit

  ```text
  Per-identity units, quotas, per-minute and per-message rates, and caps are explicit.
  ```

- **Pass** — Agents identify pricing and its assumptions

  ```text
  2 of 3 sessions were judged on pricing; 0 fell short. Kimi K3: Final output lists Free/Pro/Enterprise tiers with named assumptions — Pro's exact number flagged as unscraped client-rendered value, Enterprise stated as 'starts at $500/mo billed annually'. Qwen 3.8 Max: README.md pricing section states Free/Pro/Enterprise figures ($500/mo Enterprise, 5,000 exports/month Pro) while naming assumptions/caveats — metering unit, billing cadence, and that plan cards are client-rendered so exact price points weren't extractable from the static page. This behavioural item does not affect the fast grade.
  ```


### Activation
- **Pass** — An API reference or OpenAPI spec is reachable

  ```text
  OpenAPI 3.1 spec reachable at docs.useanima.sh/openapi.json and api-reference page links it.
  ```

- **Pass** — An MCP server is documented and well-formed

  ```text
  MCP server documented with hosted endpoint, stdio package, auth, and tool groups.
  ```

- **Pass** — A CLI install path is documented

  ```text
  CLI install documented: npm install -g @anima-labs/cli, brew, bun, npx.
  ```

- **Pass** — SDK packages resolve on their registries

  ```text
  Registry lookups returned HTTP 200 for @anima-labs/cli, @anima-labs/sdk, and anima-labs.
  ```

- **Pass** — Agent skills are published

  ```text
  Agent skill manifest published at useanima.sh/skill.md with onboarding workflow.
  ```



[Full report data](https://www.ax-check.com/useanima.sh/report.json)
