# AX Check: raindrop.ai
Checked 2026-10-30.

Raindrop's pricing is clear upfront; quickstart docs are thinner.
Homepage states Hobby $0, Pro $299/mo + per-event fee, Enterprise custom with no gating. Quickstart and install-command docs weren't found during review.

## Onboarding needs a login

## Coding sessions
All three independent sessions (DeepSeek V4.1 Flash, Kimi K3, Qwen 3.8 Max) completed the task and correctly reported pricing: Hobby free up to 1,000 events, Pro at $299/mo plus per-event overage, Enterprise custom, each citing plan limits and trial terms sourced from the docs and homepage.

### DeepSeek V4.1 Flash
[View public run](https://agents.withgauge.com/p/runs/6f141bef-4732-4cdd-8585-ac5b9900d42c) · [Read transcript](https://www.ax-check.com/raindrop.ai/sessions/deepseek.json)
Quoted Hobby $0 (1,000 events cap), Pro $299/mo + $0.003→$0.002/event, Enterprise custom, with event definition, trial and cap assumptions sourced from docs/homepage (seq 32, seq 67, seq 69)
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained a real Raindrop write key. It correctly identified that the official quickstart requires interactive browser OAuth sign-in to mint a RAINDROP_WRITE_KEY, and had no path to self-serve credentials. It built a local example script and validated the API's auth boundary only using a deliberately invalid/bogus key, which returned 401 Unauthorized - this is a negative-path check, not a successful authenticated operation. No event was ever successfully sent (no 204 response was obtained).
  Event 69:

  ```text
  I can't create an account or complete the interactive browser sign-in needed to mint a `RAINDROP_WRITE_KEY`, so I could not run the event through to a `204` end-to-end.
  ```
  Event 58:

  ```text
  Raindrop API error: HTTP 401 - {"error":{"code":"UNAUTHORIZED","message":"Invalid API key"}}
  ```
  Event 27:

  ```text
  Signs you in to Raindrop in the browser.
  2. Writes your org write key to `./.env` as `RAINDROP_WRITE_KEY`.
  ```
  Event 69:

  ```text
  The official quickstart (`curl -fsSL https://raindrop.sh/install | bash -s -- --cloud`) installs a CLI and does **browser OAuth sign-in** — not a local service stack or long-running command, but interactive and account-gated, so I skipped it and stayed on the hosted HTTP API.
  ```

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

#### Blockers
- **Write key requires interactive browser sign-in, no self-serve path**: The documented quickstart CLI performs browser-based OAuth sign-in to mint the org's RAINDROP_WRITE_KEY and write it to .env. This is a normal product authentication requirement (not a product defect or agent error) but it blocked the agent from completing an authenticated, end-to-end send of a real event. The agent correctly avoided running the long-lived/interactive installer and instead tested the live API boundary with a bogus key, confirming the endpoint and 401 auth behavior but never completing a 204 success.
  Event 27:

  ```text
  Signs you in to Raindrop in the browser.
  2. Writes your org write key to `./.env` as `RAINDROP_WRITE_KEY`.
  ```
  Event 58:

  ```text
  Raindrop API error: HTTP 401 - {"error":{"code":"UNAUTHORIZED","message":"Invalid API key"}}
  ```
  Event 69:

  ```text
  I can't create an account or complete the interactive browser sign-in needed to mint a `RAINDROP_WRITE_KEY`, so I could not run the event through to a `204` end-to-end.
  ```
- **Docs llms.txt quickstart/pricing pages return 404 under direct .md fetch**: Fetching https://raindrop.ai/docs/quickstart.md and https://raindrop.ai/docs/pricing.md (paths the agent guessed by pattern-matching the introduction.md convention) returned 'Page Not Found' with redirect suggestions to introduction.md#quickstart and platform/plans.md. This reflects the docs site's URL structure not matching simple guesses rather than a broken link, since the agent had not seen these exact paths published anywhere; the agent recovered immediately via the sitemap and related-topics links, so it caused no lasting delay.
  Event 27:

  ```text
  ===== quickstart =====
  > ## Documentation Index
  ...
  # Page Not Found
  
  The requested page could not be found.
  ```
  Event 27:

  ```text
  ===== pricing =====
  > ## Documentation Index
  ...
  # Page Not Found
  
  The requested page could not be found.
  ```

#### Suggested Changes
- **Add a non-interactive/CI-friendly way to obtain a write key**: The HTTP API docs page (sdk/http-api.md) and the Introduction quickstart both direct users to sign in at app.raindrop.ai or run the browser-OAuth CLI installer to get a write key. For headless or agent-driven environments, provide a documented path (e.g., a signup API endpoint or service-account token flow) so a key can be obtained without a human completing browser sign-in. Verify by having a non-interactive script fetch a working write key and then post a test event to /v1/events/track and confirm a 204 response.
  Event 41:

  ```text
  First, import the SDK and initialize it with your write key. You'll see your write key when you log into [app.raindrop.ai](https://app.raindrop.ai).
  ```
  Event 27:

  ````text
  Run this in your project directory:
  
  ```bash theme={null}
  curl -fsSL https://raindrop.sh/install | bash -s -- --cloud
  ```
  
  It installs the `raindrop` CLI and runs `raindrop cloud setup`, which:
  
  1. Signs you in to Raindrop in the browser.
  ````
- **Fix docs.raindrop.ai redirect to canonical quickstart path**: Requesting https://docs.raindrop.ai redirected (HTTP 200 effective URL) to https://www.raindrop.ai/docs/introduction/, while the markdown-source convention raindrop.ai/docs/quickstart.md returns 404. Align the markdown-source routes with the human-facing docs routes (or add a redirect/stub at docs/quickstart.md) so agents and scripts following the documented .md convention land on the right content on the first try. Check by curling https://raindrop.ai/docs/quickstart.md and confirming it returns the quickstart content instead of a 404.
  Event 10:

  ```text
  === docs ===
  200 https://www.raindrop.ai/docs/introduction/
  ```
  Event 27:

  ```text
  ===== quickstart =====
  > ## Documentation Index
  ...
  # Page Not Found
  
  The requested page could not be found.
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/e27ce19a-20d1-4733-ad4b-6b853e5934b3) · [Read transcript](https://www.ax-check.com/raindrop.ai/sessions/kimi.json)
Gave doc-sourced pricing tied to plan, event volume and trial: Hobby free with a 1,000-event cap, Pro $299/mo + $0.003/event to 1M then $0.002, 14-day trial (seq 32, seq 66, README.md)
#### End-to-end onboarding
- **Onboarding needs a login**: The agent built a working SDK example and confirmed the hosted ingest endpoint is live (401 on a dummy key proves the API is reachable), but it never obtained a real Raindrop write key. The product requires a human to sign in via browser at app.raindrop.ai or run `raindrop cloud setup` to get credentials, which is an interactive step the agent could not complete on its own. No authenticated operation against the live product was ever performed.
  Event 40:

  ```text
  You can get your API key by logging in to [app.raindrop.ai](https://app.raindrop.ai) (bottom of the tab bar!).
  ```
  Event 60:

  ```text
  {"error":{"code":"UNAUTHORIZED","message":"Invalid API key"}}
  HTTP 401
  
  ```
  Event 66:

  ```text
  sending events requires a write key, which is only issued after a human signs in via browser at [app.raindrop.ai](https://app.raindrop.ai) (or via `raindrop cloud setup`)
  ```

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

#### Blockers
- **No self-service credential issuance**: Raindrop only issues write keys through an interactive browser sign-in (app.raindrop.ai) or the `raindrop cloud setup` CLI flow, both of which require a human. This is normal product auth behavior, not a defect, but it fully blocked the agent from running the example against the live service end-to-end within this session.
  Event 40:

  ```text
  You can get your API key by logging in to [app.raindrop.ai](https://app.raindrop.ai) (bottom of the tab bar!).
  ```
  Event 66:

  ```text
  sending events requires a write key, which is only issued after a human signs in via browser at [app.raindrop.ai](https://app.raindrop.ai) (or via `raindrop cloud setup`)
  ```

#### Suggested Changes
None identified in this transcript.

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/3d158613-177e-45eb-8feb-3f65c52268f6) · [Read transcript](https://www.ax-check.com/raindrop.ai/sessions/qwen.json)
Quoted Hobby $0/mo (1,000 events), Pro $299/mo + $0.003/event up to 1M then $0.002, Enterprise custom, with plan limits, 14-day trial, and the per-event metering definition, all sourced from the fetched pricing page. (seq 38, seq 100, raindrop_example/README.md)
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: Agent never obtained a real Raindrop write key. It installed the SDK and ran the example script with a placeholder string as the key, which only exercises local code paths (object construction, local queue) and never confirms a real authenticated write landed in Raindrop's hosted backend. The agent explicitly says it cannot see data land in a dashboard and that signup/key retrieval is a manual step left to the user.
  Event 88:

  ```text
  RAINDROP_WRITE_KEY="placeholder-invalid-key" timeout 90 python support_agent_example.py 2>&1 | head -20; echo "exit: $?"
  ```
  Event 90:

  ```text
  tracked turn: 'Why did my payment fail?'
  tracked turn: 'Can you retry the charge?'
  tracked turn: 'Thanks, that worked!'
  done — check https://app.raindrop.ai -> Events
  exit: 0
  ```
  Event 100:

  ```text
  The only thing I can't do is see data land in a dashboard — that needs your free account's write key
  ```

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

#### Blockers
- **No self-service way to get a real write key**: The Raindrop API requires a write key obtained by logging into app.raindrop.ai and signing up for an account; this is a normal human login/signup step, not a product defect, and the agent could not get past it to confirm a real authenticated event write. This is a session/credential limitation rather than an agent error or product bug.
  Event 68:

  ```text
  You can get your API key by logging in to [app.raindrop.ai](https://app.raindrop.ai) (bottom of the tab bar!).
  ```
  Event 100:

  ```text
  The only thing I can't do is see data land in a dashboard — that needs your free account's write key
  ```
- **Example script raised a TypeError on first run (recovered)**: The agent's first draft passed a Python list to a properties field typed as str/int/bool/float, which would fail validation; this was caught and fixed immediately via the SDK's inspected function signature, so it did not block final delivery.
  Event 94:

  ```text
  (user_id: str, event: str, event_id: Optional[str] = None, model: Optional[str] = None, input: Optional[str] = None, output: Optional[str] = None, convo_id: Optional[str] = None, properties: Optional[Dict[str, Union[str, int, bool, float]]] = None
  ```
  Event 97:

  ```text
  "tools_used": ",".join(result["tool_calls"]),
  ```

#### Suggested Changes
- **Clarify SDK success feedback when using an invalid/placeholder write key**: Running support_agent_example.py with a bogus write key printed 'tracked turn' and 'done' with exit code 0, giving no visible signal that ingestion failed server-side. Add a startup or flush-time validation call (or louder console warning) in the Python SDK so developers testing locally with a bad key see an explicit auth failure rather than a silent success message. Check by rerunning the same script with an invalid key and confirming a visible error appears before exit.
  Event 90:

  ```text
  tracked turn: 'Why did my payment fail?'
  tracked turn: 'Can you retry the charge?'
  tracked turn: 'Thanks, that worked!'
  done — check https://app.raindrop.ai -> Events
  exit: 0
  ```
- **Disambiguate raindrop.ai from the unrelated Raindrop.io bookmark manager**: Early exploration fetched raindrop.io's pricing/FAQ page before realizing it was the wrong product; the two share a name and similar domains (raindrop.ai vs raindrop.io / developer.raindrop.io). Add a short note on the raindrop.ai homepage or docs introduction page clarifying it is unrelated to Raindrop.io bookmarking, to save first-time visitors a dead-end detour. Check by searching 'raindrop' and confirming the landing page text calls out the distinction.
  Event 16:

  ```text
   Subscribe to Pro — Raindrop.io Download Pricing Docs Integrations Blog Sign up Menu Download Pricing Docs Integrations Blog
  ```
  Event 28:

  ```text
  raindrop.ai is live but it's a different product from the similarly-named Raindrop.io bookmark manager
  ```

### Task given to each agent
Help me build a simple example using Raindrop.ai. 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 · 82/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.
  ```

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

  ```text
  llms.txt omits the offered MCP server, Query API and agent skills surfaces.
  ```

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

  ```text
  llms.txt lists docs, blog, security, case studies and contact links for discovery.
  ```

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

  ```text
  llms.txt groups links under Core Capabilities, Links, Case Studies and Contact headings.
  ```

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

  ```text
  Standalone Markdown docs exist, e.g. triage-agent.md and mcp/overview.md, served as text/markdown.
  ```

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

  ```text
  Focused guides directly retrievable: MCP overview, Triage Agent, RQL, and skills pages return full Markdown.
  ```

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

  ```text
  Compact guides fit budget: triage-agent.md 2578 tokens, skills 712, MCP overview 5143, all under 8000.
  ```

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

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

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

  ```text
  MCP overview gives concrete editor setup commands; skills page gives install script and npx commands.
  ```

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

  ```text
  Fetched docs, MCP, skills, API reference and Query API docs all returned 200.
  ```


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

  ```text
  Fetched docs cover Triage Agent and MCP, but no quickstart page was captured.
  ```

- **Skipped** — Installation commands are extractable

  ```text
  No SDK or CLI installation page was fetched; only Slack OAuth and MCP setup are described.
  ```

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

  ```text
  Triage page shows inline code examples for Slack prompts and coding-agent MCP usage.
  ```

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

  ```text
  Triage page notes plan limits and roles, but no API key or auth boundary is documented.
  ```


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

  ```text
  Homepage pricing section renders Hobby $0/mo, Pro $299/mo, Enterprise Custom without interaction.
  ```

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

  ```text
  Prices stated on page: Hobby $0/mo, Pro $299/mo plus $0.003/event, Enterprise custom.
  ```

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

  ```text
  Units explicit: 1,000 events/mo, per-event overage, custom signals and agent messages limits.
  ```

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

  ```text
  3 of 3 sessions were judged on pricing; 0 fell short. DeepSeek V4.1 Flash: Quoted Hobby $0 (1,000 events cap), Pro $299/mo + $0.003→$0.002/event, Enterprise custom, with event definition, trial and cap assumptions sourced from docs/homepage (seq 32, seq 67, seq 69) Kimi K3: Gave doc-sourced pricing tied to plan, event volume and trial: Hobby free with a 1,000-event cap, Pro $299/mo + $0.003/event to 1M then $0.002, 14-day trial (seq 32, seq 66, README.md) Qwen 3.8 Max: Quoted Hobby $0/mo (1,000 events), Pro $299/mo + $0.003/event up to 1M then $0.002, Enterprise custom, with plan limits, 14-day trial, and the per-event metering definition, all sourced from the fetched pricing page. (seq 38, seq 100, raindrop_example/README.md) This behavioural item does not affect the fast grade.
  ```


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

  ```text
  Query API reference page lists endpoints and links an interactive OpenAPI reference at query.raindrop.ai/v1/docs.
  ```

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

  ```text
  MCP overview documents hosted server URL, per-editor setup, tool list, and OAuth/API-key auth.
  ```

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

  ```text
  No Raindrop CLI install path documented; only third-party editor CLIs and the skills npx CLI appear.
  ```

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

  ```text
  No registry lookup result for a Raindrop SDK or packaged CLI package was supplied.
  ```

- **Pass** — Agent skills are published

  ```text
  Agent Skills page documents open-source raindrop-setup and raindrop-investigate skills with install commands.
  ```



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