# AX Check: xseek.io
Checked 2026-10-07.

Pricing is clear, but quickstart and install steps are missing
14 of 23 checklist items pass, including clear pricing and a solid docs index, but 8 items on quickstart, install commands, and code examples are unassessed.

## Onboarding needs a login

## Coding sessions
All three independent sessions (DeepSeek V4.1 Flash, Kimi K3, Qwen 3.8 Max) completed and found the same pricing table on the live pricing page: Starter $249.99/mo, Growth $499.99/mo, Scale custom, each noting billing assumptions like monthly terms and plan limits.

### DeepSeek V4.1 Flash
[View public run](https://agents.withgauge.com/p/runs/652d44b6-9af0-4d99-8c57-0e09a7b389c3) · [Read transcript](https://www.ax-check.com/xseek.io/sessions/deepseek.json)
Final output gives a pricing table (Starter $249.99/mo, Growth $499.99/mo, Scale custom) sourced from xseek.io/en/pricing (fetched at seq 63) with stated assumptions: monthly billing, plan limits (prompts/websites/opportunities), USD/CAD toggle.
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: The agent never obtained an xSeek API key. It checked the environment for credentials, found none, and wrote the example script so the authenticated v1 API call is skipped when XSEEK_API_KEY is unset. It only exercised the free, no-auth endpoints (health check, agent-ready scan) and never created or used real credentials, so no authenticated product operation was demonstrated.
  Event 6:

  ```text
  env | grep -i -E 'seek|xseek|api|key'
  ```
  Event 92:

  ```text
  XSEEK_API_KEY not set — skipping. Create a scoped key in Settings > API keys, then: export XSEEK_API_KEY=... && node xseek-example.mjs
  ```
  Event 98:

  ```text
  No XSEEK_API_KEY in the environment, so the authenticated path is written but **not exercised**. The free path is fully tested.
  ```

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

#### Blockers
- **No API key available to test authenticated endpoints**: The sandbox environment had no xSeek credentials, and xSeek's signup/key-creation flow requires a human to log into the dashboard (Settings > API keys) — nothing in the public API lets an agent self-provision a key. This is a normal login/credential limitation of the test environment, not a product defect, but it meant the authenticated v1 API (websites, prompts, metrics, articles) was never actually exercised, only the free no-auth endpoints were.
  Event 6:

  ```text
  env | grep -i -E 'seek|xseek|api|key'
  ```
  Event 92:

  ```text
  XSEEK_API_KEY not set — skipping. Create a scoped key in Settings > API keys, then: export XSEEK_API_KEY=... && node xseek-example.mjs
  ```
- **GET form of agent-ready endpoint rejects documented query parameter**: The OpenAPI spec documents a GET /api/tools/agent-ready?url=... form, but calling it returned a 400 error claiming the parameter was missing, even though it was supplied. This is a product/spec inconsistency (agent error ruled out since the exact documented parameter name was used); the agent worked around it by using the POST form instead, so it did not block the overall example.
  Event 65:

  ```text
  === agent-ready (free, no auth) ===
  {"error":"Missing u"}
  HTTP 400
  ```
  Event 98:

  ```text
  Minor spec bug: `GET /api/tools/agent-ready?url=...` returns `{"error":"Missing u"}` even though the OpenAPI spec documents the query param. The **POST form works correctly**, which is what the example uses.
  ```

#### Suggested Changes
- **Fix the GET /api/tools/agent-ready query parameter handling**: Calling the documented GET form with ?url=https://example.com returned {"error":"Missing u"} (HTTP 400), while the POST form with the same URL in the JSON body worked correctly. Fix the query-param parsing on the GET route (likely reading a truncated or wrong key name) in the agent-ready handler, and confirm the fix by re-running the exact curl command from the OpenAPI example and checking for a 200 with a report body instead of the 400 error.
  Event 65:

  ```text
  === agent-ready (free, no auth) ===
  {"error":"Missing u"}
  HTTP 400
  ```
- **Publish an official SDK or client library on npm**: A search of the npm registry for xseek, @xseek/sdk, xseek-sdk, xseek-api, xseek-js, and @xseek/api returned 404 for all of them, forcing hand-rolled fetch/curl wrappers for every integration. Publish a minimal official client package under a predictable name (e.g. @xseek/sdk) and verify success by confirming `npm view @xseek/sdk version` resolves instead of 404.
  Event 80:

  ```text
  npm error code E404
  npm error 404 Not Found - GET https://registry.npmjs.org/xseek - Not found
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/d1b39a73-535b-4740-9a5d-39f108a7f495) · [Read transcript](https://www.ax-check.com/xseek.io/sessions/kimi.json)
Final output gives a pricing table (Starter $249.99/mo, Growth $499.99/mo, Scale custom, Agency from $250/mo) with assumptions named: monthly billing, prompts/websites tracked per tier, yearly discount, and free tier limited to on-site tools only.
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: The agent never attempted to obtain real xSeek product credentials (no sign-up, no API key retrieval). It only called free, unauthenticated public tool endpoints (robots-check, agent-ready) that require no account. It explicitly stated the authenticated surface (dashboard, CLI login, leaderboards) requires a paid API key it does not have, and it never tried to self-service obtain one. No credential acquisition and no authenticated operation occurred, so onboarding is neither verified nor blocked by a login wall encountered mid-task — it was simply never attempted.
  Event 65:

  ```text
  {"success":true,"data":{"id":"eec39e31-c681-4f10-9bb2-6d68ff579c61","url":"https://stripe.com"
  ```
  Event 99:

  ```text
  The authenticated surface (brand leaderboards, prompt tracking, citation sources, AEO Copilot) is reachable via REST API or the official `xseek` CLI (`xseekio/xseek-cli` on GitHub), but requires an API key from a paid plan — I can't demo that part without an account.
  ```

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

#### Blockers
- **Full authenticated API/CLI requires a paid plan API key**: xSeek's dashboard, CLI login, and REST API for leaderboards/prompt tracking/AEO Copilot all sit behind an API key tied to a paid plan starting at $249.99/mo. This is normal product behavior (a paywall), not a test-environment or agent-caused issue, and the agent correctly declined to fabricate access rather than attempting a workaround.
  Event 52:

  ```text
  Your key is saved to `~/.xseek/config` and used for all future commands. Get your API key at [xseek.io/dashboard/api-keys](https://www.xseek.io/dashboard/api-keys).
  ```
  Event 99:

  ```text
  requires an API key from a paid plan — I can't demo that part without an account.
  ```

#### Suggested Changes
- **Add a free-tier or trial API key path for the documented REST/CLI workflow**: The CLI README (xseekio/xseek-cli) and API docs describe a full authenticated workflow (xseek login, leaderboard, prompt-runs, etc.) but the only way to get an API key is a paid plan starting at $249.99/mo. Consider offering a time-limited trial key or sandbox API key so developers can validate the documented CLI/API workflow before purchasing. Check by having a new developer run `xseek login` with a self-service trial key and confirm `xseek websites` returns real data.
  Event 52:

  ```text
  xseek login YOUR_API_KEY
  ```
  Event 35:

  ```text
  01 · Starter Starter Understand + start taking action $249.99 /mo USD
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/4eb847af-c8e0-4fdb-b7b9-c776dac442c9) · [Read transcript](https://www.ax-check.com/xseek.io/sessions/qwen.json)
README.md pricing table (Starter $249.99/mo, Growth $499.99/mo, Scale custom) is sourced from a live curl of xseek.io/en/pricing (seq 46) and stated with explicit assumptions: USD, monthly, cancel-anytime, no free tier/trial, and a flagged docs-vs-pricing-page discrepancy.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained a real xSeek API key itself. It explored the hosted docs/public endpoint, then deliberately tested its client with no key and a fabricated bogus key — both correctly rejected. Its own README states keys are created in the dashboard, which requires a paid plan via sales call, a human-gated step it could not complete. No authenticated product operation (e.g. creating a website or article) was ever demonstrated.
  Event 98:

  ```text
  XSEEK_API_KEY is not set. Create one in the xSeek dashboard (Settings → API keys)
  and export it, e.g.  export XSEEK_API_KEY=xs_...
  Only `node xseek.mjs bots` works without a key.
  ```
  Event 98:

  ```text
  401 — key rejected or missing a privilege.
  {"error":{"code":"invalid_api_key","message":"The API key is invalid, disabled, or expired."
  ```
  Event 120:

  ```text
  only `GET /api/v1/robots` is public. Everything else needs a key minted in the dashboard, which needs a paid plan via sales call; no sandbox.
  ```

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

#### Blockers
- **API key creation is paywalled behind a sales call**: Product behavior, not agent error. xSeek's dashboard (where API keys are created) requires a paid plan starting at $249.99/mo, and the pricing page's only call-to-action for a free look is a 30-minute advisory call rather than a self-serve trial or sandbox key. This prevented the agent from completing any authenticated operation.
  Event 48:

  ```text
  Can I try your app for free?
  We prefer an advice-first approach: book a 30-minute call with a strategist.
  ```
  Event 120:

  ```text
  No free tier, no trial key — "Try for free" routes to a 30-min sales call.
  ```
- **Package name 'xseek' not found on npm/PyPI**: Discovery friction, not a product defect: the agent guessed there might be an installable SDK package named 'xseek' on public registries before realizing the product is REST-only. Registries correctly returned 404/no-match; this did not block overall progress since the agent pivoted to the hosted REST API.
  Event 17:

  ```text
  registry:404
  ```
  Event 18:

  ```text
  npm error 404 Not Found - GET https://registry.npmjs.org/xseek - Not found
  ```

#### Suggested Changes
- **Add a free or sandbox API key option to the developer docs**: On /api-docs and /en/pricing, offer a way to mint a scoped-down test API key without a sales call (e.g. limited to /robots plus read-only metrics against sample data). Verify by confirming a new visitor can get a working key and call an authenticated endpoint like GET /api/v1/websites without booking a call first.
  Event 98:

  ```text
  XSEEK_API_KEY is not set. Create one in the xSeek dashboard (Settings → API keys)
  ```
  Event 48:

  ```text
  We prefer an advice-first approach: book a 30-minute call with a strategist. We look at your AI profile live and tell you honestly whether xSeek is for you. No generic demo.
  ```
- **Reconcile prompt-tracking limits between docs and pricing page**: The /docs getting-started guide says tracked keywords run 'from 3 on Starter to unlimited on Scale', while /en/pricing lists 50/150/500 prompts tracked for Starter/Growth/Scale. Fix whichever is stale so a developer sizing a plan doesn't price against the wrong number; check by comparing both pages after the edit.
  Event 48:

  ```text
  Tracked keywords depend on your plan — from 3 on Starter to unlimited on Scale.
  ```
  Event 48:

  ```text
  50
  prompts tracked
  ```
- **Enable the advertised public tools endpoints without auth**: The docs page markets /tools/robots-txt and /tools/llms-txt as usable tools alongside the genuinely public /api/v1/robots, but both return 401 without a key. Either require a key consistently and document that, or make these two match the public /robots behavior. Check by calling both with no Authorization header and confirming the response matches what's documented.
  Event 64:

  ```text
  == robots-txt ==
  {"error":"Missing or invalid authorization header","message":"Please provide a valid API key in the Authorization header as \"Bearer YOUR_API_KEY\""}
  ```
  Event 64:

  ```text
  == llms-txt ==
  {"error":"Missing or invalid authorization header","message":"Please provide a valid API key in the Authorization header as \"Bearer YOUR_API_KEY\""}
  ```
- **Fix the worked JS example's opportunities response handling**: The code sample at the bottom of api-docs.md reads plan.data for /opportunities, but that endpoint returns the array under an 'opportunities' key, not 'data'. Update the sample in api-docs.md and the rendered /api-docs page so copy-pasting it doesn't silently iterate over undefined; check by running the snippet and confirming it logs real opportunity titles.
  Event 78:

  ````text
  ```json
  {
    "success": true,
    "opportunities": [
      {
        "query": "best crm for small business",
  ````
  Event 68:

  ```text
  const plan = await get(`/api/v1/websites/${websiteId}/opportunities`);
  for (const o of plan.data ?? []) console.log(o.title, '-', o.rationale);
  ```

### Task given to each agent
Help me build a simple example using xSeek. 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 links to docs, tools, integrations, API reference and OpenAPI spec with organized sections.
  ```

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

  ```text
  llms.txt groups links under clear headings like Product, Setup guides, API and Writing.
  ```

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

  ```text
  llms.txt documents the API endpoints, OpenAPI spec and API key scopes.
  ```

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

  ```text
  llms.txt is a standalone Markdown guide covering product, tools, API and setup.
  ```

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

  ```text
  llms.txt fetched directly at /llms.txt with 200 and full Markdown body.
  ```

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

  ```text
  llms.txt is 2051 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 judged.
  ```

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

  ```text
  llms.txt gives a self-contained track/find/act workflow with free tools, API endpoints and auth steps.
  ```

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

  ```text
  Sampled llms.txt links resolve: API integration docs, openapi.json, api-docs and login all returned 200.
  ```


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

  ```text
  llms.txt links docs and API guide, but no fetched quickstart page shows concrete first steps.
  ```

- **Skipped** — Installation commands are extractable

  ```text
  No installation or CLI guide was fetched; llms.txt lists only API endpoints, not install commands.
  ```

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

  ```text
  No docs page with code examples was fetched; only llms.txt API endpoint list is available.
  ```

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

  ```text
  llms.txt states Bearer API keys created in dashboard Settings with explicit scopes.
  ```


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

  ```text
  Pricing page renders plan names, prices and features as static text without interaction.
  ```

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

  ```text
  Starter $249.99/mo and Growth $499.99/mo USD stated; Scale is custom.
  ```

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

  ```text
  Plans list prompts tracked, opportunities, websites and unlimited users per tier.
  ```

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

  ```text
  3 of 3 sessions were judged on pricing; 0 fell short. DeepSeek V4.1 Flash: Final output gives a pricing table (Starter $249.99/mo, Growth $499.99/mo, Scale custom) sourced from xseek.io/en/pricing (fetched at seq 63) with stated assumptions: monthly billing, plan limits (prompts/websites/opportunities), USD/CAD toggle. Kimi K3: Final output gives a pricing table (Starter $249.99/mo, Growth $499.99/mo, Scale custom, Agency from $250/mo) with assumptions named: monthly billing, prompts/websites tracked per tier, yearly discount, and free tier limited to on-site tools only. Qwen 3.8 Max: README.md pricing table (Starter $249.99/mo, Growth $499.99/mo, Scale custom) is sourced from a live curl of xseek.io/en/pricing (seq 46) and stated with explicit assumptions: USD, monthly, cancel-anytime, no free tier/trial, and a flagged docs-vs-pricing-page discrepancy. This behavioural item does not affect the fast grade.
  ```


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

  ```text
  OpenAPI 3.1 spec fetched at /openapi.json and /api/openapi.json, 53 paths, plus human API docs.
  ```

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

  ```text
  No MCP server mentioned in llms.txt, API docs, or OpenAPI spec.
  ```

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

  ```text
  No CLI install path documented; integrations are HTTP API, proxy, or CMS plugin.
  ```

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

  ```text
  No SDK or packaged CLI registry lookup supplied; only HTTP API and integrations documented.
  ```

- **Skipped** — Agent skills are published

  ```text
  No agent skills published or referenced in llms.txt or API documentation.
  ```



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