# AX Check: ayedo.de
Checked 2026-09-20.

Docs and setup are solid, but pricing stays out of reach.
Quickstart and CLI install steps are clear and actionable, but the pricing page loads with no readable prices anywhere on site.

## Onboarding needs a login

## Coding sessions
All three independent coding sessions (DeepSeek V4 Pro, Kimi K3, Qwen 3.8 Max) stopped before finishing, as the quickstart required setting up a local Kubernetes/Helm environment rather than something runnable in-session. None reached a pricing verdict.

### DeepSeek V4 Pro
[View public run](https://agents.withgauge.com/p/runs/183e7609-a5d5-461a-bb69-f0d2177b3136) · [Read transcript](https://www.ax-check.com/ayedo.de/sessions/deepseek.json)

#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: The agent never obtained real API credentials (a Polycrate API token) or performed an authenticated operation against the Polycrate/ayedo API. It only queried the public, unauthenticated pricing microservice (pricing.ayedo.de/api/pricing/core and /apps) and ran a local Node script against that public data. No login, signup, or token creation flow was attempted or completed, so self-service onboarding was never exercised.
  Event 259:

  ```text
  node ayedo-example/pricing.mjs
  ```
  Event 260:

  ```text
  == ayedo pricing (live) ==
  
  Managed Kubernetes cluster base : €49,95/month
  ```

#### Hallucinated URLs
- **Guessed pricing calculator path at ayedo.de/en/preiskalkulator**: The agent guessed a pricing-calculator URL pattern (in German, 'Preiskalkulator') under the /en/ path before finding the real subdomain via the homepage HTML. The guess 404'd, but the agent recovered a page later by parsing homepage links, so this is a clear invented-URL attempt rather than a broken documented link.
  Event 76:

  ```text
  curl -s -m 25 "https://ayedo.de/en/preise/" -A "Mozilla/5.0" -o /tmp/preise.html -w "HTTP %{http_code} size %{size_download}\n"
  ```
  Event 79:

  ```text
  HTTP 404 size 1700
  404 · Seite nicht gefunden
  ```
- **Guessed API docs path on app.ayedo.cloud**: The agent guessed that the SDK README's example base URL (app.ayedo.cloud) hosted a live schema/docs endpoint, but that host does not serve the API (schema requests hung/timed out and /api/docs/ returned a generic 404 JSON), unlike the actual portal.ayedo.cloud host discovered later. This was an invented assumption about which hostname served the API.
  Event 106:

  ```text
  curl -s -m 25 "https://app.ayedo.cloud/api/v1/schema/" -A "Mozilla/5.0" -w "\nHTTP %{http_code} size %{size_download}\n"
  ```
  Event 110:

  ```text
  HTTP 404
  {"detail": "Not found."}
  ```

#### Blockers
- **No npm/PyPI package named 'ayedo' exists**: Product behavior/naming mismatch, not an agent error: the seed prompt referenced 'ayedo' as if it were an installable package, but no such package exists on the npm registry. The agent correctly identified this immediately and pivoted to web research.
  Event 7:

  ```text
  npm error 404 Not Found - GET https://registry.npmjs.org/ayedo - Not found
  ```
- **ayedo.com domain is unrelated (parked/for sale)**: Test-environment/naming ambiguity: the most obvious domain, ayedo.com, is a GoDaddy parked domain for sale and has nothing to do with the actual company (ayedo.de). This cost several tool calls before the agent found the real site.
  Event 43:

  ```text
  ayedo.com is a domain name currently listed for sale on GoDaddy's aftermarket.
  ```
- **No live OpenAPI schema/interactive docs reachable during session**: Product/documentation gap: the SDK README pointed to a base URL (app.ayedo.cloud) whose schema and docs endpoints did not resolve as documented (timeout and 404), and the actual portal (portal.ayedo.cloud) also returned 404 for schema and docs paths. This prevented the agent from inspecting the full authenticated API surface without already having a real account/workspace.
  Event 110:

  ```text
  HTTP 000 size 0
  
  ===EXIT===
  HTTP 404
  {"detail": "Not found."}
  ```
  Event 231:

  ```text
  HTTP 404 time 0.735356s size 6907 type text/html; charset=utf-8
  ```
- **Authenticated Polycrate API requires account credentials not available in session**: Missing credentials, not a product defect: per the SDK README, using the Polycrate API (workspaces, clusters, etc.) requires a Bearer token obtained either from the UI (API Keys page) or via POST /api/login with a real username/password. No such credentials were available in this sandboxed session, so the agent could not exercise the authenticated SDK path and stayed on the public pricing API instead.
  Event 89:

  ```text
  Create lasting keys in the Polycrate UI (the secret is shown once at creation):
  ```
  Event 89:

  ```text
  POST /api/login/
  Content-Type: application/json
  
  {"username":"<email>","password":"<password>"}
  ```

#### Suggested Changes
- **Fix or update the app.ayedo.cloud example base URL in the SDK README**: The polycrate-sdk README (github.com/ayedode/polycrate-sdk, main/README.md) tells developers to use `https://app.ayedo.cloud` as the example Polycrate base URL and hit `GET /api/v1/schema/` and `/api/docs/` there. In this session, the schema request to that host hung/timed out and `/api/docs/` returned a generic 404 JSON, while the real customer-facing host turned out to be `portal.ayedo.cloud` (found only via a docs page link). Update the README's example base URL to the working host and verify by curling `/api/v1/schema/` and `/api/docs/` against it and confirming a 200 response.
  Event 89:

  ```text
  Use the base URL of your Polycrate instance (no trailing path). Example: `https://app.ayedo.cloud`.
  ```
  Event 110:

  ```text
  HTTP 000 size 0
  
  ===EXIT===
  HTTP 404
  {"detail": "Not found."}
  ```
- **Add a direct pricing-page link from the ayedo.de homepage nav or docs**: The live pricing calculator lives at pricing.ayedo.de and its underlying JSON API (`/api/pricing/core`, `/api/pricing/apps`) is genuinely useful and public, but it is only discoverable by parsing a raw anchor tag in the homepage HTML rather than through the visible top navigation or docs site. Add a visible 'Pricing' link in the ayedo.de/en/ navigation menu (alongside Docs) pointing to pricing.ayedo.de, and verify by checking that the link appears in the rendered nav, not just in page source.
  Event 99:

  ```text
  href="/docs/"
  href="/polycrate/"
  href="/polycrate/ansible/"
  href="https://pricing.ayedo.de"
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/730cc52a-596d-4819-82f4-1c462abcc9e4) · [Read transcript](https://www.ax-check.com/ayedo.de/sessions/kimi.json)

#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: The agent never obtained real Polycrate API credentials (no signup/login flow was attempted) and never made an authenticated call to the hosted Polycrate API. All work happened against a local CLI workspace with no API key, no organization account, and no server-side resource creation. The block dependency resolution failure blocked even the local demo from running, and the session ends mid-attempt trying to pull a Docker image, with no credential acquisition or authenticated API operation ever taking place.
  Event 121:

  ```text
  ● Initializing workspace
  ● Config created at workspace.poly
  ```
  Event 134:

  ```text
  ● dependency resolution failed after 2 iterations. Unresolved blocks: []. Check for circular references
  ```

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

#### Blockers
- **Local workspace stuck on phantom dependency resolution error**: After creating a minimal local block and workspace, every CLI command (block list, run, validate, workspace inspect) fails with the same dependency resolution error, even though the block has no declared dependencies and the docs describe dependencies only arising from a from: reference to a registry block. This looks like a CLI/agent-environment interaction bug rather than a documented product limitation, since the unresolved list is reported as empty.
  Event 134:

  ```text
  ● dependency resolution failed after 2 iterations. Unresolved blocks: []. Check for circular references
  ```
  Event 141:

  ```text
  ● Resolving block 'hello-ayedo' - resolved? false
  ● Resolving block 'hello-ayedo'
  ● No dependency found for block 'hello-ayedo'
  ```
- **Docker image pull timed out, blocking the actual example run**: Actions in Polycrate execute inside a container pulled from cargo.ayedo.cloud/library/polycrate; the pull of this image took over 300 seconds and did not complete within the session, which is a test-environment/network constraint (registry latency or sandbox network limits) rather than a documented product defect.
  Event 189:

  ```text
  docker pull cargo.ayedo.cloud/library/polycrate:0.51.3 2>&1 | tail -3
  ```
  Event 191:

  ```text
  Command timed out after 300 seconds
  ```
- **Pricing page requires JavaScript-rendered content not accessible via curl**: The pricing subdomain returns a client-side-rendered Next.js shell with no pricing numbers embedded in the initial HTML or the fetched JS chunk, so the agent could not directly extract concrete pricing figures via simple HTTP fetch; it fell back to the Support page's published hourly rates and support tiers instead.
  Event 38:

  ```text
  <template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template>
  ```
  Event 87:

  ```text
  3434 /tmp/pricing.js
  ```

#### Suggested Changes
- **Fix dependency resolution false-positive for blocks with zero dependencies**: On a fresh workspace with a single block defined inline in workspace.poly (no from: reference), `polycrate block list` and `polycrate run` both fail with 'dependency resolution failed ... Unresolved blocks: []'. Reproduce by following the erste-schritte quickstart's mkdir/init steps then adding a block with only a script action and no from: field; verify the fix by confirming `polycrate block list` succeeds and `polycrate run <block> <action>` executes.
  Event 134:

  ```text
  ● dependency resolution failed after 2 iterations. Unresolved blocks: []. Check for circular references
  ```
- **Add a lightweight/CDN mirror or size the base image down for the getting-started flow**: The quickstart's first real action requires pulling cargo.ayedo.cloud/library/polycrate, which did not finish downloading in over 5 minutes in this session, blocking the tutorial's promised outcome of a working local example. Test by timing a pull of the current default image tag from a clean environment and confirming it completes within a reasonable quickstart time budget (e.g., under 60 seconds on typical broadband).
  Event 189:

  ```text
  docker pull cargo.ayedo.cloud/library/polycrate:0.51.3 2>&1 | tail -3
  ```
  Event 191:

  ```text
  Command timed out after 300 seconds
  ```
- **Publish machine-readable pricing on pricing.ayedo.de**: The pricing.ayedo.de site is a client-rendered Next.js app whose static HTML and JS bundle contain no visible price data, forcing anyone scripting or evaluating the product to fall back to the Support page's flat hourly rate instead of the Kubernetes/node pricing calculator. Add server-rendered pricing data or a JSON endpoint, and verify by curling the page without a JS engine and confirming price figures appear in the response.
  Event 38:

  ```text
  <template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template>
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/d6b16fd8-f766-408d-9680-cdd128abf62b) · [Read transcript](https://www.ax-check.com/ayedo.de/sessions/qwen.json)

#### End-to-end onboarding
- **Onboarding needs a login**: The agent explored the Polycrate SDK and API extensively, confirmed the API requires a Bearer token created via the hosted product's web UI (or a POST /api/login/ call with a username and password), but never obtained real credentials during the session. A login attempt with no credentials was correctly rejected with a 400 validation error asking for username and password. No signup, API key generation, or authenticated call to a live hosted endpoint occurred within the visible transcript.
  Event 140:

  ```text
  login:400
  {"type":"validation_error","errors":[{"code":"required","detail":"This field is required.","attr":"username"},{"code":"required","detail":"This field is required.","attr":"password"}]}
  ```
  Event 60:

  ```text
  === workspaces no auth ===
  401
  ```
  Event 104:

  ```text
  install_exit=0
  polycrate OK /sandbox/repo/.venv/lib/python3.12/site-packages/polycrate/__init__.py
  ```

#### Hallucinated URLs
- **Guessed package registry names for ayedo**: The agent probed npm, PyPI, crates.io, RubyGems, Go proxy, and NuGet for packages literally named 'ayedo' or common SDK-style variants before finding any real product reference. These were guesses based on naming conventions, not links found in any document, and all returned 404 (not evidence of a broken documented link, just non-existent guessed packages).
  Event 16:

  ```text
  npm ayedo-sdk:404
  npm @ayedo/sdk:404
  npm ayedo-cli:404
  npm ayedo-api:404
  ```
  Event 12:

  ```text
  npm:404
  pypi:404
  ```
  Event 23:

  ```text
  crates:403
  rubygems:404
  go:404
  nuget:200
  ```

#### Blockers
- **No credentials available to call the live Polycrate API**: The Polycrate SDK and API require a Bearer token obtained either from the hosted web UI (API Keys page) or via POST /api/login/ with a real username and password. The session had no such credentials in the environment and did not perform any signup flow, so all authenticated endpoints (e.g. workspace listing) remained inaccessible, confirmed by the unauthenticated call returning 401 and the login call returning 400 for missing fields. This is a missing-credentials limitation of the test setup, not a product defect — the product behaved correctly by requiring auth.
  Event 60:

  ```text
  === workspaces no auth ===
  401
  ```
  Event 140:

  ```text
  login:400
  {"type":"validation_error","errors":[{"code":"required","detail":"This field is required.","attr":"username"},{"code":"required","detail":"This field is required.","attr":"password"}]}
  ```
- **OpenAPI schema fetch timed out**: An attempt to download the live OpenAPI schema from app.ayedo.cloud/api/v1/schema/ timed out after 40 seconds with zero bytes received. This is environment/network behavior (possibly a slow or unresponsive schema endpoint) rather than agent error, and the agent worked around it by installing the pre-generated SDK from GitHub instead.
  Event 72:

  ```text
  curl: (28) Operation timed out after 40001 milliseconds with 0 bytes received
  exit=28
  ```

#### Suggested Changes
- **Publish the Polycrate SDK to PyPI and npm instead of git-only installs**: The SDK README explicitly states packages are not published to PyPI or npm and must be installed via git+https or GitHub tarball references pinned to API version tags. This adds friction (git clone auth, manual tag lookup) compared to a standard 'pip install polycrate' or 'npm install @ayedo/polycrate-sdk'. Check by running a plain 'pip install polycrate' and confirming it succeeds without a git URL.
  Event 53:

  ```text
  These packages are not published to PyPI or npm. Pin the git tag to the API you talk to.
  ```
- **Add a working, discoverable pricing page link from ayedo.de**: The main site links to https://pricing.ayedo.de but that page renders as a client-side-only Next.js app with no server-rendered pricing content (empty body, hydration boundary only), forcing the agent to dig through JS chunks and documentation pages instead. Verify by curling the page without JS execution and confirming visible pricing text is present, or add a static docs page summarizing plan tiers and cost model.
  Event 54:

  ```text
  <main class="min-h-screen bg-[#0F0F0F]"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--></main>
  ```

### Task given to each agent
Help me build a simple example using ayedo. 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 · 68/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 lists docs, apps, glossary and news with descriptions, giving an actionable index.
  ```

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

  ```text
  llms.txt groups entries under app, docs, glossary, news, newsletter headings for navigation.
  ```

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

  ```text
  llms.txt links API-Integration and MCP docs pages, covering offered API and MCP surfaces.
  ```

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

  ```text
  No site-published Markdown guide fetched; only HTML docs and llms.txt index were retrieved.
  ```

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

  ```text
  ohMyHelm getting-started gives concrete steps: Chart.yaml, values.yaml, helm install, verify.
  ```

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

  ```text
  Getting-started guide is 5602 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
  ohMyHelm quickstart gives concrete steps: prerequisites, Chart.yaml, values.yaml, helm install, verification.
  ```

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

  ```text
  Quickstart next-step links (usage, examples, use-cases, chart, helpers) resolve on fetched docs pages.
  ```


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

  ```text
  ohMyHelm getting-started gives concrete Node-RED quickstart steps from install to deploy.
  ```

- **Pass** — Installation commands are extractable

  ```text
  Installation page shows extractable docker/curl commands for polycrate CLI per platform.
  ```

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

  ```text
  Getting-started and CLI reference show inline code examples without interaction.
  ```

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

  ```text
  Prerequisites (Helm, kubectl, cluster) and API key requirements are stated explicitly.
  ```


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

  ```text
  Pricing calculator page returned empty HTML body; no readable prices on fetched pages.
  ```

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

  ```text
  No stated prices fetched; pricing page empty and homepage only links a calculator.
  ```

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

  ```text
  No pricing units or limits were fetched; pricing page body was empty.
  ```

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

  ```text
  No coding session completed with a pricing verdict, so this behavioural item was not measured.
  ```


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

  ```text
  Polycrate API docs describe HTTP API, auth, endpoints; API-Integration page documents the API surface.
  ```

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

  ```text
  Two MCP servers documented: local CLI-MCP and remote API-MCP with config, tools, auth.
  ```

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

  ```text
  Polycrate CLI install documented via Docker image and curl downloads for Linux/macOS.
  ```

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

  ```text
  No registry lookup result for a Polycrate SDK/CLI package was supplied.
  ```

- **Skipped** — Agent skills are published

  ```text
  No agent skills surface is offered or evidenced in the fetched pages.
  ```



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