{
 "slug": "apify",
 "name": "Apify",
 "url": "https://apify.com",
 "domain": "apify.com",
 "category": "web-scraping",
 "category_name": "Web scraping",
 "tested_at": "2026-10-16",
 "run": "20261016T050136Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261005T234540Z",
   "date": "2026-10-05",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  },
  {
   "run": "20261012T094114Z",
   "date": "2026-10-12",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 3,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "obey"
   }
  },
  {
   "run": "20261016T050136Z",
   "date": "2026-10-16",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 4,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "skip"
   }
  }
 ],
 "level": 1,
 "level_name": "Needs a person",
 "level_selfhost": null,
 "entry": "closed",
 "door": {
  "passed": 1,
  "tries": 3,
  "self_start": false
 },
 "badges": [
  "agent-can-buy"
 ],
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "part",
   "text": "Gets in 1 of 3 drives",
   "how": "no-account"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "yes",
   "text": "Work done: 89% of the core"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "yes",
   "text": "Pays on its own: paid $1 a call (x402), 16 Oct",
   "value": "paid",
   "route": "agent_rail",
   "per_call": {
    "caps": [
     "cap-01",
     "cap-02",
     "cap-03",
     "cap-04",
     "cap-06",
     "cap-07",
     "cap-08",
     "cap-09"
    ],
    "core": 9,
    "share": 89
   }
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; what it made goes after 14 days",
   "at": "delete",
   "left": "expires",
   "after_hours": 336
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "yes",
   "text": "Docs agents can read: llms.txt, an OpenAPI and an MCP server; a docs page for each core task",
   "have": [
    "llms_txt",
    "openapi",
    "mcp"
   ],
   "docs": "complete"
  },
  {
   "key": "access",
   "label": "Access",
   "state": "part",
   "text": "Gets in 1 of 3 drives",
   "how": "no-account",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "yes",
   "text": "Work done: 89% of the core",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "yes",
   "text": "Pays on its own: paid $1 a call (x402), 16 Oct",
   "value": "paid",
   "route": "agent_rail",
   "per_call": {
    "caps": [
     "cap-01",
     "cap-02",
     "cap-03",
     "cap-04",
     "cap-06",
     "cap-07",
     "cap-08",
     "cap-09"
    ],
    "core": 9,
    "share": 89
   },
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; what it made goes after 14 days",
   "at": "delete",
   "left": "expires",
   "after_hours": 336,
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "person",
   "label": "A person sets it up",
   "routes": [],
   "minutes": null,
   "core": null
  }
 ],
 "minutes": null,
 "next": {
  "to": 3,
  "text": "Next: let an agent get in on its own in every drive"
 },
 "stop": null,
 "core": "8/9",
 "scores": {
  "coverage": 82,
  "reliability": 82,
  "resilience": 95,
  "setup": 100,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": 88,
  "docs_match": null,
  "setup": 100,
  "security": "private",
  "standards": [
   {
    "standard": "MCP",
    "state": "current",
    "behind": null,
    "value": "2026-07-28"
   },
   {
    "standard": "MCP discovery",
    "state": "current",
    "behind": null,
    "value": "ok"
   },
   {
    "standard": "MCP client registration",
    "state": "current",
    "behind": null,
    "value": "cimd"
   },
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 1,
    "value": "3.1.2"
   }
  ]
 },
 "reliability_method": "pass^k",
 "resilience": {
  "parts": {
   "error_legibility": 97,
   "recovery": 89,
   "idempotency": 100
  },
  "summary": null
 },
 "stress": [
  {
   "capability": "Run an Actor from the Store",
   "probe": "bad memory value (not a power of 2)",
   "outcome": "400 ['content-type: application/json; charset=utf-8'] {'error': {'type': 'schema-validation', 'message': 'Invalid value provided in options: memoryMbytes must be at least 128 Received 7'}}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Run an Actor from the Store",
   "probe": "run id that does not exist",
   "outcome": "404 {'error': {'type': 'record-not-found', 'message': 'Actor run was not found'}}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Build and publish your own Actor",
   "probe": "create Actor without a name",
   "outcome": "201 {'data': {'id': '84ZzhnrWbQSpJyCVr', 'userId': 'Gw3QqnfvXhkfzzdUG', 'name': 'my-actor', 'username': 'prepaid-account-gw3qqnfvxhkf', 'isPublic': False, 'createdAt': '16 Oct 2026', 'mod",
   "grade": "vague",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Store and read key-value store records (JSON, HTML, images, strings)",
   "probe": "create the same named store twice",
   "outcome": "201 VAgzSgpF2A3OKlvWj; 200 VAgzSgpF2A3OKlvWj (same store returned)",
   "grade": "clear",
   "idempotent": "yes",
   "rate_limit": null
  },
  {
   "capability": "Manage a request queue for crawling",
   "probe": "batch with duplicate uniqueKeys",
   "outcome": "400 {'error': {'type': 'request-queue-duplicate-requests', 'message': 'Batch contains duplicate requests (by uniqueKey).'}}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Manage a request queue for crawling",
   "probe": "request without uniqueKey and with a bad url",
   "outcome": "400 {'error': {'type': 'schema-validation', 'message': 'Invalid value provided in request: uniqueKey is required'}}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Run an Actor from the Store",
   "probe": "wrong token",
   "outcome": "401 {'error': {'type': 'user-or-token-not-found', 'message': 'User was not found or authentication token is not valid'}}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Retrieve dataset results from an Actor run",
   "probe": "push items to a dataset id that does not exist",
   "outcome": "404 {'error': {'type': 'record-not-found', 'message': 'Dataset was not found'}}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Store and read key-value store records (JSON, HTML, images, strings)",
   "probe": "burst of 15 sequential reads",
   "outcome": "[200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200]; headers ['x-ratelimit-limit: 60']; 429 headers None",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": "none-seen"
  },
  {
   "capability": "Run an Actor from the Store",
   "probe": "revoked token",
   "outcome": "401 user-or-token-not-found 'User was not found or authentication token is not valid'",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  }
 ],
 "surface_audit": null,
 "coverage_core": 89,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 4,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": false,
  "prompt_sha": "365f93123295",
  "kb_version": "3+overlay-83f4487de6",
  "identity": "e8a92f24a9a8"
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 4,
  "signed": true,
  "inbox": [
   "agentdrives.com"
  ],
  "robots": "skip"
 },
 "same_level_drives": 3,
 "drives": 3,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": null,
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "closed"
  },
  "signed": {
   "state": "page",
   "kind": "signup",
   "at": "2026-10-16"
  },
  "browser": {
   "state": "unknown",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "llms.txt, auth.md, agents.md, OpenAPI 3.1.2 and Markdown docs (.md URLs and Accept: text/markdown) all fetched headless."
  },
  "signup": {
   "status": "n/a",
   "note": "Not needed: a documented route works without an account.",
   "way": "keyless",
   "no_account": true,
   "note_driver": "Main way: a prepaid token bought over x402 at agi.apify.com needs no sign-up (documented in auth.md and agi.apify.com/AGENTS.md). The email sign-up hit a reCAPTCHA image puzzle; Continue with GitHub worked in the browser.",
   "status_driver": "n/a"
  },
  "verify": {
   "status": "n/a",
   "note": "Not needed: a documented route works without an account.",
   "no_account": true,
   "note_driver": "No email step on the prepaid route; the GitHub sign-up needed no verification either.",
   "status_driver": "n/a"
  },
  "credentials": {
   "status": "headless",
   "note": "x402 v2 payment (we, $1 USDC on Base) answered 201 with an Apify API token, spend cap $1, expires 30 Oct 2026. For a normal account, the documented RFC 8628 device flow gave a token headless after one approval in Console.",
   "via": ""
  },
  "first_call": {
   "status": "headless",
   "note": "GET /v2/users/me 200 with the prepaid token.",
   "route": "no_account"
  },
  "first_action": {
   "status": "headless",
   "note": "POST /v2/acts/apify~hello-world/runs -> 201, run SUCCEEDED, $0.00007."
  },
  "pay": {
   "status": "headless",
   "grade": "P5",
   "rails": [
    "x402 v2 (Base, Solana) at agi.apify.com",
    "MPP (Tempo, Solana) at agi.apify.com, documented"
   ],
   "rail_ids": [
    "x402",
    "mpp"
   ],
   "first_party": true,
   "rail_scope": "full",
   "trial_path": "free tier",
   "route": "agent_rail",
   "checkout": {
    "reached": "plan_page",
    "processor": "none",
    "captcha": "none",
    "three_ds": "not_seen",
    "card_form": false,
    "phone_field": "none",
    "wallets": [],
    "rail_offer": "x402",
    "price": "19.00",
    "currency": "USD",
    "period": "month",
    "plan": "Starter",
    "last_button": "Save & continue"
   },
   "person": null,
   "ours": "rule",
   "note": "We paid $1 over x402 v2 on agi.apify.com (tx 0x9b7549c331e92154e262b62ebf49440cc3717cf382aa4b58fa1742bff03659e6, confirmed, 201 with a token); the token runs any Actor, so the rail buys the real product. The card checkout (Starter $19/month) was walked to the Billing details step, which needs a street address our identity does not have; payment step not seen.",
   "paid": {
    "rail": "x402",
    "network": "eip155:8453",
    "testnet": false,
    "tx": "0x9b7549c331e92154e262b62ebf49440cc3717cf382aa4b58fa1742bff03659e6",
    "amount": 1,
    "currency": "USD",
    "at": "2026-10-16T05:02:03Z",
    "source": "pay_tx.json"
   },
   "per_call": {
    "caps": [
     "cap-01",
     "cap-02",
     "cap-03",
     "cap-04",
     "cap-06",
     "cap-07",
     "cap-08",
     "cap-09"
    ],
    "paid_caps": [],
    "core": 9,
    "share": 89,
    "proof": "tasks"
   }
  },
  "cancel": {
   "status": "n/a",
   "grade": "X5",
   "note": "Nothing to cancel: our agent used it pay-per-call.",
   "docs_note": "Nothing recurring started: a one-off x402 prepaid token and the free plan. llms.txt: 'There is nothing to cancel.' The prepaid account ends with its 14-day TTL; paid plans are managed in Console > Billing.",
   "nothing": "pay_per_call"
  },
  "delete": {
   "status": "browser",
   "note": "The prepaid route cannot delete via API (DELETE /v2/users/me -> 405); AGENTS.md says that account is deleted automatically after its 14-day TTL, with everything it made deleted by API. The GitHub-signup route did delete headlessly-assisted-by-browser: Settings > Delete account (type the username) in the agent's own browser, after which Console sign-in was refused, meeting the bar for a done delete. Ladder credits the achieved route.",
   "left": "expires",
   "after_hours": 336,
   "account": true
  }
 },
 "routes": [
  {
   "route": "keyless",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 1
  },
  {
   "route": "pay_per_call",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "wallet",
   "fresh": true,
   "minutes": 2
  },
  {
   "route": "email_password",
   "offered": "seen",
   "tried": true,
   "not_tried": null,
   "result": "walled",
   "wall": {
    "type": "challenge",
    "owner": "product"
   },
   "person": "none",
   "brings": "inbox",
   "fresh": true,
   "minutes": 3
  },
  {
   "route": "sso_github",
   "offered": "seen",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "once",
   "brings": "github_account",
   "fresh": true,
   "minutes": 4
  },
  {
   "route": "sso_google",
   "offered": "seen",
   "tried": false,
   "not_tried": "idp_blocked",
   "result": null,
   "wall": null,
   "person": "none",
   "brings": "google_account",
   "fresh": true,
   "minutes": 0
  },
  {
   "route": "device_login",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "github_account",
   "fresh": true,
   "minutes": 2
  },
  {
   "route": "oauth_consent",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "github_account",
   "fresh": true,
   "minutes": 3
  }
 ],
 "checkout": {
  "reached": "plan_page",
  "processor": "none",
  "captcha": "none",
  "three_ds": "not_seen",
  "phone_field": "none",
  "rail_offer": "x402",
  "period": "month",
  "card_form": false,
  "price": "19.00",
  "currency": "USD",
  "plan": "Starter",
  "last_button": "Save & continue"
 },
 "docs": {
  "at": "2026-10-16",
  "read": 599,
  "listed": 2592,
  "sampled": true,
  "overall": "complete",
  "getting_started": "found",
  "auth": "found",
  "errors": "found",
  "examples": "good",
  "freshness": "fresh",
  "newest": "2026-10-15",
  "core_pages": "9 of 9",
  "capabilities": "covered"
 },
 "claims": {
  "claimed": 16,
  "tried": 16,
  "held": 14,
  "broken": 0,
  "unclear": 2,
  "not_tried": 0,
  "undocumented_works": 1
 },
 "pay_options": {
  "checked": "2026-10-16",
  "source": "probe",
  "options": [
   {
    "id": "x402",
    "name": "x402",
    "kind": "agent-rail",
    "first_party": true,
    "lead": false,
    "networks": [
     "Base",
     "Solana"
    ],
    "testnet": false
   },
   {
    "id": "mpp",
    "name": "MPP",
    "kind": "agent-rail",
    "first_party": true,
    "lead": true,
    "networks": [],
    "testnet": false
   }
  ],
  "agentic": [
   "x402"
  ],
  "paid": {
   "rail": "x402",
   "network": "eip155:8453",
   "testnet": false,
   "tx": "0x9b7549c331e92154e262b62ebf49440cc3717cf382aa4b58fa1742bff03659e6",
   "amount": 1,
   "currency": "USD",
   "at": "2026-10-16T05:02:03Z"
  },
  "exercised": true,
  "detected_grade": null,
  "trial": {
   "no_card": true,
   "card_required": null,
   "free_plan": true
  },
  "owner_fixes": []
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": true,
  "sdk": true,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST v2, clear JSON errors with a type field, x-ratelimit-limit header",
  "openapi": "3.1.2 at docs.apify.com/api/openapi.json",
  "mcp": "official, 28 Jul 2026 only, 12 tools with a token, 4 anonymous",
  "aipref": "Cloudflare Content Signals line in robots.txt, not aipref Content-Usage; markdown served without Vary: Accept; server card only at the legacy /.well-known path (<mcp>/server-card 404); AI Catalog at /.well-known/ai-catalog.json"
 },
 "can_do": [
  "Buy a spend-capped API token over x402 with no account and no human",
  "Search the Store and read Actor details with no account (API and MCP)",
  "Run a Store Actor and read its dataset (API, MCP call-actor, CLI apify call)",
  "Create, build, update and delete your own Actor via the API",
  "Develop an Actor locally with the CLI and push and call it",
  "Write and read datasets, key-value stores and request queues",
  "Use Apify Proxy from inside your own Actor",
  "Create tasks, schedules and webhooks and see the webhook dispatch",
  "Abort and resurrect a run and read its log",
  "Share a dataset by link and grant a user read access",
  "Get a user token by the RFC 8628 device flow or MCP OAuth"
 ],
 "cannot_do": [
  {
   "what": "Sign up with email and password",
   "why": "reCAPTCHA image puzzle on the sign-up form"
  },
  {
   "what": "Monetize an Actor",
   "why": "Console only; needs a public profile and billing details and payout method our identity lacks"
  },
  {
   "what": "Publish an Actor to the Store",
   "why": "403 username-required (needs a public profile), and a public listing is outside our rules"
  },
  {
   "what": "Run apify/cheerio-scraper via API on a fresh account",
   "why": "403 full-permission-actor-not-approved: approval is a Console click"
  },
  {
   "what": "Delete the account or revoke a token via API",
   "why": "DELETE /v2/users/me 405; no revocation_endpoint; Console only"
  },
  {
   "what": "Use Apify Proxy from outside the platform on the free plan",
   "why": "'Proxy external access' needs a paid plan"
  }
 ],
 "blockers": [
  "reCAPTCHA image puzzle on the email sign-up",
  "Monetization is Console-only and needs billing/payout details"
 ],
 "tips_for_owner": [
  "Let signed agents pass the sign-up reCAPTCHA",
  "Add API routes for monetization and publishing",
  "Let agents approve Actor permissions by API",
  "Add token revocation and account deletion endpoints",
  "Offer scopes narrower than full_api_access",
  "Make apify actors rm --yes not wait on stdin",
  "Apply shares at once and drop them with the account",
  "Serve the MCP server card at /server-card"
 ],
 "tips_for_agents": [
  "With a wallet, buy a prepaid token at agi.apify.com (x402 or MPP, $1 minimum): no account, no browser, works on api.apify.com and mcp.apify.com.",
  "For a person's account use the device flow in auth.md: POST /oauth/apps, /oauth/apps/devices, poll /oauth/apps/token.",
  "MCP: server/discover works without auth; add ?tools=search-actors,fetch-actor-details,search-apify-docs,fetch-apify-docs for anonymous tools.",
  "Run CLI commands with stdin closed: apify actors rm --yes hangs otherwise.",
  "Full-permission Store Actors (e.g. cheerio-scraper) return 403 until approved in Console; building your own small Actor avoids it.",
  "Request-queue handledRequestCount lags a few seconds after a PUT; re-read before concluding.",
  "Named storages are idempotent: POST with the same name returns the same store (200)."
 ],
 "selfhost": null,
 "summary": "An agent with a wallet gets into Apify with no account and no human: we paid $1 over x402 at agi.apify.com and the token ran every core task headless (Actors, storage, own Actor build and deploy, proxy from an Actor), 8 of 9 core capabilities, each repeated three times. The email sign-up shows a reCAPTCHA puzzle, but GitHub sign-in, the device flow and MCP OAuth all work; monetization, token revocation and account deletion are Console-only.",
 "wall": "reCAPTCHA puzzle on the email sign-up form",
 "plan_scope": "free plan (prepaid x402 account and a GitHub sign-up)",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Apify is a marketplace where you buy and run small bots ('Actors') that scrape or process web data. An agent with a crypto wallet got in completely on its own by paying $1 for a temporary API key, and used that key to run bots, store and retrieve data, build its own bot, and route traffic through a proxy. The only thing that stopped the agent cold was the ordinary email sign-up form, which showed an image puzzle (pick the crosswalks).",
  "can_do": [
   "Pay a small amount of cryptocurrency to get a working account with no sign-up or human involved",
   "Search for and run ready-made bots from the marketplace",
   "Build, test, and publish its own bot using code tools",
   "Save and retrieve data the bots collect",
   "Route its own bot's web requests through Apify's proxy",
   "Get a working login by using 'Sign in with GitHub' or a device-pairing code, with no puzzle involved",
   "Delete the account it made through GitHub and have its login stop working afterward"
  ],
  "cannot_do": [
   {
    "what": "Sign up with a plain email and password",
    "why": "An image puzzle (reCAPTCHA) appears that the agent can't solve"
   },
   {
    "what": "Set up paid pricing for its own bot",
    "why": "Needs a public profile and payout details only settable in the website dashboard"
   },
   {
    "what": "Delete or cancel its temporary pay-per-use account directly",
    "why": "No delete button for that account type; it just expires after two weeks"
   },
   {
    "what": "Use the proxy from its own outside server",
    "why": "That feature needs a paid plan"
   }
  ]
 },
 "plan_gated": [
  {
   "capability": "Apify Proxy from outside the platform",
   "plan": "paid",
   "evidence": "proxy.apify.com:8000 answered 'The \"Proxy external access\" feature isn't enabled for your account. Please upgrade your plan'"
  },
  {
   "capability": "Monitoring alerts",
   "plan": "paid",
   "evidence": "capability map, docs.apify.com/actors/running/monitoring.md"
  },
  {
   "capability": "Organization account",
   "plan": "paid",
   "evidence": "capability map"
  },
  {
   "capability": "Add-ons",
   "plan": "paid",
   "evidence": "Add-ons step of the subscription wizard"
  }
 ],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Actors",
   "capability": "Run an Actor from the Store",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/actors/{actorId}/runs",
    "mcp": "call-actor / Actor-named tool",
    "cli": "apify call",
    "ui": "Apify Console > Actor page > Run"
   },
   "check": "GET /v2/actor-our records shows status SUCCEEDED and a defaultDatasetId",
   "source": "https://docs.apify.com/api/v2, https://apify.com/"
  },
  {
   "id": "cap-02",
   "group": "Actors",
   "capability": "Discover/search Actors in the Store",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /v2/store?search=",
    "mcp": "search-actors",
    "cli": "apify api --list-endpoints / apify store",
    "ui": "apify.com/store search"
   },
   "check": "GET /v2/store?search={kw} returns items[] matching the keyword",
   "source": "https://apify.com/ (anonymous MCP tools note), https://apify.com/store"
  },
  {
   "id": "cap-03",
   "group": "Actors",
   "capability": "Build and publish your own Actor",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/acts and /v2/acts/{actorId}/versions",
    "mcp": null,
    "cli": "apify create / apify push / apify publish",
    "ui": "Console > Actors > Create new"
   },
   "check": "GET /v2/acts/{actorId} shows the new Actor with the pushed version and isPublic true after publish",
   "source": "https://docs.apify.com/cli/docs.md, https://docs.apify.com/actors/publishing.md"
  },
  {
   "id": "cap-04",
   "group": "Actors",
   "capability": "Develop and test Actor locally then deploy",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "apify run / apify push",
    "ui": "Console > Actor > Source"
   },
   "check": "apify push followed by GET /v2/acts/{actorId}/versions shows the new build/version",
   "source": "https://docs.apify.com/cli/docs.md"
  },
  {
   "id": "cap-05",
   "group": "Actors",
   "capability": "Monetize a Paid Actor (pay-per-event or pay-per-usage)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Console > Actor > Publication > Monetization"
   },
   "check": "Actor's public page shows pricing model (pay-per-event/pay-per-usage) and the owner's billing shows earnings after a run",
   "source": "https://docs.apify.com/actors/publishing.md, https://apify.com/pricing"
  },
  {
   "id": "cap-06",
   "group": "Storage",
   "capability": "Retrieve dataset results from an Actor run",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /v2/datasets/{datasetId}/items",
    "mcp": "get-dataset-items / fetch-actor-details results",
    "cli": "apify datasets get-items",
    "ui": "Console > Storage > Dataset"
   },
   "check": "GET /v2/datasets/{id}/items returns the items array written by the run",
   "source": "https://docs.apify.com/storage.md, https://docs.apify.com/api/v2/storage-datasets.md"
  },
  {
   "id": "cap-07",
   "group": "Storage",
   "capability": "Store and read key-value store records (JSON, HTML, images, strings)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET/PUT /v2/key-value-stores/{id}/records/{key}",
    "mcp": null,
    "cli": "apify kvs",
    "ui": "Console > Storage > Key-value store"
   },
   "check": "PUT then GET on /v2/key-value-stores/{id}/records/{key} returns the stored value",
   "source": "https://docs.apify.com/storage.md"
  },
  {
   "id": "cap-08",
   "group": "Storage",
   "capability": "Manage a request queue for crawling",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST/GET /v2/request-queues/{id}/requests",
    "mcp": null,
    "cli": null,
    "ui": "Console > Storage > Request queue"
   },
   "check": "GET /v2/request-queues/{id} shows handledRequestCount increasing as requests are processed",
   "source": "https://docs.apify.com/storage.md"
  },
  {
   "id": "cap-09",
   "group": "Proxy",
   "capability": "Route requests through residential/datacenter/SERP proxy or anti-blocking Unblocker",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "proxyConfiguration input field on Actor runs",
    "mcp": null,
    "cli": null,
    "ui": "Console > Proxy / Actor input 'Proxy configuration'"
   },
   "check": "Actor run log/output shows requests made through assigned proxy IPs/groups configured in proxyConfiguration",
   "source": "https://apify.com/proxy, https://apify.com/pricing"
  },
  {
   "id": "cap-10",
   "group": "Automation",
   "capability": "Schedule recurring Actor/task runs via cron",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/schedules",
    "mcp": null,
    "cli": null,
    "ui": "Console > Schedules"
   },
   "check": "GET /v2/schedules/{id} shows isEnabled true and nextRunAt advancing after cron interval",
   "source": "https://docs.apify.com/actors/running/schedules.md, https://docs.apify.com/api/v2/schedules.md"
  },
  {
   "id": "cap-11",
   "group": "Automation",
   "capability": "Save a configured Actor run as a reusable task",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/actor-tasks",
    "mcp": null,
    "cli": null,
    "ui": "Console > Tasks > Create"
   },
   "check": "GET /v2/actor-tasks/{id} returns the saved task with its stored input; POST /v2/actor-tasks/{id}/runs starts a run using that input",
   "source": "https://docs.apify.com/api/v2/actor-tasks.md, https://docs.apify.com/actors/running/tasks.md"
  },
  {
   "id": "cap-12",
   "group": "Automation",
   "capability": "Register webhooks on Actor/run lifecycle events",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/webhooks",
    "mcp": null,
    "cli": null,
    "ui": "Console > Actor > Settings > Webhooks"
   },
   "check": "GET /v2/webhook-dispatches shows a dispatch record after the triggering run event fires",
   "source": "https://docs.apify.com/api/v2/webhooks-webhooks.md"
  },
  {
   "id": "cap-13",
   "group": "Automation",
   "capability": "Keep an Actor running as a real-time API (Standby mode)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "HTTP requests to the Actor's standby URL",
    "mcp": null,
    "cli": null,
    "ui": "Console > Actor > Settings > Standby"
   },
   "check": "Actor run status shows isStandby/READY and responds to direct HTTP requests without a new run being started per request",
   "source": "https://docs.apify.com/platform/actors/development/programming-interface/standby, https://apify.com/actors"
  },
  {
   "id": "cap-14",
   "group": "Automation",
   "capability": "Abort, resurrect, or reboot an Actor run",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/actor-our records, /reboot, /resurrect",
    "mcp": null,
    "cli": "apify actor abort",
    "ui": "Console > Runs > Run detail"
   },
   "check": "GET /v2/actor-our records status changes to ABORTED then RUNNING again after resurrect",
   "source": "https://docs.apify.com/api/v2/actors-actor-runs.md, https://docs.apify.com/actors/running.md"
  },
  {
   "id": "cap-15",
   "group": "Monitoring",
   "capability": "View and download Actor build/run logs",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /v2/actor-our records",
    "mcp": null,
    "cli": "apify log",
    "ui": "Console > Run detail > Log"
   },
   "check": "GET /v2/actor-our records returns the run's log text",
   "source": "https://docs.apify.com/api/v2/logs.md"
  },
  {
   "id": "cap-16",
   "group": "Monitoring",
   "capability": "Set up monitoring alerts for Actor/task performance and metrics",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Console > Actor/Task > Monitoring"
   },
   "check": "Console monitoring tab shows configured alert thresholds and triggers a notification when a run breaches them",
   "source": "https://docs.apify.com/actors/running/monitoring.md"
  },
  {
   "id": "cap-18",
   "group": "Integrations",
   "capability": "Chat with Apify AI inside Console to find/run Actors conversationally",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Console chat (Apify AI)"
   },
   "check": "Console chat panel returns an Actor recommendation and can launch it, visible in Runs list",
   "source": "https://docs.apify.com/account/apify-ai.md, https://docs.apify.com/integrations/mcp.md"
  },
  {
   "id": "cap-19",
   "group": "Integrations",
   "capability": "Pay for Actor runs without an account via agentic payments (x402/MPP)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "PAYMENT-SIGNATURE / skyfire-pay-id headers at agi.apify.com",
    "mcp": null,
    "cli": null,
    "ui": "agi.apify.com"
   },
   "check": "A request carrying a valid payment credential to agi.apify.com returns a temporary API token with a spend cap, usable to run an Actor",
   "source": "https://apify.com/, https://apify.com/pricing"
  },
  {
   "id": "cap-21",
   "group": "Integrations",
   "capability": "Call third-party MCP servers (e.g. Notion, Slack) from inside an Actor via MCP connectors",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Actor development / MCP connectors"
   },
   "check": "Actor run log shows a successful call to the connected external MCP server's tool",
   "source": "https://docs.apify.com/integrations/mcp-connectors.md"
  },
  {
   "id": "cap-22",
   "group": "Developer tools",
   "capability": "Make raw authenticated API calls from the terminal",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "any /v2/* endpoint",
    "mcp": null,
    "cli": "apify api [method] [endpoint]",
    "ui": null
   },
   "check": "apify api GET v2/users/me prints the account JSON for the logged-in token",
   "source": "https://docs.apify.com/cli/docs/reference.md"
  },
  {
   "id": "cap-23",
   "group": "Developer tools",
   "capability": "Define and use secrets in Actor environment variables",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "apify secrets add / ls",
    "ui": "Console > Actor > Settings > Environment variables"
   },
   "check": "apify secrets ls lists the added secret key, and the Actor's env var referencing @secretName resolves at run time",
   "source": "https://docs.apify.com/cli/docs/reference.md"
  },
  {
   "id": "cap-26",
   "group": "Collaboration",
   "capability": "Grant other users access rights to Actors, runs, or storages",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Console > resource > Actions > Share"
   },
   "check": "Invited collaborator's account can view/run the shared resource per the granted permission level",
   "source": "https://docs.apify.com/account/collaboration.md, https://docs.apify.com/account/collaboration/access-rights.md"
  },
  {
   "id": "cap-27",
   "group": "Collaboration",
   "capability": "Share a run/build/storage by direct link without granting account access",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Console > resource > Share link"
   },
   "check": "An unauthenticated GET using the shared resource's ID/link returns the resource contents",
   "source": "https://docs.apify.com/account/collaboration/general-resource-access.md"
  },
  {
   "id": "cap-29",
   "group": "Storage",
   "capability": "Rename a storage to make it permanently retained (named storage)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "PUT /v2/datasets/{id} (name field)",
    "mcp": null,
    "cli": null,
    "ui": "Console > Storage > Actions > Rename"
   },
   "check": "GET /v2/datasets/{id} shows the new name and the store persists past the unnamed-storage retention window",
   "source": "https://docs.apify.com/storage.md"
  },
  {
   "id": "cap-30",
   "group": "Storage",
   "capability": "Delete a storage (dataset/key-value store/request queue)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "DELETE /v2/datasets/{id}",
    "mcp": null,
    "cli": null,
    "ui": "Console > Storage > Actions > Delete"
   },
   "check": "GET /v2/datasets/{id} after delete returns 404 record-not-found",
   "source": "https://docs.apify.com/storage.md"
  },
  {
   "id": "cap-24",
   "group": "Developer tools",
   "capability": "Sign and verify data objects via API tools endpoint",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/tools/encode, /v2/tools/decode (sign/verify)",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "POST to the sign endpoint returns a signature that the verify endpoint accepts for the same payload",
   "source": "https://docs.apify.com/api/v2/tools-encoding.md"
  },
  {
   "id": "cap-25",
   "group": "Developer tools",
   "capability": "Query Apify documentation/tutorials directly from an AI coding assistant",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "search-apify-docs / fetch-apify-docs",
    "cli": null,
    "ui": null
   },
   "check": "Calling fetch-apify-docs with a doc URL returns that page's markdown content",
   "source": "https://apify.com/"
  },
  {
   "id": "cap-28",
   "group": "Collaboration",
   "capability": "Create and manage an organization account for team collaboration",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Console > Organization settings"
   },
   "check": "Organization account page lists invited members with role-specific permissions",
   "source": "https://docs.apify.com/account/collaboration/organization.md"
  },
  {
   "id": "cap-31",
   "group": "Account/billing",
   "capability": "View usage, billing, and upgrade/downgrade subscription plan",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "GET /v2/users/me/usage",
    "mcp": null,
    "cli": null,
    "ui": "Console > Billing"
   },
   "check": "GET /v2/users/me/limits or /usage reflects the plan's included CU/proxy allowance after a plan change",
   "source": "https://apify.com/pricing, https://docs.apify.com/api/v2/users-usage.md"
  },
  {
   "id": "cap-32",
   "group": "Account/billing",
   "capability": "Apply discounts for startups, universities, or nonprofits",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "apify.com/resources/startups|universities|nonprofits application forms"
   },
   "check": "Billing page shows the discounted rate applied to the Scale/Starter plan after approval",
   "source": "https://apify.com/resources/startups, https://apify.com/resources/universities, https://apify.com/resources/nonprofits"
  },
  {
   "id": "cap-33",
   "group": "Account/billing",
   "capability": "Purchase add-ons (extra concurrent runs, Actor RAM, datacenter proxy IPs, personal training)",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Console > Billing > Add-ons"
   },
   "check": "Billing settings show the purchased add-on (e.g. extra concurrent runs) and the account's max concurrent runs limit increases accordingly",
   "source": "https://apify.com/pricing"
  }
 ],
 "attempts": [
  {
   "t": "02:06",
   "cap": "discovery",
   "capability": "MCP server/discover",
   "task": "probe agent discovery",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST https://mcp.apify.com/ server/discover 2026-07-28 -> 200 supportedVersions ['2026-07-28'], serverInfo apify-mcp-server 0.18.3; no auth needed for discover; tools/list without token 401 invalid_token unless ?tools=search-actors,... (anonymous tools, 4 tools); with token 12 tools"
  },
  {
   "t": "02:06",
   "cap": "discovery",
   "capability": "MCP server card",
   "task": "probe agent discovery",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "<mcp>/server-card 404; legacy /.well-known/mcp/server-card.json 200 application/json"
  },
  {
   "t": "02:06",
   "cap": "discovery",
   "capability": "AI catalog",
   "task": "probe agent discovery",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "https://apify.com/.well-known/ai-catalog.json 200 application/ai-catalog+json specVersion 1.0"
  },
  {
   "t": "02:06",
   "cap": "discovery",
   "capability": "A2A agent card",
   "task": "probe agent discovery",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "/.well-known/agent-card.json 404 html; /.well-known/agent.json 404"
  },
  {
   "t": "02:06",
   "cap": "discovery",
   "capability": "aipref",
   "task": "probe agent discovery",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "robots.txt User-agent:* has 'Content-Signal: search=yes, ai-input=yes, ai-train=yes' (Cloudflare Content Signals scheme, parses); no Content-Usage line or header"
  },
  {
   "t": "02:06",
   "cap": "discovery",
   "capability": "markdown",
   "task": "probe agent discovery",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Accept: text/markdown on docs.apify.com/api/v2 and apify.com/store -> text/markdown (Vary: Accept-Encoding only, no Vary: Accept); .md URLs e.g. docs.apify.com/storage.md 200 text/markdown"
  },
  {
   "t": "02:06",
   "cap": "discovery",
   "capability": "openapi",
   "task": "probe agent discovery",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "https://docs.apify.com/api/openapi.json declares openapi 3.1.2"
  },
  {
   "t": "02:06",
   "cap": "discovery",
   "capability": "llms.txt/auth.md",
   "task": "probe agent discovery",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify.com/llms.txt, docs.apify.com/llms.txt, apify.com/auth.md (states no agent registration; device flow, MCP OAuth, prepaid tokens)"
  },
  {
   "t": "02:06",
   "cap": "docs",
   "capability": "Docs",
   "task": "read llms.txt, auth.md, docs_pass verdict",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "llms.txt and auth.md fetched; docs_pass.json read; OpenAPI 3.1.2 available"
  },
  {
   "t": "02:19",
   "cap": "cap-02",
   "capability": "Discover/search Actors in the Store",
   "task": "search the Store for 'hello world' without an account",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "keyless",
   "evidence": "GET /v2/store?search=hello world -> 200, items ['apify/hello-world', 'unfenced-group/helloworld-rs-scraper', 'jobatlas/normalized-helloworld-jobs-scraper', 'apify/example-call']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/store-get.md"
   }
  },
  {
   "t": "02:19",
   "cap": "signup",
   "way": "keyless",
   "capability": "no-account route",
   "task": "anonymous Store API and anonymous MCP tools",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/store 200 with no token; MCP ?tools=search-actors,... tools/list 200 and search-actors call 200 with no token. Runs need auth (llms.txt)."
  },
  {
   "t": "02:36",
   "cap": "first_call",
   "way": "pay_per_call",
   "capability": "first API call",
   "task": "GET /v2/users/me with the prepaid token",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "200, user prepaid-account-Gw3QqnfvXhkf, plan FREE",
   "quality": {
    "docs_match": "match",
    "docs_url": "https://agi.apify.com/AGENTS.md"
   }
  },
  {
   "t": "02:36",
   "cap": "first_action",
   "way": "pay_per_call",
   "capability": "first real action",
   "task": "run apify/hello-world",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts/apify~hello-world/runs?waitForFinish=60 -> 201 run pWjO8QxwlwRfDyRYD SUCCEEDED, cost $0.00007",
   "quality": {
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-runs-post.md"
   }
  },
  {
   "t": "02:36",
   "cap": "credentials",
   "way": "pay_per_call",
   "capability": "credential",
   "task": "prepaid token minted by x402 payment (we, pay_tx.json)",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "pay_tx.json tx 0x9b7549c3… settled on Base, 201 with token, $1 balance, expires 2026-10-30; token answers /v2/users/me 200"
  },
  {
   "t": "04:44",
   "cap": "signup",
   "way": "email_password",
   "capability": "sign-up",
   "task": "console.apify.com/sign-up with email + password",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "cause": "check",
   "evidence": "Email + strong password filled, Sign up clicked -> reCAPTCHA image puzzle ('Select all images with crosswalks') shown (shots/004.png)."
  },
  {
   "t": "07:06",
   "cap": "signup",
   "way": "sso_github",
   "capability": "sign-up",
   "task": "Continue with GitHub on console.apify.com/sign-up",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GitHub consent asked scope user:email only; Authorize -> console welcome form (name, username) -> Console store, Usage $0.00/$5.00 (free plan). No CAPTCHA on this path."
  },
  {
   "t": "09:26",
   "cap": "credentials",
   "way": "device_login",
   "capability": "credential",
   "task": "RFC 8628 device flow: DCR client, device code, approve in our Console, poll token",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "key": "create",
   "evidence": "POST console-backend /oauth/apps 201 client; /oauth/apps/devices 201 user_code; approved at console.apify.com/authorize/device (browser, our account); /oauth/apps/token 200 Bearer full_api_access (only scope). GET /v2/users/me 200 agentdrives-test-011",
   "quality": {
    "docs_match": "match",
    "docs_url": "https://apify.com/auth.md",
    "error_legibility": "clear"
   }
  },
  {
   "t": "09:26",
   "cap": "first_call",
   "way": "sso_github",
   "capability": "first API call",
   "task": "GET /v2/users/me with device-flow token",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "200 username agentdrives-test-011, plan FREE",
   "quality": {
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/users-me-get.md"
   }
  },
  {
   "t": "10:05",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "start apify/hello-world run",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts/apify~hello-world/runs -> 201 run ikNsa1Lsa7Pidfx6l SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-runs-post.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "10:06",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "read run back",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/actor-our records 200 status SUCCEEDED dataset Lr7SOABgbjxuHM4Ig",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/actor-run-get.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "10:07",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "update run status message, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT /v2/actor-our records -> 200; GET statusMessage='checked by AgentDrives';",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/actor-run-put.md",
    "error_legibility": "n/a"
   },
   "way": "pay_per_call"
  },
  {
   "t": "10:08",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "use run output (dataset items)",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/datasets/Lr7SOABgbjxuHM4Ig/items -> 200 [{'message': 'Hello world!'}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/dataset-items-get.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "10:09",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "delete run, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE /v2/actor-our records -> 204; GET -> 404 {'error': {'type': 'record-not-found', 'message': 'Actor run was not found'}}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/actor-run-delete.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "10:11",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "start apify/hello-world run",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts/apify~hello-world/runs -> 201 run yKbcvV8TbewdXluT4 SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-runs-post.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "10:12",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "read run back",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/actor-our records 200 status SUCCEEDED dataset O0bN41xhYHjikAJBX",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/actor-run-get.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "10:13",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "update run status message, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT /v2/actor-our records -> 200; GET statusMessage='checked by AgentDrives';",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/actor-run-put.md",
    "error_legibility": "n/a"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "10:14",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "use run output (dataset items)",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/datasets/O0bN41xhYHjikAJBX/items -> 200 [{'message': 'Hello world!'}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/dataset-items-get.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "10:15",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "delete run, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE /v2/actor-our records -> 204; GET -> 404 {'error': {'type': 'record-not-found', 'message': 'Actor run was not found'}}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/actor-run-delete.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "10:17",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "start apify/hello-world run",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts/apify~hello-world/runs -> 201 run WUryJLi4IgblvRsAQ SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-runs-post.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "10:18",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "read run back",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/actor-our records 200 status SUCCEEDED dataset e5twWnrzZheHyLOeA",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/actor-run-get.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "10:19",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "update run status message, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT /v2/actor-our records -> 200; GET statusMessage='checked by AgentDrives';",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/actor-run-put.md",
    "error_legibility": "n/a"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "10:20",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "use run output (dataset items)",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/datasets/e5twWnrzZheHyLOeA/items -> 200 [{'message': 'Hello world!'}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/dataset-items-get.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "10:21",
   "cap": "cap-01",
   "capability": "Run an Actor from the Store",
   "task": "delete run, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE /v2/actor-our records -> 204; GET -> 404 {'error': {'type': 'record-not-found', 'message': 'Actor run was not found'}}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/actor-run-delete.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "10:55",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "create dataset and push 2 items",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/datasets?name=ad-ds-1-1792128288 -> 201 id HBK40GUnN3wZv1FIM; POST items -> 201",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "10:56",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "read items back",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/datasets/HBK40GUnN3wZv1FIM/items -> 200 [{'n': 1, 'v': 'a'}, {'n': 2, 'v': 'b'}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "10:57",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "rename dataset, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT /v2/datasets/HBK40GUnN3wZv1FIM -> 200; GET name ad-ds-1-1792128288-r, itemCount 2",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "10:58",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "export items as CSV",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET items?format=csv -> 200 '\\ufeff\"n\",\"v\"\\n\"1\",\"a\"\\n\"2\",\"b\"\\n'",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "10:59",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "delete dataset, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE -> 204; GET -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "11:01",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "create store and PUT a JSON record",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/key-value-stores?name=ad-kv-1-1792128294 -> 201 id zkqGWhHfgXyIGJjd8; PUT records/cfg -> 201",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "11:01",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "GET record back",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET records/cfg -> 200 {'hello': 'world'}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "11:03",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "overwrite record with text, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT text/plain -> 201; GET -> 200 'plain text v2'",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "11:04",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "list keys",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /keys -> 200 ['cfg']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "11:06",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "delete record and store, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE record -> 204, GET record -> 404; DELETE store -> 204, GET store -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "11:08",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "create queue and add a request",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/request-queues -> 201 id EecHuk5ieIjkyzaHl; POST requests -> 201 requestId TqFAWIFQdzzjqs5",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "11:09",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "read queue head",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /head -> 200 ['https://apify.com/']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "11:12",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "mark request handled, read handledRequestCount",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": false,
   "evidence": "PUT requests/TqFAWIFQdzzjqs5 handledAt -> 200; GET queue handledRequestCount 0 pending 0",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "11:15",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "create dataset and push 2 items",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/datasets?name=ad-ds-2-1792128308 -> 201 id RzmvqMFmfoISLfDNy; POST items -> 201",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:15",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "read items back",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/datasets/RzmvqMFmfoISLfDNy/items -> 200 [{'n': 1, 'v': 'a'}, {'n': 2, 'v': 'b'}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:17",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "rename dataset, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT /v2/datasets/RzmvqMFmfoISLfDNy -> 200; GET name ad-ds-2-1792128308-r, itemCount 0",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:18",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "export items as CSV",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET items?format=csv -> 200 '\\ufeff\"n\",\"v\"\\n\"1\",\"a\"\\n\"2\",\"b\"\\n'",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:19",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "delete dataset, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE -> 204; GET -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:21",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "create store and PUT a JSON record",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/key-value-stores?name=ad-kv-2-1792128314 -> 201 id YRkhuuc1ykPQsKLqo; PUT records/cfg -> 201",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:21",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "GET record back",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET records/cfg -> 200 {'hello': 'world'}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:23",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "overwrite record with text, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT text/plain -> 201; GET -> 200 'plain text v2'",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:23",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "list keys",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /keys -> 200 ['cfg']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:26",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "delete record and store, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE record -> 204, GET record -> 404; DELETE store -> 204, GET store -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:28",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "create queue and add a request",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/request-queues -> 201 id xD1ox8rrZLSc19hOh; POST requests -> 201 requestId TqFAWIFQdzzjqs5",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:29",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "read queue head",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /head -> 200 ['https://apify.com/']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:32",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "mark request handled, read handledRequestCount",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT requests/TqFAWIFQdzzjqs5 handledAt -> 200; GET queue handledRequestCount 1 pending 0",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "11:35",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "create dataset and push 2 items",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/datasets?name=ad-ds-3-1792128328 -> 201 id LeVEj89FZltIGYdSR; POST items -> 201",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:35",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "read items back",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/datasets/LeVEj89FZltIGYdSR/items -> 200 [{'n': 1, 'v': 'a'}, {'n': 2, 'v': 'b'}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:37",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "rename dataset, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT /v2/datasets/LeVEj89FZltIGYdSR -> 200; GET name ad-ds-3-1792128328-r, itemCount 0",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:37",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "export items as CSV",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET items?format=csv -> 200 '\\ufeff\"n\",\"v\"\\n\"1\",\"a\"\\n\"2\",\"b\"\\n'",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:39",
   "cap": "cap-06",
   "capability": "Retrieve dataset results from an Actor run",
   "task": "delete dataset, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE -> 204; GET -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-datasets.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:40",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "create store and PUT a JSON record",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/key-value-stores?name=ad-kv-3-1792128334 -> 201 id DXLi2BWlXBKfQZ9AD; PUT records/cfg -> 201",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:41",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "GET record back",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET records/cfg -> 200 {'hello': 'world'}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:42",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "overwrite record with text, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT text/plain -> 201; GET -> 200 'plain text v2'",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:43",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "list keys",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /keys -> 200 ['cfg']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:46",
   "cap": "cap-07",
   "capability": "Store and read key-value store records",
   "task": "delete record and store, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE record -> 204, GET record -> 404; DELETE store -> 204, GET store -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-key-value-stores.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:47",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "create queue and add a request",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/request-queues -> 201 id TQTe1E1xtSTk6ZECc; POST requests -> 201 requestId TqFAWIFQdzzjqs5",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:48",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "read queue head",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /head -> 200 ['https://apify.com/']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "11:52",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "mark request handled, read handledRequestCount",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": false,
   "evidence": "PUT requests/TqFAWIFQdzzjqs5 handledAt -> 200; GET queue handledRequestCount 0 pending 0",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "12:14",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "re-read handledRequestCount ~60s after the update",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/request-queues/EecHuk5ieIjkyzaHl -> handledRequestCount 1 (was 0 two seconds after the PUT on trials 1 and 3: the count is eventually consistent)",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "12:15",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "batch-add a request, add it again (dedupe by uniqueKey)",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST requests/batch -> 201; POST same uniqueKey -> 201 wasAlreadyPresent=True",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "12:16",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "delete queue, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE -> 204; GET -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "12:16",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "re-read handledRequestCount ~60s after the update",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/request-queues/xD1ox8rrZLSc19hOh -> handledRequestCount 1 (was 0 two seconds after the PUT on trials 1 and 3: the count is eventually consistent)",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "12:18",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "batch-add a request, add it again (dedupe by uniqueKey)",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST requests/batch -> 201; POST same uniqueKey -> 201 wasAlreadyPresent=True",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "12:19",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "delete queue, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE -> 204; GET -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "12:19",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "re-read handledRequestCount ~60s after the update",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/request-queues/TQTe1E1xtSTk6ZECc -> handledRequestCount 1 (was 0 two seconds after the PUT on trials 1 and 3: the count is eventually consistent)",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "12:21",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "batch-add a request, add it again (dedupe by uniqueKey)",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST requests/batch -> 201; POST same uniqueKey -> 201 wasAlreadyPresent=True",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "12:22",
   "cap": "cap-08",
   "capability": "Manage a request queue for crawling",
   "task": "delete queue, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE -> 204; GET -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/storage-request-queues.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "12:44",
   "cap": "cap-09",
   "capability": "Route requests through Apify Proxy",
   "task": "use Apify Proxy directly from our server (proxy.apify.com:8000) to api.apify.com/v2/browser-info",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "way": "pay_per_call",
   "evidence": "HTTP proxy answered: 'The \"Proxy external access\" feature isn't enabled for your account. Please upgrade your plan or contact support@apify.com' (free plan of the prepaid account)"
  },
  {
   "t": "12:45",
   "cap": "cap-09",
   "capability": "Route requests through Apify Proxy",
   "task": "run cheerio-scraper with proxyConfiguration useApifyProxy",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": false,
   "evidence": "403 {'error': {'type': 'full-permission-actor-not-approved', 'message': 'This Actor requires full access to your account. You must approve its permissions before running it: https://console.apify.com/actors/YrQuEkowkNCLdk4j2?approvePermissions=true', 'data': {'approvalUrl': 'https://console.apify.com/ac",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/proxy.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "13:42",
   "cap": "cap-09",
   "capability": "Route requests through Apify Proxy",
   "task": "run our own Actor that requests api.apify.com/v2/browser-info through Actor.createProxyConfiguration (Apify Proxy, auto group) and once directly",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts/P5PIJmCsMjrwPjU6w/runs {useProxy:true} -> 201 SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/proxy/usage.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "13:42",
   "cap": "cap-09",
   "capability": "Route requests through Apify Proxy",
   "task": "read back: proxied clientIp differs from the run's direct IP",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "dataset items: proxied {'clientIp': '45.170.14.162', 'countryCode': 'US'}, direct {'clientIp': '32.198.79.240'}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/proxy/usage.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "13:43",
   "cap": "cap-09",
   "capability": "Route requests through Apify Proxy",
   "task": "run apify/cheerio-scraper with proxyConfiguration via API",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": false,
   "way": "pay_per_call",
   "evidence": "403 full-permission-actor-not-approved: 'This Actor requires full access to your account. You must approve its permissions before running it: https://console.apify.com/actors/YrQuEkowkNCLdk4j2?approvePermissions=true' (a Console click; the prepaid account has no Console login)",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-runs-post.md"
   }
  },
  {
   "t": "13:43",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "create Actor from source files via API and build it",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts -> 201 P5PIJmCsMjrwPjU6w; POST /v2/acts/P5PIJmCsMjrwPjU6w/builds?version=0.0 -> 201 SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/acts-post.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "13:44",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "read Actor back with tagged build",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/acts/P5PIJmCsMjrwPjU6w -> 200 taggedBuilds ['latest'] versions ['0.0']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/acts-post.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "13:45",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "update title, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT /v2/acts/P5PIJmCsMjrwPjU6w -> 200; title 'AgentDrives test Actor (updated)'",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-put.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "13:47",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "publish to Store (isPublic true), read back",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": false,
   "evidence": "PUT /v2/acts/P5PIJmCsMjrwPjU6w isPublic:true -> 403 {'error': {'type': 'username-required', 'message': 'Actor owner needs to have a public profile in order to publish the Actor.'}}; GET isPublic=False",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/actors/publishing.md",
    "error_legibility": "clear"
   },
   "way": "pay_per_call"
  },
  {
   "t": "14:04",
   "cap": "cap-09",
   "capability": "Route requests through Apify Proxy",
   "task": "run our own Actor that requests api.apify.com/v2/browser-info through Actor.createProxyConfiguration (Apify Proxy, auto group) and once directly",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts/P5PIJmCsMjrwPjU6w/runs {useProxy:true} -> 201 SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/proxy/usage.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "14:04",
   "cap": "cap-09",
   "capability": "Route requests through Apify Proxy",
   "task": "read back: proxied clientIp differs from the run's direct IP",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "dataset items: proxied {'clientIp': '198.23.216.153', 'countryCode': 'US'}, direct {'clientIp': '13.221.200.18'}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/proxy/usage.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "14:09",
   "cap": "cap-09",
   "capability": "Route requests through Apify Proxy",
   "task": "run our own Actor that requests api.apify.com/v2/browser-info through Actor.createProxyConfiguration (Apify Proxy, auto group) and once directly",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts/P5PIJmCsMjrwPjU6w/runs {useProxy:true} -> 201 SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/proxy/usage.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "14:10",
   "cap": "cap-09",
   "capability": "Route requests through Apify Proxy",
   "task": "read back: proxied clientIp differs from the run's direct IP",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "dataset items: proxied {'clientIp': '23.108.4.42', 'countryCode': 'US'}, direct {'clientIp': '3.235.20.108'}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/proxy/usage.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "14:13",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "use: run our own built Actor synchronously and get its items",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts/P5PIJmCsMjrwPjU6w/run-sync-get-dataset-items -> 201 [{'note': 'trial 1'}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-run-sync-get-dataset-items-post.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "14:13",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "publish to the public Store",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "notes": "not pursued: a public Store listing is a public place (our rules); the first try answered 403 username-required (owner needs a public profile)",
   "way": "pay_per_call"
  },
  {
   "t": "14:15",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "delete Actor, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE /v2/acts/P5PIJmCsMjrwPjU6w -> 204; GET -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-delete.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "14:23",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "create Actor from source files via API and build it",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts -> 201 JpK7OImf9m05CgaOI; POST builds -> 201 SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/acts-post.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "14:23",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "read Actor back with tagged build",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/acts/JpK7OImf9m05CgaOI -> 200 taggedBuilds ['latest'] versions ['0.0']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/acts-post.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "14:25",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "update title, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT /v2/acts/JpK7OImf9m05CgaOI -> 200; title 'AgentDrives test Actor (updated)'",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-put.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "14:26",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "publish to Store (isPublic true), read back",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": false,
   "evidence": "PUT /v2/acts/JpK7OImf9m05CgaOI isPublic:true -> 403 {'error': {'type': 'username-required', 'message': 'Actor owner needs to have a public profile in order to publish the Actor.'}}; GET isPublic=False",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/actors/publishing.md",
    "error_legibility": "clear"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "14:31",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "use: run our own built Actor synchronously and get its items",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts/JpK7OImf9m05CgaOI/run-sync-get-dataset-items -> 201 [{'note': 'trial 2'}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-run-sync-get-dataset-items-post.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "14:31",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "publish to the public Store",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "notes": "not pursued: a public Store listing is a public place (our rules); the first try answered 403 username-required (owner needs a public profile)",
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "14:32",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "delete Actor, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE /v2/acts/JpK7OImf9m05CgaOI -> 204; GET -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-delete.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "14:38",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "create Actor from source files via API and build it",
   "step": "create",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts -> 201 ndO6W3srxtVg0k8aw; POST builds -> 201 SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/acts-post.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "14:39",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "read Actor back with tagged build",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/acts/ndO6W3srxtVg0k8aw -> 200 taggedBuilds ['latest'] versions ['0.0']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/acts-post.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "14:40",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "update title, read back",
   "step": "update",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "PUT /v2/acts/ndO6W3srxtVg0k8aw -> 200; title 'AgentDrives test Actor (updated)'",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-put.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "14:42",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "publish to Store (isPublic true), read back",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": false,
   "evidence": "PUT /v2/acts/ndO6W3srxtVg0k8aw isPublic:true -> 403 {'error': {'type': 'username-required', 'message': 'Actor owner needs to have a public profile in order to publish the Actor.'}}; GET isPublic=False",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/actors/publishing.md",
    "error_legibility": "clear"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "14:44",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "use: run our own built Actor synchronously and get its items",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v2/acts/ndO6W3srxtVg0k8aw/run-sync-get-dataset-items -> 201 [{'note': 'trial 3'}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-run-sync-get-dataset-items-post.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "14:44",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "publish to the public Store",
   "step": "use",
   "route": "api",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "notes": "not pursued: a public Store listing is a public place (our rules); the first try answered 403 username-required (owner needs a public profile)",
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "14:46",
   "cap": "cap-03",
   "capability": "Build and publish your own Actor",
   "task": "delete Actor, read back",
   "step": "delete",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DELETE /v2/acts/ndO6W3srxtVg0k8aw -> 204; GET -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/act-delete.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "15:06",
   "cap": "verify",
   "way": "pay_per_call",
   "capability": "verify email",
   "task": "no email step on the main way",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "notes": "n/a: the prepaid x402 route makes the account with no email; the GitHub sign-up also needed no email verification"
  },
  {
   "t": "15:16",
   "cap": "cap-02",
   "capability": "Discover/search Actors in the Store",
   "task": "search Store",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/store?search=google%20maps -> 200 ['compass/crawler-google-places', 'compass/Google-Maps-Reviews-Scraper', 'lukaskrivka/google-maps-with-contact-details']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/store-get.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "15:17",
   "cap": "cap-02",
   "capability": "Discover/search Actors in the Store",
   "task": "search Store",
   "step": "read",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/store?search=instagram -> 200 ['apify/instagram-scraper', 'apify/instagram-post-scraper', 'apify/instagram-reel-scraper']",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/store-get.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "15:18",
   "kind": "claim",
   "cap": "cap-02",
   "surface": "mcp",
   "claim": "search-actors",
   "doc_url": "https://docs.apify.com/integrations/mcp.md",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "tools/call search-actors -> 200, lists apify/hello-world",
   "capability": "Docs claim: Discover/search Actors in the Store",
   "task": "search-actors",
   "route": "mcp",
   "evidence": "tools/call search-actors -> 200, lists apify/hello-world"
  },
  {
   "t": "15:18",
   "kind": "claim",
   "cap": "cap-02",
   "surface": "api",
   "claim": "GET /v2/store?search=",
   "doc_url": "https://docs.apify.com/api/v2/store-get.md",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "200 with items, no token needed",
   "capability": "Docs claim: Discover/search Actors in the Store",
   "task": "GET /v2/store?search=",
   "route": "api",
   "evidence": "200 with items, no token needed"
  },
  {
   "t": "15:43",
   "kind": "claim",
   "cap": "cap-01",
   "surface": "mcp",
   "claim": "call-actor",
   "doc_url": "https://docs.apify.com/integrations/mcp.md",
   "result": "done",
   "verified": false,
   "documented": true,
   "notes": "tools/call call-actor apify/hello-world -> 200, run usage in _meta, dataset None",
   "capability": "Docs claim: Run an Actor from the Store",
   "task": "call-actor",
   "route": "mcp",
   "evidence": "tools/call call-actor apify/hello-world -> 200, run usage in _meta, dataset None"
  },
  {
   "t": "15:43",
   "kind": "claim",
   "cap": "cap-01",
   "surface": "api",
   "claim": "POST /v2/actors/{actorId}/runs",
   "doc_url": "https://docs.apify.com/api/v2",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "see the cap's chain lines (/v2/acts works; /v2/actors alias too)",
   "capability": "Docs claim: Run an Actor from the Store",
   "task": "POST /v2/actors/{actorId}/runs",
   "route": "api",
   "evidence": "see the cap's chain lines (/v2/acts works; /v2/actors alias too)"
  },
  {
   "t": "15:43",
   "kind": "claim",
   "cap": "cap-03",
   "surface": "api",
   "claim": "POST /v2/acts and /v2/acts/{actorId}/versions",
   "doc_url": "https://docs.apify.com/api/v2",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "see the cap's chain lines",
   "capability": "Docs claim: Build and publish your own Actor",
   "task": "POST /v2/acts and /v2/acts/{actorId}/versions",
   "route": "api",
   "evidence": "see the cap's chain lines"
  },
  {
   "t": "15:43",
   "kind": "claim",
   "cap": "cap-06",
   "surface": "api",
   "claim": "GET /v2/datasets/{datasetId}/items",
   "doc_url": "https://docs.apify.com/api/v2",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "see the cap's chain lines",
   "capability": "Docs claim: Retrieve dataset results from an Actor run",
   "task": "GET /v2/datasets/{datasetId}/items",
   "route": "api",
   "evidence": "see the cap's chain lines"
  },
  {
   "t": "15:43",
   "kind": "claim",
   "cap": "cap-07",
   "surface": "api",
   "claim": "GET/PUT /v2/key-value-stores/{id}/records/{key}",
   "doc_url": "https://docs.apify.com/api/v2",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "see the cap's chain lines",
   "capability": "Docs claim: Store and read key-value store records (JSON, HTML, images, strings)",
   "task": "GET/PUT /v2/key-value-stores/{id}/records/{key}",
   "route": "api",
   "evidence": "see the cap's chain lines"
  },
  {
   "t": "15:43",
   "kind": "claim",
   "cap": "cap-08",
   "surface": "api",
   "claim": "POST/GET /v2/request-queues/{id}/requests",
   "doc_url": "https://docs.apify.com/api/v2",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "see the cap's chain lines",
   "capability": "Docs claim: Manage a request queue for crawling",
   "task": "POST/GET /v2/request-queues/{id}/requests",
   "route": "api",
   "evidence": "see the cap's chain lines"
  },
  {
   "t": "15:43",
   "kind": "claim",
   "cap": "cap-09",
   "surface": "api",
   "claim": "proxyConfiguration input field on Actor runs",
   "doc_url": "https://docs.apify.com/api/v2",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "see the cap's chain lines (proxy used from our own Actor; cheerio-scraper's proxyConfiguration needed a Console permission approval first)",
   "capability": "Docs claim: Route requests through residential/datacenter/SERP proxy or anti-blocking Unblocker",
   "task": "proxyConfiguration input field on Actor runs",
   "route": "api",
   "evidence": "see the cap's chain lines (proxy used from our own Actor; cheerio-scraper's proxyConfiguration needed a Console permission approval first)"
  },
  {
   "t": "16:10",
   "kind": "claim",
   "cap": "cap-06",
   "surface": "mcp",
   "claim": "get-dataset-items",
   "doc_url": "https://docs.apify.com/integrations/mcp.md",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "tools/call get-dataset-items zxZWkwJtfB3SKoH6V -> 200, item 'Hello world!'",
   "capability": "Docs claim: Retrieve dataset results from an Actor run",
   "task": "get-dataset-items",
   "route": "mcp",
   "evidence": "tools/call get-dataset-items zxZWkwJtfB3SKoH6V -> 200, item 'Hello world!'"
  },
  {
   "t": "16:59",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "apify create ad-local -t js-start, then apify run locally",
   "step": "create",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "create: 'Actor ad-local created successfully'; apify run --purge: ran locally, 'Extracted heading' lines, storage/datasets/default has items (template default input is https://www.apify.com/, the product's own page)",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "17:36",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "read back pushed version and build",
   "step": "read",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET /v2/acts/HGYA0254e9M2MeN1A/versions -> 200 ['0.0']; latest build SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "17:55",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "edit src/main.js, apify push again, read builds back",
   "step": "update",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify push rc 0; GET builds total 2, latest SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "18:02",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "use: apify call the deployed Actor (on apify.com/pricing), check the new code ran",
   "step": "use",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify call rc 0; last run 47NHqYfxMjrOvcQoS SUCCEEDED; KVS AD_MARK -> 200 {'trial': 1}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "23:44",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "delete the Actor, read back",
   "step": "delete",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify actors rm HGYA0254e9M2MeN1A --yes: first try hung >300 s with stdin open (killed); retry with stdin closed: rc 0 'Success: Actor with ID \"HGYA0254e9M2MeN1A\" was deleted.'; GET /v2/acts/HGYA0254e9M2MeN1A -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call"
  },
  {
   "t": "24:23",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "apify run locally, then apify push (new Actor)",
   "step": "create",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify run rc 0; apify push rc 0 actor CtoCVJv6d3nQd4DGl",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "24:25",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "read back pushed version and build",
   "step": "read",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET versions -> 200; latest build SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "24:50",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "edit src/main.js, apify push again, read builds back",
   "step": "update",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify push rc 0; builds total 2, latest SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "24:56",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "use: apify call the deployed Actor, check the new code ran",
   "step": "use",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify call rc 0; run 3Y8sHfctbNmE7dELc SUCCEEDED; AD_MARK {'trial': 2}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "25:00",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "apify actors rm, read back",
   "step": "delete",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify actors rm --yes (stdin closed) rc 0; GET /v2/acts/CtoCVJv6d3nQd4DGl -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call",
   "trial": 2
  },
  {
   "t": "25:20",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "apify run locally, then apify push (new Actor)",
   "step": "create",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify run rc 0; apify push rc 0 actor 37nq9f6tqgNGpZcTj",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "25:22",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "read back pushed version and build",
   "step": "read",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET versions -> 200; latest build SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "25:41",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "edit src/main.js, apify push again, read builds back",
   "step": "update",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify push rc 0; builds total 2, latest SUCCEEDED",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "25:48",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "use: apify call the deployed Actor, check the new code ran",
   "step": "use",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify call rc 0; run BMJLzIm2Epu3efFdG SUCCEEDED; AD_MARK {'trial': 3}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "25:52",
   "cap": "cap-04",
   "capability": "Develop and test Actor locally then deploy",
   "task": "apify actors rm, read back",
   "step": "delete",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "apify actors rm --yes (stdin closed) rc 0; GET /v2/acts/37nq9f6tqgNGpZcTj -> 404",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs.md"
   },
   "way": "pay_per_call",
   "trial": 3
  },
  {
   "t": "26:54",
   "kind": "claim",
   "cap": "cap-01",
   "surface": "cli",
   "claim": "apify call",
   "doc_url": "https://docs.apify.com/cli/docs/reference.md",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "apify call apify/hello-world -o -> rc 0, Output {'message':'Hello world!'}",
   "way": "pay_per_call",
   "capability": "Docs claim: Run an Actor from the Store",
   "task": "apify call",
   "route": "cli",
   "evidence": "apify call apify/hello-world -o -> rc 0, Output {'message':'Hello world!'}"
  },
  {
   "t": "26:54",
   "kind": "claim",
   "cap": "cap-02",
   "surface": "cli",
   "claim": "apify api --list-endpoints / apify store",
   "doc_url": "https://docs.apify.com/cli/docs/reference.md",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "apify actors search \"hello world\" -> rc 0 table of Store Actors; 'apify store' is not a command (rc 1)",
   "way": "pay_per_call",
   "capability": "Docs claim: Discover/search Actors in the Store",
   "task": "apify api --list-endpoints / apify store",
   "route": "cli",
   "evidence": "apify actors search \"hello world\" -> rc 0 table of Store Actors; 'apify store' is not a command (rc 1)"
  },
  {
   "t": "26:54",
   "kind": "claim",
   "cap": "cap-03",
   "surface": "cli",
   "claim": "apify create / apify push / apify publish",
   "doc_url": "https://docs.apify.com/cli/docs/reference.md",
   "result": "partial",
   "verified": false,
   "documented": true,
   "notes": "create and push work (lines); no `apify publish` command for Actors in apify help (CLI 1.10.0; only `task` mentions publish): publishing is a Console/API step",
   "way": "pay_per_call",
   "capability": "Docs claim: Build and publish your own Actor",
   "task": "apify create / apify push / apify publish",
   "route": "cli",
   "evidence": "create and push work (lines); no `apify publish` command for Actors in apify help (CLI 1.10.0; only `task` mentions publish): publishing is a Console/API step"
  },
  {
   "t": "26:54",
   "kind": "claim",
   "cap": "cap-04",
   "surface": "cli",
   "claim": "apify run / apify push",
   "doc_url": "https://docs.apify.com/cli/docs/reference.md",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "apify create, run, push, call, actors rm all worked (chain)",
   "way": "pay_per_call",
   "capability": "Docs claim: Develop and test Actor locally then deploy",
   "task": "apify run / apify push",
   "route": "cli",
   "evidence": "apify create, run, push, call, actors rm all worked (chain)"
  },
  {
   "t": "26:54",
   "kind": "claim",
   "cap": "cap-06",
   "surface": "cli",
   "claim": "apify datasets get-items",
   "doc_url": "https://docs.apify.com/cli/docs/reference.md",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "datasets create/push-items/get-items/rm -> rc 0, items [{'a':1}]",
   "way": "pay_per_call",
   "capability": "Docs claim: Retrieve dataset results from an Actor run",
   "task": "apify datasets get-items",
   "route": "cli",
   "evidence": "datasets create/push-items/get-items/rm -> rc 0, items [{'a':1}]"
  },
  {
   "t": "26:54",
   "kind": "claim",
   "cap": "cap-07",
   "surface": "cli",
   "claim": "apify kvs",
   "doc_url": "https://docs.apify.com/cli/docs/reference.md",
   "result": "done",
   "verified": true,
   "documented": true,
   "notes": "key-value-stores create/set-value/get-value/rm -> rc 0, value {'x':1}",
   "way": "pay_per_call",
   "capability": "Docs claim: Store and read key-value store records (JSON, HTML, images, strings)",
   "task": "apify kvs",
   "route": "cli",
   "evidence": "key-value-stores create/set-value/get-value/rm -> rc 0, value {'x':1}"
  },
  {
   "t": "26:54",
   "cap": "cap-22",
   "capability": "Make raw authenticated API calls from the terminal",
   "task": "apify api GET v2/users/me",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "apify api GET v2/users/me -> rc 0, account JSON for prepaid-account-Gw3QqnfvXhkf",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs/reference.md"
   }
  },
  {
   "t": "27:13",
   "cap": "cap-11",
   "capability": "Save a configured Actor run as a reusable task",
   "task": "create task for apify/hello-world, run it",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "POST /v2/actor-tasks -> 201 VlxYE2ncU8bih9xJN; POST /v2/actor-tasks/VlxYE2ncU8bih9xJN/runs -> 201 SUCCEEDED; items [{'message': 'Hello world!'}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/actor-tasks-post.md"
   }
  },
  {
   "t": "27:15",
   "cap": "cap-10",
   "capability": "Schedule recurring Actor/task runs via cron",
   "task": "create a daily cron schedule running the task, read back",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "POST /v2/schedules -> 201 U6eYheK2jtFPdmmRE; GET isEnabled True nextRunAt 2026-10-17T03:00:00.000Z",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/schedules-post.md"
   }
  },
  {
   "t": "28:02",
   "cap": "cap-12",
   "capability": "Register webhooks on Actor/run lifecycle events",
   "task": "webhook on ACTOR.RUN.SUCCEEDED of our task, calling our own Actor-run endpoint; run the task; read dispatches",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "POST /v2/webhooks -> 201 9Drt1uIuVFtPqwGUq; task run 201; GET /v2/webhooks/9Drt1uIuVFtPqwGUq/dispatches -> 200 [('SUCCEEDED', 201)]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/webhooks-post.md"
   }
  },
  {
   "t": "28:11",
   "cap": "cap-14",
   "capability": "Abort, resurrect, or reboot an Actor run",
   "task": "start hello-world, abort, read back, resurrect",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "POST abort -> 200; GET status ABORTED; POST resurrect -> 200 status READY",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/actor-run-abort-post.md"
   }
  },
  {
   "t": "28:19",
   "cap": "cap-15",
   "capability": "View and download Actor build/run logs",
   "task": "GET run log",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "GET /v2/actor-our records -> 200, 563 chars, first line '2026-10-16T05:41:59.637Z ACTOR: Pulling container image of build FJcN16ufvqeFJC1pc from registry.'",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/log-get.md"
   }
  },
  {
   "t": "28:45",
   "cap": "cap-27",
   "capability": "Share a run/build/storage by direct link without granting account access",
   "task": "set dataset generalAccess ANYONE_WITH_ID_CAN_READ, read it with no token",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "unauth GET before -> 403; PUT /v2/datasets/E16rDlHYE7UvpkYJs generalAccess -> 200; unauth GET items after -> 200 [{'shared': True}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/collaboration/general-resource-access.md"
   }
  },
  {
   "t": "28:47",
   "cap": "cap-29",
   "capability": "Rename a storage to make it permanently retained",
   "task": "create unnamed KVS, rename it, read back",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "POST /v2/key-value-stores -> 201 name None; PUT name -> 200; GET name ad-kept-store",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/storage/usage.md"
   }
  },
  {
   "t": "28:50",
   "cap": "cap-30",
   "capability": "Delete a storage",
   "task": "delete the KVS and dataset, read back",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "DELETE KVS -> 204, DELETE dataset -> 204; GET -> 404, 404 {'error': {'type': 'record-not-found', 'message': 'Dataset was not found'}}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/dataset-delete.md"
   }
  },
  {
   "t": "28:51",
   "cap": "cap-31",
   "capability": "View usage, billing, and upgrade/downgrade subscription plan",
   "task": "read monthly usage and limits; plan change has no API",
   "route": "api",
   "documented": true,
   "result": "partial",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "GET /v2/users/me/usage/monthly -> 200 totalUsageCreditsUsdAfterVolumeDiscount 0.02934888624895447; GET /v2/users/me/limits -> 200 maxMonthlyUsageUsd 1; plan upgrade/downgrade only in Console > Billing (no API in docs)",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/users-me-usage-monthly-get.md"
   }
  },
  {
   "t": "28:52",
   "cap": "cap-25",
   "capability": "Query Apify docs from an AI assistant",
   "task": "MCP fetch-apify-docs on docs.apify.com/platform/storage (anonymous)",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "keyless",
   "evidence": "tools/call fetch-apify-docs -> 200 {\"result\": {\"content\": [{\"type\": \"text\", \"text\": \"Fetched content from https://docs.apify.com/platform/storage:\\n\\n---\\ntitle: Storage\\nurl: https://d",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/integrations/mcp.md"
   }
  },
  {
   "t": "28:53",
   "cap": "cap-24",
   "capability": "Sign and verify data objects via API tools endpoint",
   "task": "encode-and-sign then decode-and-verify",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "POST /v2/tools/encode-and-sign -> 200 {'data': {'encoded': '[redacted]; decode-and-verify -> 200 {'data': {'decoded': {'hello': 'world'}, 'encodedByUserId': 'Gw3QqnfvXhkfzzdUG', 'isVerifiedUser': False}}",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/api/v2/tools.md"
   }
  },
  {
   "t": "29:04",
   "cap": "cap-19",
   "capability": "Pay for Actor runs without an account via agentic payments (x402/MPP)",
   "task": "x402 v2 payment at agi.apify.com mints a spend-capped token; run Actors with it",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "pay_tx.json: POST agi.apify.com/protocols/x402/prepaid-tokens?amount=1 -> 201 token, tx 0x9b7549c3…59e6 confirmed on Base (block 52668790), $1 USDC; token ran apify/hello-world and every chain in this drive; GET agi.apify.com/prepaid-tokens/balance -> 200 remainingBalanceUsd 0.975",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://agi.apify.com/AGENTS.md"
   }
  },
  {
   "t": "29:47",
   "cap": "cap-23",
   "capability": "Define and use secrets in Actor environment variables",
   "task": "apify secrets add, reference @adSecret in actor.json, push, run, check the value inside the run",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "secrets add rc 0, secrets ls lists adSecret; push rc 0; call rc 0; SECRET_OK record {'ok': True}; GET env-vars -> 200 [('MY_SECRET', True)]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/cli/docs/reference.md"
   }
  },
  {
   "t": "31:24",
   "cap": "signup",
   "way": "oauth_consent",
   "capability": "MCP OAuth sign-in",
   "task": "DCR client + authorization code with PKCE S256 + resource=https://mcp.apify.com, consent in our Console session, token used on mcp.apify.com",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "AS metadata: client_id_metadata_document_supported true (CIMD), registration_endpoint (DCR), S256, no revocation_endpoint. POST /oauth/apps 201; consent page 'Allow access' (scope full_api_access only); redirect carried code, state, iss=https://console-backend.apify.com (RFC 9207); token 200; MCP tools/list 200 (12 tools); call-actor hello-world 200. DCR used: we host no CIMD document."
  },
  {
   "t": "34:19",
   "cap": "cap-05",
   "capability": "Monetize a Paid Actor",
   "task": "Console > Actor > Publishing > Monetization on our own built Actor (GitHub account)",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "way": "sso_github",
   "evidence": "Publishing tab: 'You need a public account to publish Actors.' (Set up public profile); Monetization: 'Billing details and payment method not set. Enter your billing details and payment method setup here to set up monetization for all your paid Actors.' Set up monetization asks for billing details and a payout method",
   "notes": "stopped: payout needs billing details (a postal address, a payout account) our agent does not have, and a paid Actor must be listed publicly on the Store, a public place our rules keep us out of; no API/CLI route for monetization in the docs"
  },
  {
   "t": "35:22",
   "cap": "cap-13",
   "capability": "Keep an Actor running as a real-time API (Standby mode)",
   "task": "enable actorStandby on our own Actor via PUT /v2/acts, call its standby URL",
   "route": "api",
   "documented": true,
   "result": "partial",
   "verified": true,
   "way": "sso_github",
   "evidence": "PUT /v2/acts/nUA5ECKgpSshjZHQN actorStandby.isEnabled -> 200; GET shows actorStandby isEnabled true, standbyUrl https://agentdrives-test-011--ad-monetize.apify.actor; GET standby URL -> None",
   "notes": "our test Actor serves no HTTP, so the standby call proves the switch, not a served response",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match",
    "docs_url": "https://docs.apify.com/platform/actors/development/programming-interface/standby.md"
   }
  },
  {
   "t": "36:26",
   "cap": "cap-18",
   "capability": "Chat with Apify AI inside Console",
   "task": "ask Apify AI in Console to find a hello-world Actor",
   "route": "browser",
   "documented": true,
   "result": "partial",
   "verified": true,
   "way": "sso_github",
   "evidence": "console.apify.com/chat: 'Which Actor says hello world? Find it for me' -> used 'Search Actors', answered 'Hello World Example (apify/hello-world), published by Apify…' (shots/024.png); launching a run from the chat not tried for time"
  },
  {
   "t": "37:51",
   "cap": "pay",
   "step": "checkout",
   "way": "sso_github",
   "capability": "walk to the last click",
   "task": "Billing > Subscription > Upgrade > Starter 'Choose plan' (monthly $19.00) -> wizard Plan, Add-ons, Billing details, Payment, Review",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Wizard at console.apify.com/billing/subscription?openSubscriptionWizard=1 reached Billing details (shots/027.png): Full name prefilled, Street address, City, Postal code required, Country preset Germany; summary 'Starter plan (monthly) $19.00', annual toggle; no CAPTCHA, no phone field",
   "notes": "stopped at Billing details: a postal address our agent does not have (ours: no address/card). Payment step and processor not seen."
  },
  {
   "t": "37:51",
   "cap": "pay",
   "capability": "pay probes",
   "task": "402 / registries / billing API",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "pay_per_call",
   "evidence": "pay_probe.json: x402 v2 402 at agi.apify.com/protocols/x402/prepaid-tokens (Base, Solana), mpp.dev lists Apify first-party, llms.txt and auth.md document x402/MPP prepaid tokens; pay_tx.json: $1 paid, tx 0x9b7549c3…59e6 confirmed, 201 token entitled. No billing/plan API in docs (plan change Console only); free plan without card ('no credit card required', llms.txt)"
  },
  {
   "t": "37:51",
   "cap": "cancel",
   "capability": "cancel",
   "task": "nothing recurring started",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "way": "pay_per_call",
   "notes": "n/a: free plan and a one-off x402 prepaid token; llms.txt: 'the free plan renews $5 of usage credit every month… There is nothing to cancel.' AGI: prepaid account deleted after its TTL (14 days)"
  },
  {
   "t": "37:51",
   "cap": "cap-16",
   "capability": "Set up monitoring alerts",
   "task": "Console > Actor > Monitoring on the free plan",
   "route": "browser",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "way": "sso_github",
   "evidence": "capability map marks it paid (docs.apify.com/actors/running/monitoring.md); not opened for time"
  },
  {
   "t": "37:51",
   "cap": "cap-21",
   "capability": "Call third-party MCP servers from an Actor via MCP connectors",
   "task": "checked against the docs",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "way": "sso_github",
   "evidence": "documented at docs.apify.com/integrations/mcp-connectors.md (per map); needs an account at the third party (Notion/Slack) that we do not have: not tried"
  },
  {
   "t": "37:51",
   "cap": "cap-26",
   "capability": "Grant other users access rights",
   "task": "checked against the docs",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "way": "sso_github",
   "evidence": "documented at docs.apify.com/account/collaboration/access-rights.md; Console-only share dialog; not tried for time"
  },
  {
   "t": "37:51",
   "cap": "cap-28",
   "capability": "Organization account",
   "task": "checked against the docs",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "way": "sso_github",
   "evidence": "documented (docs.apify.com/account/collaboration/organization.md); map marks paid"
  },
  {
   "t": "37:51",
   "cap": "cap-32",
   "capability": "Discounts for startups/universities/nonprofits",
   "task": "checked against the docs",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "way": "sso_github",
   "evidence": "application forms at apify.com/resources/startups|universities|nonprofits (llms.txt lists them: 30% Scale for startups, 50% for students); applying needs a real organisation: not tried (policy)"
  },
  {
   "t": "37:51",
   "cap": "cap-33",
   "capability": "Purchase add-ons",
   "task": "checked against the docs",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "way": "sso_github",
   "evidence": "Add-ons step seen in the subscription wizard (Plan, Add-ons, Billing details, Payment, Review); buying needs a paid plan"
  },
  {
   "t": "37:51",
   "cap": "signup",
   "way": "claimable",
   "capability": "claimable",
   "task": "none offered",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "not_tried": "same_as",
   "notes": "llms.txt 'No account is needed to explore' is the keyless Store/MCP route, not a claimable resource; auth.md: no agent registration or claim"
  },
  {
   "t": "37:51",
   "cap": "signup",
   "way": "api_signup",
   "capability": "way in",
   "task": "Sign-up by API",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "not_tried": "policy",
   "notes": "auth.md: 'You cannot register an Apify account by calling an API.' (not offered)"
  },
  {
   "t": "37:51",
   "cap": "signup",
   "way": "authmd",
   "capability": "way in",
   "task": "Registration through auth.md",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "not_tried": "policy",
   "notes": "auth.md: 'Apify does not implement the auth.md registration flows'; no agent_auth block (not offered)"
  },
  {
   "t": "37:51",
   "cap": "signup",
   "way": "sso_agent",
   "capability": "way in",
   "task": "Sign in with AgentID",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "not_tried": "policy",
   "notes": "no Sign in with AgentID offered on console.apify.com/sign-up"
  },
  {
   "t": "37:51",
   "cap": "signup",
   "way": "sso_google",
   "capability": "way in",
   "task": "Continue with Google",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "not_tried": "idp_blocked",
   "notes": "Continue with Google offered on the sign-up page; Google blocks automated sign-in for our agent: not tried"
  },
  {
   "t": "37:51",
   "cap": "signup",
   "way": "stripe_projects",
   "capability": "way in",
   "task": "Stripe Projects",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "not_tried": "no_kit",
   "notes": "not in the Stripe Projects catalog per pay_probe; our agent has no Stripe Projects kit"
  },
  {
   "t": "39:41",
   "cap": "cap-26",
   "capability": "Grant other users access rights",
   "task": "Console Share dialog on our GitHub account's dataset: add our prepaid account (user ID) with Read; read it with the prepaid token",
   "route": "browser",
   "documented": true,
   "result": "partial",
   "verified": false,
   "way": "sso_github",
   "evidence": "Share dataset -> 'Users or organizations with access: prepaid-account-Gw3QqnfvXhkf Read' (shots/030.png); GET /v2/datasets/KoMb0GwEvjdVkWEWr/items with the grantee's token -> 403 insufficient-permissions before and 20 s after",
   "notes": "grant shown in the UI but not effective for the grantee's prepaid token in our check; cause unknown (a prepaid token's scope, or propagation)"
  },
  {
   "t": "40:38",
   "cap": "credentials",
   "way": "device_login",
   "capability": "credential",
   "task": "use the device-flow token",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "key": "use",
   "evidence": "device-flow token: GET /v2/users/me 200, created Actor ad-monetize, enabled standby, made dataset ad-share-g",
   "quality": {
    "docs_match": "match",
    "docs_url": "https://apify.com/auth.md"
   }
  },
  {
   "t": "40:38",
   "cap": "credentials",
   "way": "device_login",
   "capability": "credential",
   "task": "revoke the device-flow and MCP OAuth grants",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "key": "revoke",
   "evidence": "no revocation_endpoint (auth.md: 'There is no agent-callable revocation endpoint'); Console > Settings > API & Integrations > Revoke access on 'AgentDrives drive' and 'AgentDrives MCP check' -> 'No connected third-party apps'; GET /v2/users/me with the device token -> 401 user-or-token-not-found; MCP tools/list with the OAuth token -> 401 invalid_token",
   "notes": "revoke is browser-only; scoped keys: the API has no token-creation endpoint and OAuth offers only full_api_access"
  },
  {
   "t": "42:19",
   "cap": "delete",
   "way": "sso_github",
   "capability": "delete account",
   "task": "Console > Settings > Account > Danger zone > Delete account (type username to confirm)",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "left": "deleted",
   "evidence": "dialog 'All Actors, Actor tasks, schedules, results, etc. will be also deleted'; typed agentdrives-test-011, 'I understand, delete account' -> redirected to /sign-up; console.apify.com/settings/account now -> /sign-in; its Actor nUA5ECKgpSshjZHQN -> 404; both OAuth tokens 401 before (revoked)",
   "notes": "browser only: no account-deletion endpoint in the API docs"
  },
  {
   "t": "45:28",
   "cap": "cap-26",
   "capability": "Grant other users access rights",
   "task": "re-read the shared dataset with the grantee's (prepaid) token",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "way": "sso_github",
   "evidence": "~5 min after the grant: GET /v2/datasets?unnamed=false (prepaid token) lists ad-share-g owned by userId idF3Nf7SWnsMZN0Rs; GET its items -> 200 [{'shared':'with prepaid'}]. The grant took minutes to apply (403 at +20 s)",
   "quality": {
    "verify_route": "yes",
    "docs_match": "drift",
    "docs_url": "https://docs.apify.com/platform/collaboration/access-rights.md"
   }
  },
  {
   "t": "45:28",
   "cap": "delete",
   "way": "sso_github",
   "capability": "",
   "task": "check the shared dataset of the deleted account",
   "route": "api",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "after the GitHub account was deleted (redirect to /sign-in), its shared dataset KoMb0GwEvjdVkWEWr is still listed and readable by our prepaid account: GET items 200; DELETE with the grantee's read token -> 403",
   "notes": "deletion of data may be asynchronous; a grantee could still read it minutes after the owner's account was deleted"
  },
  {
   "t": "45:28",
   "cap": "delete",
   "way": "pay_per_call",
   "capability": "delete account",
   "task": "delete the prepaid account",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "left": "expires",
   "after_hours": 336,
   "evidence": "DELETE /v2/users/me -> 405 method-not-allowed (OPTIONS,GET only); the prepaid account has no Console login; everything it made was deleted by API (acts, tasks, schedules, webhooks, named storages lists empty)",
   "notes": "agi.apify.com/AGENTS.md: 'Temporary tokens: the account is deleted after its TTL (currently 14 days).' Token expiresAt 2026-10-30T05:02:05Z"
  }
 ],
 "stale": false,
 "icon": "/logos/apify.png",
 "monitored": false,
 "verdict": null,
 "page": "https://agentdrives.com/tools/apify?via=api"
}