# AX Check: moesif.com
Checked 2026-10-08.

Moesif's docs work, but actual prices stay hidden from agents.
Pricing page renders fine but lists no plan prices or unit limits, only a stray $75/mo seat fee in the FAQ. Docs, API reference, and MCP server setup all check out.

## Onboarding needs a login

## Coding sessions
All three independent sessions completed. Two guessed at specific dollar figures from memory or inference (one flagging the numbers as unverified), while the third refused to state any price and pointed to the pricing page instead. None hit a login wall or local setup blocker.

### DeepSeek V4.1 Flash
[View public run](https://agents.withgauge.com/p/runs/f4110746-b746-45f3-afcf-27824dc8627f) · [Read transcript](https://www.ax-check.com/moesif.com/sessions/deepseek.json)
Final output states pay-as-you-go pricing metered by events, 14-day trial with 10M events, $75/mo per extra seat, and explicitly flags the assumption/caveat that exact tier dollar amounts are JS-rendered and unverified.
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: The agent never obtained a real Moesif Collector Application Id or Management API key. It only probed the live endpoint with a deliberately invalid key, which returned a 401 auth_error — this proves the endpoint and header wiring are correct but does not demonstrate an authenticated operation. No account was created and no human credential was supplied during the session.
  Event 97:

  ```text
  env | grep -iE 'moesif|MOESIF' || echo "(no Moesif env vars)"
  ```
  Event 101:

  ```text
  {"moesif_error":{"src":"collector_api","code":"auth_error","msg":"The X-Moesif-Application-Id request header is missing. Please add your Moesif Collector Application Id to the X-Moesif-Application-Id request HTTP header or as the first path segment to authenticate your app"}}
  HTTP=401
  ```
  Event 122:

  ```text
  I have no Moesif account or Collector Application Id, so I couldn't send a real event or confirm dashboard ingestion. The script is ready; add your key and it will work.
  ```

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

#### Blockers
- **No self-service credential to prove real ingestion**: The agent had no Moesif account or Collector Application Id and the environment had none pre-configured. This is a session/environment limitation (no sign-up performed), not a product defect — Moesif's API correctly requires a key. The agent worked around it by testing with a dummy key, which confirms endpoint wiring but not a real authenticated send.
  Event 97:

  ```text
  (no Moesif env vars)
  ```
  Event 122:

  ```text
  I have no Moesif account or Collector Application Id, so I couldn't send a real event or confirm dashboard ingestion.
  ```
- **Pricing page renders tiers client-side, blocking scrape of exact dollar figures**: The /price page's plan cards and per-tier dollar amounts are rendered from client-side JS state rather than present in server HTML or a discoverable public JSON endpoint; the agent tried several guessed API paths which all 404'd. This is product (site architecture) behavior, not agent error — the FAQ text was still scrapable and used instead.
  Event 66:

  ```text
  === price/plan API endpoints referenced ===
  === urls ===
  
  ```
  Event 80:

  ```text
  https://www.moesif.com/api/plans                   404
  https://www.moesif.com/api/v1/plans                404
  ```

#### Suggested Changes
- **Add a static/server-rendered pricing table to the /price page**: On https://www.moesif.com/price, the current plan tiers and per-event/per-tier dollar amounts are only present in client-rendered JS state, not in the server HTML. Add the numeric plan details to the server-rendered markup (or expose a small public JSON endpoint) so the figures can be verified by a simple HTTP fetch; check by curling the page without executing JS and confirming dollar amounts appear in the response body.
  Event 59:

  ```text
  === dollar amounts in raw html ===
        1 $75
  ```
  Event 92:

  ```text
  https://api.moesif.com/v1/pricing                404 {"moesif_error":{"code":404,"msg":"API route does not exist"}}
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/4af496c5-a735-47ae-ba3b-4bc8e2c6e60d) · [Read transcript](https://www.ax-check.com/moesif.com/sessions/kimi.json)
Final output states usage-based pricing tiers (Free ~30k events, Grow ~$85/mo, Pro ~$495/mo, Enterprise custom) and names assumptions — event volume as cost driver, figures are approximate/from memory, caveat to verify at moesif.com/pricing.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained a real Moesif Application Id. It built a Node.js example (SDK updateUser call and a raw REST POST to the events endpoint) but could not run either because account signup requires email confirmation, which the agent cannot complete autonomously. The script was only dry-run with no credential, printing an error and exiting without any authenticated call reaching Moesif's hosted API.
  Event 48:

  ```text
  I can't create a Moesif account (signup requires email confirmation), so I don't have a real Application Id — the SDK rejects fake IDs up front (it validates format).
  ```
  Event 43:

  ```text
  syntax OK
  Set MOESIF_APPLICATION_ID first (from your Moesif dashboard).
  
  ```
  Event 29:

  ```text
  A moesif application id is required. The format of the moesif application id provided does not look correct. Please obtain it through your settings at www.moesif.com
  ```

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

#### Blockers
- **No self-service account creation possible**: Moesif requires signup with email confirmation to obtain a real Application Id. The agent has no way to complete email verification autonomously, so it could never acquire valid credentials to exercise the hosted API. This is a normal authentication requirement, not a product defect, but it fully blocked live verification of the example.
  Event 48:

  ```text
  I can't create a Moesif account (signup requires email confirmation), so I don't have a real Application Id — the SDK rejects fake IDs up front (it validates format).
  ```

#### Suggested Changes
- **Document that moesif-nodejs middleware requires a live Express/Koa req-res stream**: The agent first tried invoking moesif-nodejs middleware directly with a hand-built fake req/res object, then at seq 34-36 found the middleware patches req.on to capture streaming body chunks, making direct invocation unreliable outside a real server. A short note in the SDK quickstart stating the middleware is designed for live Express/Koa requests, with the REST events endpoint flagged as the lightweight alternative for scripts, would save this trial-and-error step for newcomers writing minimal examples.
  Event 36:

  ```text
  The middleware is deeply tied to Express req/res streams, so simulating it serverless is brittle.
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/ce8a5e5d-adaf-4f2e-970e-3b575de948b9) · [Read transcript](https://www.ax-check.com/moesif.com/sessions/qwen.json)
Agent explicitly declined to state any cost figure ('Exact current figures live at ...pricing — I didn't want to invent them'); README/final output describe the billing model (usage-based, free tier, enterprise) but never quote an actual dollar estimate with stated assumptions.
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: No real Moesif account or Application ID was ever obtained. The agent could not self-serve a credential (no email/account creation was attempted or possible in this sandboxed session), so it built the integration against a 50+ character dummy placeholder ID purely to pass the SDK's local format check, then sent events to the hosted collector which rejected them with an auth_error. This demonstrates the SDK wiring and confirms the hosted endpoint is reachable, but it is not an authenticated operation -- no real Moesif resource was created, read, or modified.
  Event 98:

  ```text
  const applicationId =
    process.env.MOESIF_APPLICATION_ID ||
    'DRY_RUN_PLACEHOLDER__NOT_A_REAL_MOESIF_APPLICATION_ID__0000000000';
  ```
  Event 117:

  ```text
  HTTP 401
  --- body ---
  {"moesif_error":{"src":"collector_api","code":"auth_error","msg":"The X-Moesif-Application-Id request header is missing. Please add your Moesif Collector Application Id to the X-Moesif-Application-Id request HTTP header or as the first path segment to authenticate your app"}}
  ```
  Event 131:

  ```text
  The **one** thing I can't do myself is produce a real `MOESIF_APPLICATION_ID` — that needs a (free) Moesif account, so I can't make events land in a live dashboard. I proved everything up to the collector's 401 instead.
  ```

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

#### Blockers
- **No self-service path to a real Moesif Application ID**: Creating an account and obtaining a real Collector Application ID requires signing up through the Moesif Portal (human action), which the agent could not do inside the sandbox. This is a normal authentication requirement, not a product defect -- the agent correctly identified it as the one thing blocking a live dashboard verification and worked around it with a format-valid dummy ID to prove the SDK's send path, which the hosted collector correctly rejected with a 401 auth_error.
  Event 131:

  ```text
  The **one** thing I can't do myself is produce a real `MOESIF_APPLICATION_ID` — that needs a (free) Moesif account, so I can't make events land in a live dashboard.
  ```
  Event 89:

  ```text
  Error: A moesif application id is required. The format of the moesif application id provided does not look correct. Please obtain it through your settings at www.moesif.com
  ```
- **Pricing page renders client-side, blocking static scraping of exact figures**: The agent tried fetching the pricing page HTML and JS bundles directly via curl but found the actual plan numbers are loaded at runtime from an API, not present in the static markup or bundles. This is a test-environment limitation of using curl rather than a real browser/JS runtime, not a confirmed product defect. The agent correctly avoided inventing numbers and instead described the pricing model qualitatively, pointing to the live page.
  Event 61:

  ```text
  Pricing numbers are loaded from an API at runtime (not in the bundle), so I'll describe the pricing *model* accurately and point to the live page rather than invent figures.
  ```
  Event 51:

  ```text
  bundle bytes: 1529992
  === price-ish strings ===
  === free plan context ===
  
  ```

#### Suggested Changes
- **Document the applicationId minimum-length validation rule in the moesif-nodejs README**: The SDK throws a generic 'format does not look correct' error if applicationId is under 50 characters, but the README's Prerequisites/Configuration sections never state this length requirement, forcing the agent to read the library source (ensureValidUtils.js) to discover it. Add a line near the 'Get Your Moesif Application ID' section in the moesif-nodejs README noting the expected ID format/length so developers hitting the validation error understand it immediately without reading source.
  Event 89:

  ```text
  Error: A moesif application id is required. The format of the moesif application id provided does not look correct. Please obtain it through your settings at www.moesif.com
  ```
  Event 94:

  ```text
  if (options.applicationId.length < 50) {
      throw new Error(
        'A moesif application id is required. The format of the moesif application id provided does not look correct. Please obtain it through your settings at www.moesif.com'
      );
  ```
- **Render key pricing tiers in static HTML or expose a pricing API doc**: The pricing page at moesif.com/pricing loads plan names and figures via a client-side data fetch, so tools like curl (and scrapers generally) retrieve only an empty SPA shell. Server-render the core plan/price grid on www.moesif.com/pricing, or publish a documented pricing API endpoint, so the numbers are inspectable without executing JavaScript. Verify by curling the page and confirming dollar amounts and event-volume tiers appear in the returned HTML.
  Event 28:

  ```text
  window.__data={"routing":{"locationBeforeTransitions":{"pathname":"\u002Fpricing"
  ```
  Event 51:

  ```text
  bundle bytes: 1529992
  === price-ish strings ===
  === free plan context ===
  
  ```

### Task given to each agent
Help me build a simple example using Moesif. 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: C · 56/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 despite Accept: text/markdown; no Markdown representation offered.
  ```

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

  ```text
  llms.txt exists but is a huge blog-post dump, not an actionable docs index.
  ```

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

  ```text
  llms.txt offers no navigation guidance or starting-point orientation for agents.
  ```

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

  ```text
  llms.txt links the Moesif MCP Server guide; API reference and OpenAPI spec are offered.
  ```

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

  ```text
  Moesif publishes standalone .md docs pages, e.g. the MCP server and Alexa Skills guides.
  ```

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

  ```text
  The MCP server guide is directly retrievable as Markdown with prerequisites and setup steps.
  ```

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

  ```text
  MCP guide is ~1.3k 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
  Alexa Skills quickstart gives npm install, import code, Application Id setup, and config options.
  ```

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

  ```text
  Sampled install/next-step links resolve: npm package, GitHub source, integration options docs.
  ```


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

  ```text
  Docs index offers API Observability and Monetization getting-started paths; implementation page lists per-platform quickstarts.
  ```

- **Skipped** — Installation commands are extractable

  ```text
  Fetched pages list platform quickstart links but no install commands or code blocks are shown.
  ```

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

  ```text
  No code examples appear in the fetched integration or docs landing pages.
  ```

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

  ```text
  Fetched pages mention signup and SDKs but no explicit API key or auth prerequisites.
  ```


### Pricing
- **Failed** — Prices are stated, not gated

  ```text
  Pricing page shows no plan prices; only FAQ mentions $75/month per extra team member.
  ```

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

  ```text
  Pricing page states no per-plan event limits or unit rates; only FAQ notes pay-as-you-go overage.
  ```

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

  ```text
  3 of 3 sessions were judged on pricing; 1 fell short. DeepSeek V4.1 Flash: Final output states pay-as-you-go pricing metered by events, 14-day trial with 10M events, $75/mo per extra seat, and explicitly flags the assumption/caveat that exact tier dollar amounts are JS-rendered and unverified. Kimi K3: Final output states usage-based pricing tiers (Free ~30k events, Grow ~$85/mo, Pro ~$495/mo, Enterprise custom) and names assumptions — event volume as cost driver, figures are approximate/from memory, caveat to verify at moesif.com/pricing. Qwen 3.8 Max: Agent explicitly declined to state any cost figure ('Exact current figures live at ...pricing — I didn't want to invent them'); README/final output describe the billing model (usage-based, free tier, enterprise) but never quote an actual dollar estimate with stated assumptions. This behavioural item does not affect the fast grade.
  ```

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

  ```text
  Pricing page renders plan tiers and FAQ text directly in fetched HTML, no interaction needed.
  ```


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

  ```text
  Moesif API Reference page and a Management OpenAPI JSON spec both fetched successfully.
  ```

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

  ```text
  MCP server doc gives install command, OAuth login, access levels, and troubleshooting.
  ```

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

  ```text
  No Moesif CLI install path documented; only SDK libraries and MCP server setup shown.
  ```

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

  ```text
  npm moesifapi and PyPI moesifapi registry lookups both returned HTTP 200.
  ```

- **Skipped** — Agent skills are published

  ```text
  No agent skills published or referenced in the fetched Moesif documentation.
  ```



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