# AX Check: featbit.co
Checked 2026-10-06.

Agents can install FeatBit and find pricing fast, no login wall
21 of 23 checklist items passed: docs, API reference, CLI, MCP server and skills are all reachable, and pricing is stated in plain text with no gating.

## Onboarding needs a login

## Coding sessions
All three independent sessions completed and reviewed pricing successfully, though they landed on different figures: one cited MAU-tiered cloud plans, another cited Foundation/Enterprise self-host pricing from the pricing page, and the third cited a different cloud tier table pulled from the live site, suggesting the pricing page may present varying numbers.

### DeepSeek V4.1 Flash
[View public run](https://agents.withgauge.com/p/runs/81cd8129-e0cb-4bde-b13d-a53a895a1e5b) · [Read transcript](https://www.ax-check.com/featbit.co/sessions/deepseek.json)
README.md and final summary give MAU-tiered Cloud pricing (Free/Pro/Growth/Enterprise) and feature-gated self-host pricing, explicitly naming the metering basis (MAU vs features) and noting the date prices were read and to verify before purchase.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained real FeatBit Cloud credentials. It built a working demo pointed at the hosted product but had no account/SDK key, so it tested the connection path only with a fake key, which produced a WebSocket handshake success followed by an authentication failure (SDK init timeout) and a 401 from the REST evaluation endpoint. No authenticated product operation (flag read/write, evaluation result) was ever completed.
  Event 205:

  ```text
  I have **no FeatBit Cloud account or SDK key**, so I could not run a real flag evaluation.
  ```
  Event 163:

  ```text
  warn: [FeatBit] FbClient failed to start successfully within 8000 milliseconds. This error usually indicates a connection issue with FeatBit or an invalid sdkKey.
  ```
  Event 193:

  ```text
  curl: (22) The requested URL returned error: 401
  
  HTTP 401
  ```

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

#### Blockers
- **No self-service FeatBit Cloud account or SDK key**: The sandbox had no FeatBit credentials and no way to sign up/obtain a key without human interaction, so the agent could not run a genuine flag evaluation against the hosted product. This is a missing-credentials limitation of the test environment, not a product defect — FeatBit requires normal signup/login to issue SDK keys and access tokens.
  Event 205:

  ```text
  I have **no FeatBit Cloud account or SDK key**, so I could not run a real flag evaluation.
  ```
  Event 163:

  ```text
  Could not initialize the SDK: FbClient failed to start successfully within 8000 milliseconds.
  ```

#### Suggested Changes
- **Clarify evaluation-API host separate from management API host in the Using FeatBit REST API guide**: The agent found via probing that the Flag Evaluation API lives on app-eval.featbit.co (401 on bad auth) while the management REST API lives on app-api.featbit.co (404 for the evaluation path), but the docs page for 'Using FeatBit REST API' does not state this host split explicitly. Add a note on https://docs.featbit.co/api-guides/using-featbit-rest-api clarifying which host serves which API family, and verify by confirming a reader can determine the correct base URL without trial-and-error curl probing.
  Event 167:

  ```text
  https://app-api.featbit.co/api/public/featureflag/evaluate 404
  https://app-eval.featbit.co/api/public/featureflag/evaluate 401
  ```
  Event 205:

  ```text
  Endpoints confirmed by probing: streaming/events = `app-eval.featbit.co`; management REST = `app-api.featbit.co` (the evaluation API is *not* on `app-api`).
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/9beadfee-df09-4dc2-a6f6-426e040b0fdf) · [Read transcript](https://www.ax-check.com/featbit.co/sessions/kimi.json)
Final output lists concrete tiers (Foundation $0, Enterprise $3,999/yr, Enterprise Premium custom) sourced from featbit.co/pricing and flags the assumption that this is self-host pricing, noting hosted SaaS isn't prominently priced on that page.
#### End-to-end onboarding
- **Onboarding needs a login**: Agent searched for a programmatic signup path on FeatBit's hosted SaaS all session. It confirmed no public email/password registration endpoint exists (only login/refresh/logout/reset-password), guessed register/signup routes that all 404'd, and found login-by-email just rejects fake credentials. The only auth path is Google/GitHub OAuth in a browser, needing a human. No SDK key was ever obtained, so no authenticated product operation occurred; the agent only ran a negative test with an invalid key against the real streaming endpoint, which correctly failed fast.
  Event 84:

  ```text
  {"success":false,"errors":["EmailPasswordMismatch"],"data":null}
  HTTP 200
  ```
  Event 88:

  ```text
  == register-by-email ==
  
  HTTP 404
  
  == register ==
  
  HTTP 404
  
  == signup ==
  
  HTTP 404
  ```
  Event 180:

  ```text
  Signup is gated behind Google/GitHub OAuth in a browser — that's a hard block for me creating an account headlessly.
  ```
  Event 206:

  ```text
  init failed as expected with bad key: Error: FbClient failed to start successfully within 6000 milliseconds. This error usually indicates a connection issue w
  ```

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

#### Blockers
- **No self-service signup for FeatBit's hosted SaaS**: Product behavior, not agent error: FeatBit's app.featbit.co only supports Google/GitHub OAuth login, confirmed by inspecting the IdentityController source (only login-by-email, refresh-token, logout, reset-password routes exist) and by 404s on guessed register/signup endpoints. This requires an interactive browser session a headless agent cannot complete, so no SDK key could be obtained to run the example against the live hosted service.
  Event 125:

  ```text
  [HttpPost]
      [AllowAnonymous]
      [Route("login-by-email")]
      public async Task<ApiResponse<LoginToken>> LoginByEmailAsync(LoginByEmail request)
  ```
  Event 88:

  ```text
  == register-by-email ==
  
  HTTP 404
  
  == register ==
  
  HTTP 404
  
  == signup ==
  
  HTTP 404
  ```
  Event 180:

  ```text
  Signup is gated behind Google/GitHub OAuth in a browser — that's a hard block for me creating an account headlessly.
  ```
- **Legacy evaluation environment no longer accessible**: Test environment limitation: the agent found an older 'app-eval.featbit.co' evaluation subdomain referenced in prior docs/config, but it now returns 401 on its login page, closing off what might have been an easier-to-test path.
  Event 66:

  ```text
  ---
  401
  
  ```
  Event 76:

  ```text
  HTTP/2 401 
  date: Tue, 06 Oct 2026 01:57:14 GMT
  strict-transport-security: max-age=31536000; includeSubDomains
  
  
  ```

#### Suggested Changes
- **Fix the broken pricing link referenced from the docs/homepage flow**: Requesting https://www.featbit.co/pages/pricing returns a 404 page ('Page Not Found | FeatBit'), while the correct working URL is https://www.featbit.co/pricing. Check for the broken link wherever '/pages/pricing' is referenced internally and point it to the working '/pricing' path; verify by curling the link and confirming a 200 response with pricing content.
  Event 32:

  ```text
  Page Not Found | FeatBit 404 Page not found This page is not available. Start from the FeatBit homepage or browse the current product and documentation entry points. Home Developers Pricing
  ```
- **Offer a programmatic or API-token signup path for the hosted SaaS**: Currently app.featbit.co only supports Google/GitHub OAuth login, confirmed via IdentityController routes and 404s on register/signup endpoints, blocking headless or agent-driven account creation. Consider a documented API for provisioning a trial org/API key so developers evaluating the SDK without a browser can get a working server secret; verify by confirming a new key can be minted via API call alone and used against app-api.featbit.co.
  Event 88:

  ```text
  == signup ==
  
  HTTP 404
  ```
  Event 180:

  ```text
  Signup is gated behind Google/GitHub OAuth in a browser — that's a hard block for me creating an account headlessly.
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/f1f209db-52e8-4b71-818a-f2e43216b152) · [Read transcript](https://www.ax-check.com/featbit.co/sessions/qwen.json)
Final summary gives a pricing table (Free $0/1K MAU, Pro $49/10K, Growth $149/40K, Enterprise $449/80K) explicitly tied to the live `useNewPricingFlag: true` layout verified in client JS, with overage/RBAC/annual-discount assumptions and self-host tiers called out separately.
#### End-to-end onboarding
- **Onboarding needs a login**: No real FeatBit credentials were obtained. The agent confirmed the hosted dashboard's auth API only exposes login-by-email/reset-password/refresh-token/logout (all signup paths 404). A second dashboard offers self-serve sign-up via Supabase (email confirmation or GitHub OAuth), both needing human involvement the agent lacked. No SDK key was acquired, so no authenticated product operation was demonstrated; example runs used invalid/missing keys and fell back to local defaults only.
  Event 142:

  ```text
  /api/v1/identity/login-by-email          200  {"success":false,"errors":["EmailPasswordMismatch"],"data":null}
  ```
  Event 180:

  ```text
  Decisive: the dashboard has **"Don't have an account? Sign up"** and **GitHub OAuth**. Let me examine the signup flow and its API.
  ```
  Event 360:

  ```text
  Missing FEATBIT_SDK_KEY.
    In the FeatBit dashboard: click the environment name (top of any page)
    -> "SDK config" -> copy the *server* secret, then:
       export FEATBIT_SDK_KEY=<server-secret>
  ```

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

#### Blockers
- **No self-serve signup on FeatBit Cloud**: Product behavior: the main hosted dashboard (app.featbit.co) only exposes login endpoints (login-by-email, reset-password, refresh-token, logout) under /api/v1/identity; every signup/register path returns 404. A separate dashboard (dashboard.featbit.co) supports sign-up but via Supabase email confirmation or GitHub OAuth, both requiring human-held credentials the agent does not have. This is a missing-credentials blocker, not an agent error, since the agent correctly mapped all available auth routes before concluding no automatable path existed.
  Event 142:

  ```text
  /api/v1/identity/signup                  404  
  /api/v1/identity/register                404  
  /api/v1/identity/sign-up                 404  
  /api/v1/user/signup                      404  
  /api/v1/identity/login-by-email          200  {"success":false,"errors":["EmailPasswordMismatch"],"data":null}
  ```
  Event 178:

  ```text
  FeatBit Dashboard Open main menu FeatBit Support &amp; Pricing Account Sign in FeatBit Sign in with Github Email address Your Password Sign in Send a magic link email Forgot your password? Don&#x27;t have an account? Sign up
  ```
- **Stale/incomplete cloud DNS and deployment endpoints**: Test environment / product infrastructure: featbit.io no longer resolves, and cloud.featbit.co / api.featbit.co return Vercel DEPLOYMENT_NOT_FOUND rather than real FeatBit responses. This slowed discovery of the real hosted endpoints (app.featbit.co, app-api.featbit.co, app-eval.featbit.co) but did not block the final analysis since the agent found working alternatives.
  Event 14:

  ```text
  https://www.featbit.io           000
  FAIL
  https://cloud.featbit.co         404
  https://api.featbit.co           404
  ```
  Event 22:

  ```text
  The deployment could not be found on Vercel.
  
  DEPLOYMENT_NOT_FOUND
  ```
  Event 32:

  ```text
  Could not resolve host: www.featbit.io
  * Closing connection
  ```
- **SDK option unit mismatch caused a silent 5ms timeout**: Agent error, caught and fixed during the session: startWaitTime is documented only in the generated .d.ts as milliseconds, but the agent initially set .startWaitTime(5) assuming seconds, producing an effectively instant failure path. Found via testing with a bogus key and corrected to the millisecond default (5000); not an unresolved blocker since the agent recovered before finishing.
  Event 346:

  ```text
  warn: [FeatBit] FbClient failed to start successfully within 5 milliseconds. This error usually indicates a connection issue with FeatBit or an invalid sdkKey.
  ```
  Event 351:

  ```text
  How long the client constructor will block awaiting a successful connection to FeatBit, in milliseconds.
       *
       * Defaults to 5000 milliseconds.
  ```

#### Suggested Changes
- **Document that startWaitTime is in milliseconds in the SDK README**: In @featbit/node-server-sdk's README.md Quick Start section, the example code sets no startWaitTime and the unit (milliseconds, default 5000) is only visible in the generated FbClientBuilder.d.ts/IOptions.d.ts, not the README. Add a one-line note next to the Quick Start snippet. Verify by searching the README for 'startWaitTime' and confirming the unit is stated there.
  Event 351:

  ```text
  How long the client constructor will block awaiting a successful connection to FeatBit, in milliseconds.
       *
       * Defaults to 5000 milliseconds.
  ```
  Event 346:

  ```text
  FbClient failed to start successfully within 5 milliseconds. This error usually indicates a connection issue with FeatBit or an invalid sdkKey.
  ```
- **Fix TestData.update() ordering requirement or throw a clearer error**: In @featbit/node-server-sdk's integrations/test_data/TestData.js, calling td.update() before the FbClient is built throws 'this.store.get is not a function' because store/dataSynchronizer are only populated when getFactory() runs during build(). Either initialize store to a safe default in the TestData constructor or add a guard that throws a descriptive error. Verify by calling update() before build() and confirming a clear error instead of a TypeError.
  Event 320:

  ```text
  TypeError: this.store.get is not a function
      at TestData.update (/sandbox/repo/node_modules/@featbit/node-server-sdk/dist/cjs/integrations/test_data/TestData.js:33:46)
  ```
- **Add working redirects or remove dead cloud.featbit.co / api.featbit.co / featbit.io references**: featbit.io no longer resolves via DNS, and cloud.featbit.co and api.featbit.co both return Vercel's DEPLOYMENT_NOT_FOUND rather than redirecting to the current hosted endpoints (app.featbit.co, app-api.featbit.co, app-eval.featbit.co). Audit any docs, marketing pages, or DNS records still pointing to these hosts and either retire or redirect them. Verify by curling each host and confirming either a valid redirect or that no remaining public reference points to it.
  Event 22:

  ```text
  The deployment could not be found on Vercel.
  
  DEPLOYMENT_NOT_FOUND
  ```
  Event 32:

  ```text
  Could not resolve host: www.featbit.io
  * Closing connection
  ```

### Task given to each agent
Help me build a simple example using FeatBit. 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 Markdown Accept header; no Markdown representation offered.
  ```

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

  ```text
  llms.txt links docs, SDK, API, MCP, CLI, skills and pricing with organized sections.
  ```

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

  ```text
  llms.txt groups links under numbered buyer-style headings with a full retrieval index pointer.
  ```

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

  ```text
  llms.txt mentions Open APIs, FeatBit MCP, FeatBit Skills and CLI repositories.
  ```

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

  ```text
  llms.txt is a compact Markdown guide with organized sections and links to docs, SDKs, MCP, CLI and skills.
  ```

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

  ```text
  llms.txt fetched directly at featbit.co/llms.txt returns 200 text/plain Markdown.
  ```

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

  ```text
  llms.txt is 3999 tokens, well under the 8000-token budget.
  ```

- **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
  Skills README gives install command and per-skill usage; SKILL.md routes to official sources.
  ```

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

  ```text
  Fetched install/next-step pages (create flag, connect SDK, skills, MCP) all returned 200.
  ```


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

  ```text
  Docs Getting Started links to '1. Create a feature flag' quickstart with concrete steps.
  ```

- **Pass** — Installation commands are extractable

  ```text
  Docker Compose page gives extractable git clone and docker compose up commands.
  ```

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

  ```text
  CLI README shows inline code examples; docs describe portal-generated starter code.
  ```

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

  ```text
  Prerequisites list login or Docker install; CLI documents api-<token> auth and config.
  ```


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

  ```text
  FeatBit pricing page renders plan cards and a full comparison table as static HTML text.
  ```

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

  ```text
  Prices stated: Foundation $0, Enterprise $3,999/year, Advanced RBAC +$600/yr; Premium custom.
  ```

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

  ```text
  Units explicit: per year, no limits on seats, MAU, projects, service connections.
  ```

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

  ```text
  3 of 3 sessions were judged on pricing; 0 fell short. DeepSeek V4.1 Flash: README.md and final summary give MAU-tiered Cloud pricing (Free/Pro/Growth/Enterprise) and feature-gated self-host pricing, explicitly naming the metering basis (MAU vs features) and noting the date prices were read and to verify before purchase. Kimi K3: Final output lists concrete tiers (Foundation $0, Enterprise $3,999/yr, Enterprise Premium custom) sourced from featbit.co/pricing and flags the assumption that this is self-host pricing, noting hosted SaaS isn't prominently priced on that page. Qwen 3.8 Max: Final summary gives a pricing table (Free $0/1K MAU, Pro $49/10K, Growth $149/40K, Enterprise $449/80K) explicitly tied to the live `useNewPricingFlag: true` layout verified in client JS, with overage/RBAC/annual-discount assumptions and self-host tiers called out separately. This behavioural item does not affect the fast grade.
  ```


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

  ```text
  FeatBit docs API Reference lists 13 resources and 105 endpoints with server URL and token auth.
  ```

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

  ```text
  MCP README documents self-hosted server, endpoint, headers, and hosted https://mcp.featbit.co/mcp.
  ```

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

  ```text
  featbit-cli README documents build, prebuilt downloads, PATH install, and config init quick start.
  ```

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

  ```text
  llms.txt links many FeatBit SDK repos; CLI repo and OpenAPI contract fetched successfully.
  ```

- **Pass** — Agent skills are published

  ```text
  featbit-skills repo publishes two Agent Skills with npx skills add install instructions.
  ```



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