{
 "slug": "baserow",
 "name": "Baserow",
 "url": "https://baserow.io",
 "domain": "baserow.io",
 "category": "databases",
 "category_name": "Databases",
 "tested_at": "2026-10-06",
 "run": "20261006T060504Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261002T054034Z",
   "date": "2026-10-02",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": null,
    "driver": null,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  },
  {
   "run": "20261006T060504Z",
   "date": "2026-10-06",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  }
 ],
 "level": 1,
 "level_name": "Needs a person",
 "level_selfhost": null,
 "entry": "closed",
 "door": {
  "passed": 0,
  "tries": 2,
  "self_start": false
 },
 "badges": [],
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "no",
   "text": "Can't get in on its own",
   "at": "signup"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "card_checkout"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "yes",
   "text": "Docs agents can read: llms.txt, an OpenAPI and an MCP server",
   "have": [
    "llms_txt",
    "openapi",
    "mcp"
   ]
  },
  {
   "key": "access",
   "label": "Access",
   "state": "no",
   "text": "Can't get in on its own",
   "at": "signup",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "card_checkout",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account",
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "person",
   "label": "A person sets it up",
   "routes": [],
   "minutes": null,
   "core": null
  }
 ],
 "minutes": null,
 "next": {
  "to": 2,
  "text": "Next: let an agent sign up on its own"
 },
 "stop": "signup",
 "core": "0/10",
 "scores": {
  "coverage": null,
  "reliability": null,
  "resilience": null,
  "setup": 90,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 90,
  "security": null,
  "standards": [
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 2,
    "value": "3.0.3"
   }
  ]
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": null,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 2,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": null,
  "prompt_sha": "f3d0adeeb256",
  "kb_version": "2+overlay-9e43028a2c",
  "identity": null
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 2,
  "signed": true,
  "inbox": [
   "agentdrives.com"
  ],
  "robots": "start"
 },
 "same_level_drives": 2,
 "drives": 2,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": {
  "rung": "signup",
  "vendor": "Cloudflare Turnstile",
  "visible": true,
  "type": "network",
  "human": null,
  "how": "Let verified bots and signed agents past the check on sign-up: in Cloudflare, add a WAF custom rule that skips the bot challenge on your sign-up paths for verified bots and for signed agents (rule field cf.bot_management.signed_agent; since 1 July 2026 signed agents count as verified bots), and render Turnstile only when the request is not from a verified agent.",
  "signed": true
 },
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "form"
  },
  "signed": {
   "state": "page",
   "kind": "signup",
   "at": "2026-10-12"
  },
  "browser": {
   "state": "through",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "User docs, ReDoc API reference, OpenAPI 3.0.3 (424 operations) and llms.txt all fetched headless."
  },
  "signup": {
   "status": "human",
   "note": "POST /api/user/ (documented) answers 400 ERROR_CAPTCHA_VERIFICATION_FAILED without a Cloudflare Turnstile token; the web form shows a visible Turnstile 'Verify you are human' widget."
  },
  "verify": {
   "status": "",
   "note": "No account: sign-up needs a Cloudflare Turnstile token.",
   "reached": false
  },
  "credentials": {
   "status": "",
   "note": "Documented routes exist (POST /api/database/tokens/, POST /api/mcp/endpoints/) but need a JWT from an account. No account: sign-up needs a Cloudflare Turnstile token.",
   "via": "",
   "reached": false
  },
  "first_call": {
   "status": "",
   "note": "Unauthenticated calls answer 401 WWW-Authenticate: JWT realm=\"api\". No account: sign-up needs a Cloudflare Turnstile token.",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "No account: sign-up needs a Cloudflare Turnstile token.",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [
    "card (web checkout under Subscriptions, card only)"
   ],
   "rail_ids": [
    "card"
   ],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "free tier",
   "note": "No 402, no x402/MPP/L402/UCP, not in x402 Bazaar or mpp.dev, no billing API in the OpenAPI. Pricing FAQ: pay only with a credit card, via Subscriptions > Add new > Payment page after signing in. Reaching it needs an account, and sign-up needs a human (Turnstile). Checkout not seen.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "note": "No plan started (no account). Pricing FAQ: cancel in the web UI (Subscriptions > Workspace > More details > Cancel Subscription); no API.",
   "docs_grade": "",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "Documented API POST /api/user/schedule-account-deletion/ (30-day grace per /api/settings/), untested: no account was created.",
   "account": false,
   "reached": false
  }
 },
 "routes": [],
 "checkout": null,
 "docs": null,
 "claims": null,
 "pay_options": {
  "checked": "2026-10-06",
  "source": "drive",
  "options": [
   {
    "id": "card",
    "name": "Card checkout",
    "kind": "checkout",
    "first_party": false,
    "lead": false,
    "networks": [],
    "testnet": false
   }
  ],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": true
  },
  "owner_fixes": [
   {
    "title": "Accept x402 or MPP on your API",
    "how": "Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card."
   },
   {
    "title": "List your plans on Stripe Projects",
    "how": "Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev)."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": false,
  "sdk": false,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST, 312 paths / 424 operations, JWT or database token auth",
  "openapi": "3.0.3 at api.baserow.io/api/schema.json, info.version 2.4.0",
  "mcp": "official, legacy HTTP+SSE, key-in-URL per workspace",
  "llms_txt": "baserow.io/llms.txt, marketing-level links"
 },
 "can_do": [
  "Read Baserow's docs, llms.txt and the full OpenAPI spec headless",
  "Read public instance settings (GET /api/settings/) to learn that sign-up needs a Turnstile captcha"
 ],
 "cannot_do": [
  {
   "what": "Create an account",
   "why": "Sign-up (API and web form) requires a Cloudflare Turnstile token"
  },
  {
   "what": "Any database, app, automation or dashboard work",
   "why": "Every operation needs a JWT or token from an account"
  },
  {
   "what": "Use the MCP server",
   "why": "The MCP URL key is created inside an account"
  },
  {
   "what": "Buy a plan as an agent",
   "why": "Card-only web checkout behind the signed-in UI; no agent payment rail or billing API"
  }
 ],
 "blockers": [
  "Cloudflare Turnstile on sign-up (POST /api/user/ and the web form)"
 ],
 "tips_for_owner": [
  "Let verified signed agents skip sign-up captcha",
  "Move MCP to Streamable HTTP with OAuth",
  "Offer a billing API or agent payment rail",
  "Serve docs as Markdown"
 ],
 "tips_for_agents": [
  "GET https://api.baserow.io/api/settings/ tells you up front whether sign-up needs a captcha (captcha.enabled, provider cloudflare_turnstile).",
  "With an account, use a database token (POST /api/database/tokens/) for the REST API; the OpenAPI is at api.baserow.io/api/schema.json.",
  "The MCP server is legacy SSE at https://api.baserow.io/mcp/{key}/sse; use mcp-remote or an SSE-capable client. Treat the URL as a secret.",
  "Hosted cloud allows at most 10 concurrent API requests (pricing FAQ)."
 ],
 "selfhost": {
  "install": {
   "status": "skipped",
   "minutes": 0,
   "note": "no docker in the drive sandbox; Baserow documents a Docker self-hosted edition (baserow.io/docs/installation/install-with-docker, linked from llms.txt)"
  }
 },
 "summary": "Baserow has a large documented REST API (OpenAPI 3.0.3, 424 operations), an official MCP server and llms.txt, but an agent cannot create an account: sign-up, by API and by web form, needs a Cloudflare Turnstile token. Without an account nothing beyond the docs could be driven; payment is card-only through the signed-in web UI.",
 "wall": "Cloudflare Turnstile on the sign-up form",
 "plan_scope": "",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Baserow is a no-code database and app builder with a well-documented API, but our agent could not even create an account: the sign-up form and its API both require solving a Cloudflare 'prove you're human' puzzle. Since every feature needs a logged-in account, nothing beyond reading the public documentation could be tried.",
  "can_do": [
   "Read all the public documentation, including the full API reference, without needing an account",
   "Check in advance that sign-up will require a human puzzle"
  ],
  "cannot_do": [
   {
    "what": "Create an account",
    "why": "The sign-up form requires solving a visible Cloudflare puzzle to do"
   },
   {
    "what": "Build or manage any database, app, or automation",
    "why": "Every feature requires being logged into an account"
   },
   {
    "what": "Use the official agent-connector (MCP) feature",
    "why": "It requires a secret key that is only created inside an account"
   },
   {
    "what": "Buy or cancel a paid plan",
    "why": "Payment is credit-card only through the website, which also requires an account"
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Database Builder",
   "capability": "Create a database and tables",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/database/tables/database/{database_id}/",
    "mcp": null,
    "cli": null,
    "ui": "Workspace > Create database/table"
   },
   "check": "GET /api/database/tables/all-tables/ lists the new table",
   "source": "https://baserow.io/user-docs/create-a-database; https://baserow.io/user-docs/create-a-table"
  },
  {
   "id": "cap-02",
   "group": "Database Builder",
   "capability": "Add and configure fields (20+ field types) on a table",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/database/fields/table/{table_id}/",
    "mcp": null,
    "cli": null,
    "ui": "Table > + field"
   },
   "check": "GET /api/database/fields/table/{table_id}/ shows the new field and type",
   "source": "https://baserow.io/user-docs/adding-a-field; https://baserow.io/pricing (20+ field types)"
  },
  {
   "id": "cap-03",
   "group": "Database Builder",
   "capability": "Create, read, update and delete rows",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST/GET/PATCH/DELETE /api/database/rows/table/{table_id}/[{row_id}/]",
    "mcp": "row create/update/delete tools",
    "cli": null,
    "ui": "Grid view cell editing"
   },
   "check": "GET /api/database/rows/table/{table_id}/{row_id}/ reflects the change",
   "source": "https://baserow.io/user-docs/database-api; https://baserow.io/user-docs/how-to-make-new-rows"
  },
  {
   "id": "cap-04",
   "group": "Database Builder",
   "capability": "Link rows between tables (relationships)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "field type 'link_row' on /api/database/fields/table/{table_id}/",
    "mcp": null,
    "cli": null,
    "ui": "Field type: Link to table"
   },
   "check": "Row's link field contains the related row id(s)",
   "source": "https://baserow.io/product/database; https://baserow.io/user-docs/link-to-table-field"
  },
  {
   "id": "cap-05",
   "group": "Database Builder",
   "capability": "Filter, sort, search and group rows in a view",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/database/rows/table/{table_id}/?filters=...&order_by=...&search=",
    "mcp": null,
    "cli": null,
    "ui": "Grid/Gallery view toolbar"
   },
   "check": "Response row set matches applied filter/sort/search params",
   "source": "https://baserow.io/user-docs/filters-in-baserow; https://baserow.io/pricing"
  },
  {
   "id": "cap-06",
   "group": "Database Builder",
   "capability": "Create alternate views (Grid, Gallery, Kanban, Calendar, Timeline, Form, Survey)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/database/views/table/{table_id}/",
    "mcp": null,
    "cli": null,
    "ui": "Table > + view"
   },
   "check": "GET /api/database/views/table/{table_id}/ lists the new view with its type",
   "source": "https://baserow.io/user-docs/overview-of-baserow-views; https://baserow.io/pricing (view types by plan)"
  },
  {
   "id": "cap-07",
   "group": "Application Builder",
   "capability": "Build a no-code application (pages, elements, data sources)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Application builder editor"
   },
   "check": "Application has a page with a bound data source visible in the app editor",
   "source": "https://baserow.io/product/application-builder; https://baserow.io/user-docs/application-builder-overview"
  },
  {
   "id": "cap-08",
   "group": "Application Builder",
   "capability": "Publish an application to a public URL (free or custom domain)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "App builder > Publish"
   },
   "check": "Published app URL loads the app's pages for visitors",
   "source": "https://baserow.io/user-docs/preview-and-publish-application; https://baserow.io/user-docs/add-a-domain-to-an-application"
  },
  {
   "id": "cap-09",
   "group": "Automations",
   "capability": "Build an automated workflow with triggers and actions",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Automation builder"
   },
   "check": "Triggering the configured event (e.g. row created) produces the configured action's result (e.g. new row, email sent)",
   "source": "https://baserow.io/product/automations; https://baserow.io/user-docs/workflow-automation"
  },
  {
   "id": "cap-11",
   "group": "Dashboards",
   "capability": "Create a dashboard with charts/widgets over table data",
   "weight": "core",
   "plan": "premium",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard builder"
   },
   "check": "Dashboard page renders a chart widget sourced from a table",
   "source": "https://baserow.io/product/dashboards; https://baserow.io/user-docs/create-a-dashboard; https://baserow.io/pricing"
  },
  {
   "id": "cap-10",
   "group": "AI",
   "capability": "Use AI assistant (Kuma) to build databases/apps/automations from a description",
   "weight": "secondary",
   "plan": "premium",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Kuma AI assistant panel"
   },
   "check": "Workspace contains the database/app/workflow Kuma generated from the prompt",
   "source": "https://baserow.io/product/baserow-ai; https://baserow.io/user-docs/ai-assistant"
  },
  {
   "id": "cap-12",
   "group": "Database Builder",
   "capability": "Import data into a table (CSV, Excel, XML, JSON, Airtable base)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Table > Import"
   },
   "check": "Imported rows appear in GET /api/database/rows/table/{table_id}/",
   "source": "https://baserow.io/user-docs/import-data-into-an-existing-table; https://baserow.io/user-docs/import-airtable-to-baserow"
  },
  {
   "id": "cap-13",
   "group": "Database Builder",
   "capability": "Export a table or view (CSV; XML/JSON/Excel on paid plans)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Table/view > Export"
   },
   "check": "Downloaded export file contains current row data",
   "source": "https://baserow.io/user-docs/export-tables; https://baserow.io/user-docs/export-a-view; https://baserow.io/pricing"
  },
  {
   "id": "cap-14",
   "group": "Database Builder",
   "capability": "Sync a table from an external source (Jira, HubSpot, GitHub, GitLab, iCal, PostgreSQL)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Table > Data sync"
   },
   "check": "Synced table rows match the external source after a manual sync",
   "source": "https://baserow.io/user-docs/data-sync-in-baserow; https://baserow.io/product/integrations"
  },
  {
   "id": "cap-15",
   "group": "Database Builder",
   "capability": "Set field-level data validation (value constraints)",
   "weight": "secondary",
   "plan": "premium",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Field settings > Value constraints"
   },
   "check": "A row write violating the constraint is rejected by the API",
   "source": "https://baserow.io/user-docs/field-value-constraints; https://baserow.io/pricing (field constraints)"
  },
  {
   "id": "cap-16",
   "group": "Database Builder",
   "capability": "Comment on and mention collaborators on a row",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/database/rows/table/{table_id}/{row_id}/comments/",
    "mcp": null,
    "cli": null,
    "ui": "Row detail > Comments"
   },
   "check": "GET comments endpoint for the row shows the new comment",
   "source": "https://baserow.io/user-docs/row-commenting; https://baserow.io/product/database"
  },
  {
   "id": "cap-17",
   "group": "Database Builder",
   "capability": "View row change history",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Row detail > History"
   },
   "check": "History panel lists prior field values with timestamps (retention varies by plan)",
   "source": "https://baserow.io/user-docs/row-change-history; https://baserow.io/pricing (row change history retention)"
  },
  {
   "id": "cap-18",
   "group": "Database Builder",
   "capability": "Take and restore database snapshots",
   "weight": "secondary",
   "plan": "premium",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Database settings > Snapshots"
   },
   "check": "Restoring a snapshot returns the database to its prior row/schema state",
   "source": "https://baserow.io/user-docs/snapshots; https://baserow.io/product/database"
  },
  {
   "id": "cap-19",
   "group": "AI",
   "capability": "Generate/classify/enrich cell values with an AI field",
   "weight": "secondary",
   "plan": "premium",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Field type: AI field"
   },
   "check": "AI field cell populates with a generated value after the prompt runs on a row",
   "source": "https://baserow.io/user-docs/ai-field; https://baserow.io/product/baserow-ai"
  },
  {
   "id": "cap-20",
   "group": "AI",
   "capability": "Generate a formula from a natural-language description",
   "weight": "secondary",
   "plan": "premium",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Formula field editor > Generate with AI"
   },
   "check": "Formula field is populated with a working formula matching the description",
   "source": "https://baserow.io/user-docs/generate-formulas-with-baserow-ai"
  },
  {
   "id": "cap-21",
   "group": "AI",
   "capability": "Build and run an AI agent node inside a workflow",
   "weight": "secondary",
   "plan": "premium",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Automation builder > AI agent node"
   },
   "check": "Running the workflow produces the AI agent's output in the connected action/field",
   "source": "https://baserow.io/product/baserow-ai; https://baserow.io/pricing (AI agent builder)"
  },
  {
   "id": "cap-23",
   "group": "Collaboration",
   "capability": "Invite and manage workspace collaborators",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Workspace members settings"
   },
   "check": "Invited user appears in workspace member list with assigned role",
   "source": "https://baserow.io/user-docs/working-with-collaborators; https://baserow.io/user-docs/manage-workspace-permissions"
  },
  {
   "id": "cap-24",
   "group": "Collaboration",
   "capability": "Create teams and assign role-based permissions at workspace/database/table/field/view level",
   "weight": "secondary",
   "plan": "advanced",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Permissions settings"
   },
   "check": "A user assigned a restricted role is denied the corresponding action in the UI/API",
   "source": "https://baserow.io/user-docs/role-based-access-control-rbac; https://baserow.io/pricing (role based permissions, field/view-level permissions)"
  },
  {
   "id": "cap-25",
   "group": "Collaboration",
   "capability": "Share a view publicly via a link",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "View > Share"
   },
   "check": "The generated public link opens the view without authentication",
   "source": "https://baserow.io/user-docs/public-sharing"
  },
  {
   "id": "cap-26",
   "group": "Collaboration",
   "capability": "Submit data through a public form/survey view",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Form/Survey view"
   },
   "check": "A form submission creates a new row in the linked table",
   "source": "https://baserow.io/user-docs/guide-to-creating-forms-in-baserow; https://baserow.io/user-docs/form-survey-mode"
  },
  {
   "id": "cap-27",
   "group": "Integrations",
   "capability": "Create and receive outgoing webhooks on row events",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/database/webhooks/table/{table_id}/",
    "mcp": null,
    "cli": null,
    "ui": "Table settings > Webhooks"
   },
   "check": "A row create/update/delete triggers an HTTP POST to the configured webhook URL",
   "source": "https://baserow.io/user-docs/webhooks"
  },
  {
   "id": "cap-28",
   "group": "Integrations",
   "capability": "Generate and manage API tokens for programmatic access",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Workspace settings > API tokens"
   },
   "check": "A request with the token's Authorization header against /api/database/rows/table/{id}/ succeeds",
   "source": "https://baserow.io/user-docs/personal-api-tokens"
  },
  {
   "id": "cap-29",
   "group": "Automations",
   "capability": "Publish, pause and manage an automation workflow",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Automation builder > Publish/manage"
   },
   "check": "Workflow status toggled to paused stops new trigger runs; published resumes them",
   "source": "https://baserow.io/user-docs/workflow-management; https://baserow.io/user-docs/automation-settings"
  },
  {
   "id": "cap-30",
   "group": "Database Builder",
   "capability": "Export and import an entire workspace",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Workspace settings > Export/Import"
   },
   "check": "Imported workspace export recreates the original databases and tables",
   "source": "https://baserow.io/user-docs/export-workspaces; https://baserow.io/user-docs/import-workspaces"
  },
  {
   "id": "cap-31",
   "group": "Account Admin",
   "capability": "Manage account settings, password and two-factor authentication",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Account settings"
   },
   "check": "2FA challenge is required on next login after enabling it",
   "source": "https://baserow.io/user-docs/account-settings-overview; https://baserow.io/user-docs/two-factor-auth"
  },
  {
   "id": "cap-32",
   "group": "Account Admin",
   "capability": "Configure single sign-on (SAML, OpenID Connect, OAuth providers)",
   "weight": "peripheral",
   "plan": "advanced",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin panel > SSO settings"
   },
   "check": "Login via the configured SSO provider authenticates the user into the workspace",
   "source": "https://baserow.io/user-docs/single-sign-on-sso-overview; https://baserow.io/pricing (SSO)"
  },
  {
   "id": "cap-33",
   "group": "Account Admin",
   "capability": "View audit logs of workspace activity",
   "weight": "peripheral",
   "plan": "advanced",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin panel > Audit logs"
   },
   "check": "A recent user action (e.g. row delete) appears as an audit log entry",
   "source": "https://baserow.io/user-docs/admin-panel-audit-logs; https://baserow.io/pricing (audit logs)"
  },
  {
   "id": "cap-34",
   "group": "Account Admin",
   "capability": "Apply custom branding to a published application (remove 'Made with Baserow')",
   "weight": "peripheral",
   "plan": "advanced",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Application settings > Branding"
   },
   "check": "Published app no longer shows the 'Made with Baserow' footer logo",
   "source": "https://baserow.io/pricing (Logo removal, Application branding)"
  },
  {
   "id": "cap-35",
   "group": "Account Admin",
   "capability": "Self-host Baserow on own infrastructure (Docker, K8S, Helm, cloud providers)",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "docker compose up / helm install",
    "ui": null
   },
   "check": "A self-hosted instance started from the Docker image serves the Baserow login page",
   "source": "https://baserow.io/docs/installation%2Finstall-with-docker; https://baserow.io/product/baserow-self-hosted"
  }
 ],
 "attempts": [
  {
   "t": "00:51",
   "cap": "discovery",
   "capability": "robots/aipref",
   "task": "robots.txt + Content-Usage",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "https://baserow.io/robots.txt 200: 'User-Agent: * / Disallow:' (empty); no Content-Usage or Content-signal lines; no Content-Usage header",
   "notes": ""
  },
  {
   "t": "00:51",
   "cap": "discovery",
   "capability": "llms.txt",
   "task": "fetch llms.txt",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "https://baserow.io/llms.txt 200 text/plain 10348 bytes, H1 '# Baserow'; /docs/llms.txt 404",
   "notes": ""
  },
  {
   "t": "00:51",
   "cap": "discovery",
   "capability": "openapi",
   "task": "fetch OpenAPI",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "https://api.baserow.io/api/schema.json 200 application/vnd.oai.openapi+json, openapi 3.0.3, info.version 2.4.0, 312 paths / 424 operations",
   "notes": "3.0.x is behind 3.1/3.2"
  },
  {
   "t": "00:51",
   "cap": "discovery",
   "capability": "agent cards",
   "task": "ai-catalog / agent-card / mcp server-card / oauth metadata / auth.md / ucp",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "baserow.io/.well-known/ai-catalog.json, agent-card.json, agent.json, mcp/server-card.json: 404 JSON; api.baserow.io/.well-known/oauth-protected-resource and oauth-authorization-server: 404 URL_NOT_FOUND; /auth.md, /SKILL.md, /.well-known/ucp: 404 HTML",
   "notes": "none present"
  },
  {
   "t": "00:51",
   "cap": "pay",
   "capability": "402 probes",
   "task": "x402./mpp./agents. subdomains",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "x402.baserow.io, mpp.baserow.io, agents.baserow.io: DNS does not resolve",
   "notes": ""
  },
  {
   "t": "00:51",
   "cap": "signup",
   "capability": "sign up",
   "task": "POST /api/user/ (documented in OpenAPI) without captcha token",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "400 {'error':'ERROR_CAPTCHA_VERIFICATION_FAILED','detail':'Captcha verification failed. Please try again.'}; /api/settings/ shows captcha enabled provider cloudflare_turnstile contexts signup",
   "notes": "Cloudflare Turnstile token required on signup; headless API signup impossible",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "03:30",
   "cap": "signup",
   "capability": "sign up",
   "task": "Sign up via https://baserow.io/signup in the real browser",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "Form filled (email, name, password, terms); a visible Cloudflare Turnstile 'Verify you are human' checkbox widget sits above 'Get started' (screenshot browser/shots/002.png); clicking Get started without it did not create an account (shots/003.png, still on /signup)",
   "notes": "Turnstile judges the browser; not solved by the agent.",
   "quality": {
    "error_legibility": "vague",
    "recoverable": "no"
   }
  },
  {
   "t": "03:30",
   "cap": "signup",
   "capability": "human handoff",
   "task": "",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "",
   "notes": "Signup stays human"
  },
  {
   "t": "04:13",
   "cap": "discovery",
   "capability": "MCP server/discover",
   "task": "POST server/discover (2026-07-28) to https://api.baserow.io/mcp/{key}/sse and /mcp/messages/",
   "route": "mcp",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "POST /mcp/invalidkey/sse -> 405 'Method Not Allowed' (Allow: HEAD, GET); POST /mcp/messages/ -> 400 'session_id is required'; GET /mcp/invalidkey/sse (text/event-stream) -> 401 'Endpoint not found.'; /server-card -> 404",
   "notes": "Legacy HTTP+SSE transport (deprecated since 2025-03-26), route /mcp/{key}/sse from baserow source (core/mcp/__init__.py). Auth = secret key in URL created per workspace (/api/mcp/endpoints/). No key without an account, so initialize not possible.",
   "quality": {
    "error_legibility": "vague"
   }
  },
  {
   "t": "04:59",
   "cap": "docs",
   "capability": "docs",
   "task": "Find user docs, API reference and OpenAPI headless",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "baserow.io/user-docs pages 200; https://api.baserow.io/api/redoc/ 200; OpenAPI 3.0.3 at api.baserow.io/api/schema.json (424 operations incl. POST /api/user/, /api/database/tokens/, /api/mcp/endpoints/); llms.txt 200",
   "notes": "Accept: text/markdown returns text/html (no Vary); /user-docs/mcp-server.md 404",
   "quality": {
    "docs_match": "match"
   }
  },
  {
   "t": "04:59",
   "cap": "discovery",
   "capability": "markdown docs",
   "task": "Accept: text/markdown and .md URL on https://baserow.io/user-docs/mcp-server",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "Accept: text/markdown -> 200 text/html;charset=utf-8, no Vary: Accept; .md URL -> 404 text/html",
   "notes": ""
  },
  {
   "t": "04:59",
   "cap": "pay",
   "capability": "pay step",
   "task": "402/registry/discovery probes and pricing",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "Unauthenticated /api/database/rows/table/1/ and /api/workspaces/ -> 401 WWW-Authenticate: JWT realm=\"api\" (no 402, no PAYMENT-REQUIRED, no WWW-Authenticate: Payment/L402); /.well-known/ucp, /auth.md, oauth metadata 404; x402 Bazaar and mpp.dev/api/services: no 'baserow'; OpenAPI has no billing/subscription operations (only self-hosted /api/licenses/). Pricing FAQ: 'Currently, you can pay only with a credit card.' Purchase: 'Sign in to your Baserow account. Under Subscriptions, choose Add new ... follow the steps listed on the Payment page.' Free plan $0; Advanced has 'Free trial'.",
   "notes": "Card-only web checkout behind a sign-up that needs a human (Turnstile). Checkout itself not seen (no account)."
  },
  {
   "t": "04:59",
   "cap": "cancel",
   "capability": "cancel",
   "task": "Find a headless cancel route",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Pricing FAQ 'Can I cancel my subscription?': 'Sign in ... Under Subscriptions, choose Workspace and click on More details. Select Cancel Subscription and confirm...' (web UI); no subscription API in OpenAPI",
   "notes": "No plan started; no account. Docs say web UI only."
  },
  {
   "t": "04:59",
   "cap": "delete",
   "capability": "delete account",
   "task": "Delete account via POST /api/user/schedule-account-deletion/",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Documented in OpenAPI ('Schedules the account deletion of the authenticated user... permanently deleted after the grace delay'); /api/settings/ account_deletion_grace_delay: 30. Not callable: no account was created.",
   "notes": "Headless delete route exists on paper; untested."
  },
  {
   "t": "04:59",
   "cap": "verify",
   "capability": "verify",
   "task": "verify step",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up needs a Cloudflare Turnstile token (API 400 ERROR_CAPTCHA_VERIFICATION_FAILED.",
   "notes": ""
  },
  {
   "t": "04:59",
   "cap": "credentials",
   "capability": "credentials",
   "task": "credentials step",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up needs a Cloudflare Turnstile token (API 400 ERROR_CAPTCHA_VERIFICATION_FAILED.",
   "notes": ""
  },
  {
   "t": "04:59",
   "cap": "first_call",
   "capability": "The first call",
   "task": "",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up needs a Cloudflare Turnstile token (API 400 ERROR_CAPTCHA_VERIFICATION_FAILED.",
   "notes": ""
  },
  {
   "t": "04:59",
   "cap": "first_action",
   "capability": "The first action",
   "task": "",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up needs a Cloudflare Turnstile token (API 400 ERROR_CAPTCHA_VERIFICATION_FAILED.",
   "notes": ""
  },
  {
   "t": "04:59",
   "cap": "cap-01",
   "capability": "Create a database and tables",
   "task": "Attempt 'Create a database and tables' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-02",
   "capability": "Add and configure fields (20+ field types) on a table",
   "task": "Attempt 'Add and configure fields (20+ field types) on a table' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-03",
   "capability": "Create, read, update and delete rows",
   "task": "Attempt 'Create, read, update and delete rows' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-04",
   "capability": "Link rows between tables (relationships)",
   "task": "Attempt 'Link rows between tables (relationships)' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-05",
   "capability": "Filter, sort, search and group rows in a view",
   "task": "Attempt 'Filter, sort, search and group rows in a view' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-06",
   "capability": "Create alternate views (Grid, Gallery, Kanban, Calendar, Timeline, Form, Survey)",
   "task": "Attempt 'Create alternate views (Grid, Gallery, Kanban, Calendar, Timeline, Form, Survey)' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-07",
   "capability": "Build a no-code application (pages, elements, data sources)",
   "task": "Attempt 'Build a no-code application (pages, elements, data sources)' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-08",
   "capability": "Publish an application to a public URL (free or custom domain)",
   "task": "Attempt 'Publish an application to a public URL (free or custom domain)' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-09",
   "capability": "Build an automated workflow with triggers and actions",
   "task": "Attempt 'Build an automated workflow with triggers and actions' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-11",
   "capability": "Create a dashboard with charts/widgets over table data",
   "task": "Attempt 'Create a dashboard with charts/widgets over table data' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-10",
   "capability": "Use AI assistant (Kuma) to build databases/apps/automations from a description",
   "task": "Attempt 'Use AI assistant (Kuma) to build databases/apps/automations from a description' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-12",
   "capability": "Import data into a table (CSV, Excel, XML, JSON, Airtable base)",
   "task": "Attempt 'Import data into a table (CSV, Excel, XML, JSON, Airtable base)' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-13",
   "capability": "Export a table or view (CSV; XML/JSON/Excel on paid plans)",
   "task": "Attempt 'Export a table or view (CSV; XML/JSON/Excel on paid plans)' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-14",
   "capability": "Sync a table from an external source (Jira, HubSpot, GitHub, GitLab, iCal, PostgreSQL)",
   "task": "Attempt 'Sync a table from an external source (Jira, HubSpot, GitHub, GitLab, iCal, PostgreSQL)' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-15",
   "capability": "Set field-level data validation (value constraints)",
   "task": "Attempt 'Set field-level data validation (value constraints)' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-16",
   "capability": "Comment on and mention collaborators on a row",
   "task": "Attempt 'Comment on and mention collaborators on a row' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-17",
   "capability": "View row change history",
   "task": "Attempt 'View row change history' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-18",
   "capability": "Take and restore database snapshots",
   "task": "Attempt 'Take and restore database snapshots' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-19",
   "capability": "Generate/classify/enrich cell values with an AI field",
   "task": "Attempt 'Generate/classify/enrich cell values with an AI field' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-20",
   "capability": "Generate a formula from a natural-language description",
   "task": "Attempt 'Generate a formula from a natural-language description' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-21",
   "capability": "Build and run an AI agent node inside a workflow",
   "task": "Attempt 'Build and run an AI agent node inside a workflow' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-23",
   "capability": "Invite and manage workspace collaborators",
   "task": "Attempt 'Invite and manage workspace collaborators' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-24",
   "capability": "Create teams and assign role-based permissions at workspace/database/table/field/view level",
   "task": "Attempt 'Create teams and assign role-based permissions at workspace/database/table/field/view level' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-25",
   "capability": "Share a view publicly via a link",
   "task": "Attempt 'Share a view publicly via a link' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-26",
   "capability": "Submit data through a public form/survey view",
   "task": "Attempt 'Submit data through a public form/survey view' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-27",
   "capability": "Create and receive outgoing webhooks on row events",
   "task": "Attempt 'Create and receive outgoing webhooks on row events' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-28",
   "capability": "Generate and manage API tokens for programmatic access",
   "task": "Attempt 'Generate and manage API tokens for programmatic access' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-29",
   "capability": "Publish, pause and manage an automation workflow",
   "task": "Attempt 'Publish, pause and manage an automation workflow' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-30",
   "capability": "Export and import an entire workspace",
   "task": "Attempt 'Export and import an entire workspace' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-31",
   "capability": "Manage account settings, password and two-factor authentication",
   "task": "Attempt 'Manage account settings, password and two-factor authentication' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-32",
   "capability": "Configure single sign-on (SAML, OpenID Connect, OAuth providers)",
   "task": "Attempt 'Configure single sign-on (SAML, OpenID Connect, OAuth providers)' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-33",
   "capability": "View audit logs of workspace activity",
   "task": "Attempt 'View audit logs of workspace activity' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-34",
   "capability": "Apply custom branding to a published application (remove 'Made with Baserow')",
   "task": "Attempt 'Apply custom branding to a published application (remove 'Made with Baserow')' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  },
  {
   "t": "04:59",
   "cap": "cap-35",
   "capability": "Self-host Baserow on own infrastructure (Docker, K8S, Helm, cloud providers)",
   "task": "Attempt 'Self-host Baserow on own infrastructure (Docker, K8S, Helm, cloud providers)' on our own workspace",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or token: unauthenticated calls to api.baserow.io return 401 WWW-Authenticate: JWT realm=\"api\"; sign-up blocked by Cloudflare Turnstile",
   "notes": "not reachable without an account"
  }
 ],
 "stale": false,
 "icon": "/logos/baserow.png",
 "monitored": false,
 "verdict": "Needs a person to get in: L1 · Needs a person. Our agent read the user docs, the ReDoc API reference and llms.txt on its own, then stopped at signup: the documented account endpoint answers an error demanding a Cloudflare Turnstile token, and the web form shows the same visible challenge. With no account, the key page, the first call and the first piece of work in the API or the official MCP server were never reached. Paying stays card-only through the signed-in web UI once a person sets up the account; the UI also handles cancelling, though the docs name an API route for deleting the account.",
 "page": "https://agentdrives.com/tools/baserow?via=api"
}