# AX Check: proformalabs.ai
Checked 2026-09-18.

Setup docs are solid, but no agent can find a price.
Onboarding, CLI, API and MCP docs all pass cleanly. Pricing is absent from the homepage, and sessions found no published price list.

## Onboarding needs a login

## Coding sessions
All three independent sessions completed their task, but two that were checked for pricing hit a dead end: Kimi K3 reported no published pricing and pointed to sales, while Qwen 3.8 Max found no price list and only paraphrased terms-of-service language about possible free, usage-limited, invite-only, beta, or paid tiers. Neither named an actual dollar figure or cost estimate.

### DeepSeek V4 Pro
[View public run](https://agents.withgauge.com/p/runs/e08eac84-0a38-4b89-8b7c-70533c89e97b) · [Read transcript](https://www.ax-check.com/proformalabs.ai/sessions/deepseek.json)

#### End-to-end onboarding
- **Onboarding needs a login**: Agent thoroughly explored ProForma Labs' public discovery docs (skill.md, llms.txt, OpenAPI schema) and confirmed the exact hosted API surface, but never obtained a real bearer token. It correctly identified that every write operation (POST /v1/auth/device, GET /v1/session, POST /v1/pages/validate, PUT /v1/fs) requires a browser-approved human login, checked no PROFORMA_API_TOKEN env var existed, hit 401 unauthorized on unauthenticated calls to session/fs/validate, and stopped rather than fabricate a success. No authenticated operation was ever performed against the hosted product.
  Event 54:

  ```text
  NO PROFORMA ENV VARS
  ```
  Event 148:

  ```text
  HTTP 401
  {"error":{"code":"unauthorized","message":"Missing external agent token","requestId":"3f3d589c-e8f0-4e0a-ab8c-b7336d7fb11e","requiredScopes":[],"details":{},"authorizationUrl":null}}
  ```
  Event 165:

  ```text
  every real operation beyond reading the public discovery docs requires a scoped bearer token from a browser-authorized session (`prfm login` or `POST /v1/auth/device` → human approves → `POST /v1/auth/token`). I have no `PROFORMA_API_TOKEN` in this environment, and this is a human-in-the-loop approval I can't and shouldn't perform myself.
  ```

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

#### Blockers
- **Human browser approval required for any write operation**: ProForma's device-authorization flow (POST /v1/auth/device → browser approval → POST /v1/auth/token) is by design a human-in-the-loop step; the agent had no pre-supplied token and correctly could not self-approve. This is normal product authentication behavior, not a defect — the agent verified it by hitting 401 on session/fs/validate calls without a token, then stopped and documented the exact steps a human would need to run.
  Event 119:

  ```text
  HTTP 401
  {"error":{"code":"unauthorized","message":"Missing external agent token","requestId":"c97ce8d9-eb44-40c6-b86d-64b8c873936e","requiredScopes":[],"details":{},"authorizationUrl":null}}
  ```
  Event 165:

  ```text
  I have no `PROFORMA_API_TOKEN` in this environment, and this is a human-in-the-loop approval I can't and shouldn't perform myself.
  ```
- **No public pricing information available**: The agent checked the marketing site's /pricing route (404) and scanned product, company, signup, and agent-guide pages for tiers or costs and found none published. This is a product/marketing gap rather than an agent error — pricing appears to be signup- or sales-led.
  Event 109:

  ```text
  === https://proformalabs.ai/pricing ===
  HTTP 404
  ```
  Event 165:

  ```text
  I could not verify pricing — **it is not published publicly.** There is no `/pricing` route on the site (404), and none of the product/company/signup pages or agent guides list tiers or prices.
  ```

#### Suggested Changes
- **Add a public pricing page or explicit sales-led notice**: Create a /pricing route on proformalabs.ai (currently 404) or add a short pricing/plans statement to the product, company, or signup pages so agents and prospective developers don't have to infer that pricing is sales-led. Verify by re-fetching https://proformalabs.ai/pricing and confirming it returns 200 with tier or contact-to-price info instead of 404.
  Event 109:

  ```text
  === https://proformalabs.ai/pricing ===
  HTTP 404
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/45e586ed-949f-4e73-8cf5-d091ec95b04b) · [Read transcript](https://www.ax-check.com/proformalabs.ai/sessions/kimi.json)
Final output only reports "There is no published pricing" and defers to sales ("you'd need to ask their team") — no cost figure or estimate is stated at all, so there is nothing with named assumptions (plan/region/workload) to evaluate.
#### End-to-end onboarding
- **Onboarding needs a login**: Agent installed the real @prfm/cli, correctly discovered the live device-authorization flow via the product's own docs, and initiated prfm login. It received a genuine verification URL and user code from the hosted app.proformalabs.ai service, but the session ends with the agent explicitly waiting on the human to open the browser link and approve the workspace scopes. No authenticated operation (e.g., fs put, page validate, database create) was ever performed because the token exchange never completed within the transcript.
  Event 65:

  ```text
  nohup prfm login --access build --scope workspace:read --scope workspace:write --purpose "Build a simple example Page to evaluate Proforma" > /tmp/prfm-login.log 2>&1 &
  ```
  Event 66:

  ```text
  Authorize this shell in your browser:
    https://app.proformalabs.ai/connect/agent#code=LX6P-WBK5
  Confirm code: LX6P-WBK5
  Waiting for approval…
  ```
  Event 68:

  ```text
  I'm blocked on you — one step needed. I've initiated authorization for a minimal `build` grant (read + write Workspace files only, no data connections or operational effects). To proceed, please:
  ```

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

#### Blockers
- **Human browser approval required before any write can proceed**: Proforma's device-authorization flow (by design) requires a human to open a verification URL and approve workspace scopes before the CLI can obtain a usable bearer token. This is normal product security behavior, not a defect, but it did stop the agent from building or committing the requested example Page within this session.
  Event 66:

  ```text
  Authorize this shell in your browser:
    https://app.proformalabs.ai/connect/agent#code=LX6P-WBK5
  Confirm code: LX6P-WBK5
  Waiting for approval…
  ```
  Event 68:

  ```text
  I'm blocked on you — one step needed.
  ```
- **No public pricing information available**: The agent could not find any pricing page or tier/plan details anywhere on the marketing site; /pricing returned 404 and no other page mentioned cost. This is a product documentation gap rather than an agent error, since the agent checked the obvious pages (pricing, product, company, developers).
  Event 49:

  ```text
  127:If the CLI is unavailable, an HTTP-capable agent can use the installation-free
  128-device flow.
  ```
  Event 32:

  ```text
  404
  200
  # Proforma
  ```

#### Suggested Changes
- **Add a pricing page or link at proformalabs.ai/pricing**: Requesting https://proformalabs.ai/pricing returned a 404, and none of /product, /company, /integrations, /security, or /roadmap mention cost, tiers, or trial terms. Add a pricing page (or a clear 'contact sales' explanation with expected cost ranges) at that URL and verify it resolves with a 200 and states plan/tier information.
  Event 32:

  ```text
  404
  200
  # Proforma
  ```
  Event 56:

  ```text
  == product ==
  == company ==
  == integrations ==
  == security ==
  == roadmap ==
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/503e9b78-9310-46ef-ac69-44c2c50f22c3) · [Read transcript](https://www.ax-check.com/proformalabs.ai/sessions/qwen.json)
Final output never states an actual cost figure — only 'no public price list' and a paraphrase of ToS §9 ('services may be free, usage-limited, invite-only, beta, or paid'), so no dollar amount plus plan/region/workload assumptions is given as the rubric requires.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained a usable credential during the session. It correctly identified the CLI (@prfm/cli), pulled docs/OpenAPI, wrote a valid Page project, and initiated the device-authorization flow twice, but both attempts only produced a userCode/verificationUrl requiring a human to approve in a browser. It explicitly declined to wait/poll for approval and stopped, so no authenticated operation (page validate, fs put, etc.) was ever executed against the hosted product.
  Event 99:

  ```text
  {'userCode': 'JZKY-8VJT', 'verificationUrlComplete': 'https://app.proformalabs.ai/connect/agent#code=JZKY-8VJT', 'expiresInSeconds': 900, 'pollAfterSeconds': 5}
  ```
  Event 95:

  ```text
  error: Not logged in.
  hint:  Run `prfm login` or set PROFORMA_API_TOKEN.
  ```
  Event 105:

  ```text
  Even static validation requires an agent token, and the only way to get one is the device-authorization flow — a person must approve in a browser.
  ```

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

#### Blockers
- **Human browser approval required to obtain any agent token**: ProForma's device-authorization flow (POST /v1/auth/device) requires a person to open a link and approve a workspace/scope grant before any token is issued. This is normal product behavior (by design, per the CLI README and skill doc), not a bug, but it fully blocked the agent from running even static validation (`prfm page validate`) or any write, since both the CLI and raw HTTP endpoints reject unauthenticated requests.
  Event 95:

  ```text
  error: Not logged in.
  hint:  Run `prfm login` or set PROFORMA_API_TOKEN.
  ```
  Event 99:

  ```text
  {"error":{"code":"unauthorized","message":"Missing external agent token","requestId":"5854894b-add5-4379-8199-590a9967dafc","requiredScopes":[],"details":{},"authorizationUrl":null}}
  ```
- **No public pricing page or tiers on the marketing site**: The agent searched the homepage, /developers, /company, and terms of service but found no published price list; pricing is described only generically in the Terms of Service as order/invoice-based. This is a product content gap rather than an agent error, though it did not block the coding task itself.
  Event 68:

  ```text
  Some Proforma services may be free, usage-limited, invite-only, beta, or paid. Paid subscriptions, pilots, services, and usage commitments are governed by the applicable order, checkout flow, invoice, or written agreement.
  ```

#### Suggested Changes
- **Add a pre-provisioned token path or sandbox mode for automated onboarding tests**: Since every credential path (browser login or device flow) requires a human to click approve, unattended agent evaluation can never reach an authenticated operation. Consider documenting a scriptable service-account or sandbox-token issuance path (beyond the existing 'pre-provisioned environment' variable import) directly in the CLI README's Log In section, and verify by having a fresh agent session obtain and use a token without any human step.
  Event 36:

  ````text
  For a pre-provisioned environment, manual token import and environment
  variables remain available:
  
  ```bash
  prfm login --api-url https://your-proforma-host.example --token prfm_agent_xxx
  export PROFORMA_API_URL=https://your-proforma-host.example
  export PROFORMA_API_TOKEN=prfm_agent_xxx
  ```
  ````
- **Publish a pricing page linked from the homepage or /developers**: Add a dedicated /pricing route with at least indicative tiers or usage-based rates, linked from the main navigation or the /developers page. Verify by checking that curling the homepage or /developers surfaces a working pricing link instead of only the interactive pricing-experiment demo widget.
  Event 44:

  ```text
  Pricing exp
  ```
  Event 59:

  ```text
  (no output)
  ```

### Task given to each agent
Help me build a simple example using ProForma Labs. 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 · 81/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 served.
  ```

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

  ```text
  llms.txt links docs, product map, guides, API map, CLI and MCP starting points.
  ```

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

  ```text
  llms.txt gives ordered 'Start the job' steps and a public product map for navigation.
  ```

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

  ```text
  llms.txt references the v1 API map, coding-agent CLI, and MCP connection.
  ```

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

  ```text
  skill.md is a standalone Markdown compact guide fetched with 200 and text/markdown.
  ```

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

  ```text
  skill.md and llms.txt are directly retrievable Markdown guides with concrete steps.
  ```

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

  ```text
  skill.md is 1443 tokens, well under the 8000-token budget.
  ```

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

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

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

  ```text
  skill.md gives ordered, concrete steps: read llms.txt, choose access, prfm login, verify, build.
  ```

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

  ```text
  skill.md and llms.txt links to /developers, /product, /agents, app login all fetched or advertised.
  ```


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

  ```text
  llms.txt 'Start the job' gives ordered onboarding steps and links the full agent playbook.
  ```

- **Pass** — Installation commands are extractable

  ```text
  llms.txt shows extractable commands: `prfm login`, `prfm whoami`, `prfm page validate`.
  ```

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

  ```text
  llms.txt lists concrete HTTP routes and CLI commands inline without interaction.
  ```

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

  ```text
  llms.txt details device auth, scopes, token storage, and workspace verification.
  ```


### Pricing
- **Failed** — Agents identify pricing and its assumptions

  ```text
  2 of 3 sessions were judged on pricing; 2 fell short. Kimi K3: Final output only reports "There is no published pricing" and defers to sales ("you'd need to ask their team") — no cost figure or estimate is stated at all, so there is nothing with named assumptions (plan/region/workload) to evaluate. Qwen 3.8 Max: Final output never states an actual cost figure — only 'no public price list' and a paraphrase of ToS §9 ('services may be free, usage-limited, invite-only, beta, or paid'), so no dollar amount plus plan/region/workload assumptions is given as the rubric requires. This behavioural item does not affect the fast grade.
  ```

- **Skipped** — Pricing is readable without interaction

  ```text
  No pricing page fetched; homepage shows no prices, only signup and contact links.
  ```

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

  ```text
  No pricing page fetched; homepage shows no prices, only signup and contact links.
  ```

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

  ```text
  No pricing page fetched; homepage shows no prices, only signup and contact links.
  ```


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

  ```text
  Agent API job map documents v1 routes, scopes, and links to the live v1/OpenAPI discovery document.
  ```

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

  ```text
  MCP endpoints /mcp and /mcp/analysis documented with POST method and scopes; 401 confirms auth boundary.
  ```

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

  ```text
  CLI install path documented: `prfm login`, `prfm whoami`, `prfm page validate`, `prfm fs put`.
  ```

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

  ```text
  No SDK package registry lookup or package name supplied in fetched evidence.
  ```

- **Pass** — Agent skills are published

  ```text
  skill.md is a published, independently actionable agent skill with discovery and connection workflow.
  ```



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