{
 "slug": "close",
 "name": "Close",
 "url": "https://close.com",
 "domain": "close.com",
 "category": "crm",
 "category_name": "CRM",
 "tested_at": "2026-10-11",
 "run": "20261011T163739Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261001T213935Z",
   "date": "2026-10-01",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": null,
    "driver": null,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  },
  {
   "run": "20261006T062531Z",
   "date": "2026-10-06",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  },
  {
   "run": "20261011T163739Z",
   "date": "2026-10-11",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 3,
    "signed": true,
    "inbox": [
     "matfy.com"
    ],
    "robots": "obey"
   }
  }
 ],
 "level": 1,
 "level_name": "Needs a person",
 "level_selfhost": null,
 "entry": "closed",
 "door": {
  "passed": 0,
  "tries": 3,
  "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": null,
 "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": "MCP client registration",
    "state": "behind",
    "behind": null,
    "value": "dcr"
   },
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 1,
    "value": "3.1.0"
   }
  ]
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": null,
 "after_wall": null,
 "coverage_source": "reported",
 "driver": {
  "version": 3,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": false,
  "prompt_sha": "076cd4c65a1a",
  "kb_version": "3+overlay-1353601952",
  "identity": "e8a92f24a9a8"
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 3,
  "signed": true,
  "inbox": [
   "matfy.com"
  ],
  "robots": "obey"
 },
 "same_level_drives": 3,
 "drives": 3,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": {
  "rung": "signup",
  "vendor": "reCAPTCHA (invisible)",
  "visible": false,
  "type": "network",
  "human": null,
  "how": "Check the Web Bot Auth signature on the sign-up request and skip reCAPTCHA (or lower the score threshold) for signed agents; or offer a documented sign-up API with email verification.",
  "signed": true
 },
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "form"
  },
  "signed": {
   "state": "robots",
   "kind": "signup",
   "at": "2026-10-12"
  },
  "browser": {
   "state": "through",
   "measured": false
  },
  "our_key": "pending",
  "robots": "closed",
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "llms.txt on close.com and developer.close.com, OpenAPI 3.1.0 (159 paths), .md docs pages"
  },
  "signup": {
   "status": "blocked",
   "note": "No sign-up API. Browser form at app.close.com/signup/ refused after the password step: \"We couldn't verify this signup."
  },
  "verify": {
   "status": "",
   "note": "Not reached: sign-up refused",
   "reached": false
  },
  "credentials": {
   "status": "",
   "note": "API keys only in the web app (Settings > Developer > API Keys). OAuth DCR answered 201 headless, but authorizing needs a signed-in Close user; no device flow.",
   "via": "",
   "reached": false
  },
  "first_call": {
   "status": "",
   "note": "GET /api/v1/me/ without credentials: 401 {\"error\": \"Unauthorized\"}",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "Not reached: no account",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [
    "in-app checkout (not seen)"
   ],
   "rail_ids": [
    "other"
   ],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "no-card trial",
   "note": "No 402, x402, MPP, UCP or Stripe Projects listing; we paid nothing. Pricing: 14-day trial, no credit card required; plans $9-$139 per user/month. No billing API; MCP has read-only billing tools. Upgrade is inside the app behind the sign-up, not reached.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "grade": "n/a",
   "note": "not tested: no plan or trial was started because sign-up was refused before reaching the app; Close offers paid plans, so this is untested. No billing API or MCP billing write tool in the docs; help.close.com/docs/cancel-your-subscription 404.",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "No account was created; the OpenAPI has no account delete route",
   "account": false,
   "reached": false
  }
 },
 "routes": [],
 "checkout": null,
 "docs": null,
 "claims": null,
 "pay_options": {
  "checked": "2026-10-11",
  "source": "probe",
  "options": [],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": true,
   "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, 159 paths, Basic auth with API key or OAuth",
  "openapi": "3.1.0 at developer.close.com/openapi.json",
  "mcp": "official, 122 tools in docs, OAuth with DCR",
  "llms_txt": "close.com and developer.close.com"
 },
 "can_do": [
  "Read Close's docs, OpenAPI and MCP tool list as Markdown",
  "Register an OAuth client by Dynamic Client Registration without an account"
 ],
 "cannot_do": [
  {
   "what": "Sign up for a Close account",
   "why": "The sign-up form's invisible reCAPTCHA refused our agent's browser with no challenge to solve"
  },
  {
   "what": "Get an API key or OAuth token",
   "why": "Keys are made only in the web app and OAuth consent needs a signed-in user"
  },
  {
   "what": "Use any CRM capability (leads, opportunities, calls, email, SMS, tasks)",
   "why": "No account"
  }
 ],
 "blockers": [
  "Invisible reCAPTCHA on app.close.com/signup/ refuses the sign-up: \"We couldn't verify this signup.\""
 ],
 "tips_for_owner": [
  "Let verified agents pass the sign-up check",
  "Offer a headless sign-up that returns a key",
  "Allow /signup in app.close.com robots.txt",
  "Add a billing API or MCP upgrade tool"
 ],
 "tips_for_agents": [
  "Once in, use the MCP server at https://mcp.close.com/mcp (OAuth with DCR, or an API key plus a Close-Scope header)",
  "The REST API uses Basic auth with the API key as username and an empty password",
  "Use app.close.com/signup/ with the slash: /signup is disallowed by robots.txt",
  "Docs pages have .md versions; developer.close.com/llms.txt indexes them"
 ],
 "selfhost": null,
 "summary": "Close's sign-up refused our agent's browser through an invisible reCAPTCHA check, with no challenge a human could solve, so we never got an account, key or token. Its public agent surface is good: llms.txt, an OpenAPI 3.1.0 spec, Markdown docs and an official MCP server with OAuth DCR that worked headless. No agent payment rail; the trial needs no card.",
 "wall": "Invisible reCAPTCHA refuses the sign-up",
 "plan_scope": "",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Close is a sales CRM for calls, email, SMS, and deal tracking. An AI agent trying it on its own could only read the public docs and register an unused developer credential; it was turned away at account sign-up by an invisible bot check with no challenge to solve, so it never got in.",
  "can_do": [
   "Read Close's help docs, API reference, and list of AI-assistant tools",
   "Register a developer app identity without logging in"
  ],
  "cannot_do": [
   {
    "what": "Create a Close account",
    "why": "An invisible bot check on the sign-up page rejected the attempt with no visible test to pass"
   },
   {
    "what": "Get a working key or login",
    "why": "Keys are only made inside the app, which needs the account the agent couldn't create"
   },
   {
    "what": "Use any CRM feature (leads, calls, email, texting, tasks)",
    "why": "None of this is reachable without an account"
   },
   {
    "what": "Start or cancel a paid plan",
    "why": "Starting a plan happens inside the app, behind the same sign-up wall"
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Lead & Pipeline",
   "capability": "Create and manage a Lead with contacts, custom fields, and opportunities",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST/GET/PUT/DELETE /lead/",
    "mcp": "fetch_lead",
    "cli": null,
    "ui": "Lead page"
   },
   "check": "GET /lead/{id} returns the lead with contacts and custom field values set",
   "source": "https://developer.close.com/api/overview; https://developer.close.com/mcp/tools"
  },
  {
   "id": "cap-02",
   "group": "Pipeline",
   "capability": "Track an Opportunity through pipeline stages with value and expected value",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST/GET/PUT /opportunity/",
    "mcp": "fetch_opportunity",
    "cli": null,
    "ui": "Opportunity / Pipeline view"
   },
   "check": "GET /opportunity/{id} shows status_id matching the target pipeline stage",
   "source": "https://close.com/pricing (Opportunity management); https://developer.close.com/api/overview"
  },
  {
   "id": "cap-03",
   "group": "Calling",
   "capability": "Make and receive calls worldwide from the built-in dialer",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /activity/call/",
    "mcp": "fetch_call",
    "cli": null,
    "ui": "Lead page call panel"
   },
   "check": "GET /activity/call/{id} shows duration > 0 and direction outbound/inbound",
   "source": "https://close.com/calling; https://close.com/pricing"
  },
  {
   "id": "cap-04",
   "group": "Calling",
   "capability": "Power through a call list with Power Dialer (auto-dial next number)",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Power Dialer"
   },
   "check": "UI shows dialer session advancing to the next lead in the list automatically after a call ends",
   "source": "https://close.com/calling; https://close.com/pricing (Growth plan)"
  },
  {
   "id": "cap-06",
   "group": "Calling",
   "capability": "Have Chloe (AI voice agent) call and qualify leads automatically",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "find_agent_configs, fetch_call_task",
    "cli": null,
    "ui": "Chloe voice agent settings"
   },
   "check": "GET call task via fetch_call_task shows assignee is a voice agent and resulting call logged with transcript",
   "source": "https://close.com; https://developer.close.com/mcp/tools"
  },
  {
   "id": "cap-07",
   "group": "Email",
   "capability": "Send, receive, and two-way sync email from connected accounts",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /activity/email/",
    "mcp": "fetch_email, fetch_email_thread",
    "cli": null,
    "ui": "Lead email composer / inbox"
   },
   "check": "GET /activity/email/{id} shows status sent and appears in external mailbox sent folder",
   "source": "https://close.com/pricing (Two-way email sync)"
  },
  {
   "id": "cap-09",
   "group": "Messaging",
   "capability": "Send and receive SMS to contacts",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /activity/sms/",
    "mcp": "fetch_sms",
    "cli": null,
    "ui": "Lead page SMS panel"
   },
   "check": "GET /activity/sms/{id} shows status sent and text body matches",
   "source": "https://close.com/pricing (Send/receive SMS)"
  },
  {
   "id": "cap-11",
   "group": "AI",
   "capability": "Get an AI-generated summary of a lead's activity",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Lead page AI summary panel"
   },
   "check": "Lead page shows a generated summary block referencing recent calls/emails after refresh",
   "source": "https://close.com; https://close.com/pricing (Lead summaries)"
  },
  {
   "id": "cap-12",
   "group": "AI",
   "capability": "Have Chloe draft and send automatic follow-ups based on call transcripts",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Chloe follow-up settings"
   },
   "check": "GET /activity/email/{id} shows an email created/sent by Chloe shortly after a qualifying call",
   "source": "https://close.com"
  },
  {
   "id": "cap-17",
   "group": "Automation",
   "capability": "Build multi-step Workflows that trigger calls, emails, SMS, and task steps",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "fetch_workflow",
    "cli": null,
    "ui": "Workflows builder"
   },
   "check": "fetch_workflow returns workflow with configured steps; a lead entering the trigger condition gets a queued step",
   "source": "https://close.com/automation; https://close.com/pricing (Automated workflows)"
  },
  {
   "id": "cap-05",
   "group": "Calling",
   "capability": "Call multiple leads at once and connect only on pickup (Predictive Dialer)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Predictive Dialer"
   },
   "check": "UI session log shows multiple simultaneous dial attempts collapsing into one connected call",
   "source": "https://close.com/calling; https://close.com/pricing (Scale plan)"
  },
  {
   "id": "cap-08",
   "group": "Email",
   "capability": "Send bulk templated email to multiple contacts at once",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /bulk-action/email/ (per developer use-cases)",
    "mcp": null,
    "cli": null,
    "ui": "Bulk email action from Smart View"
   },
   "check": "GET /bulk-action/email/{id} shows status complete with sent_count matching recipient list size",
   "source": "https://close.com/pricing (Bulk email); https://developer.close.com (bulk-actions/email)"
  },
  {
   "id": "cap-10",
   "group": "Meetings",
   "capability": "Record and transcribe meetings with Notetaker",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "fetch_meeting_transcript",
    "cli": null,
    "ui": "Meeting/Notetaker integration"
   },
   "check": "fetch_meeting_transcript returns speaker-labeled transcript text for the meeting activity id",
   "source": "https://close.com/calling (Close Notetaker); https://developer.close.com/mcp/tools"
  },
  {
   "id": "cap-13",
   "group": "AI",
   "capability": "Chat with Chloe to ask questions and take actions in Close",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Chloe chat panel"
   },
   "check": "Chat transcript shows Chloe performing a requested action (e.g. field updated) reflected on the lead record",
   "source": "https://close.com/pricing (Chat [Beta])"
  },
  {
   "id": "cap-14",
   "group": "AI",
   "capability": "Surface suggested next actions on stalled or at-risk deals",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Suggested Actions panel"
   },
   "check": "UI shows a suggested-action card for a lead with no recent activity",
   "source": "https://close.com/pricing (Suggested actions)"
  },
  {
   "id": "cap-15",
   "group": "AI",
   "capability": "Rewrite/edit email drafts with AI",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Email composer AI rewrite button"
   },
   "check": "Composer body text changes after invoking AI rewrite on a drafted email",
   "source": "https://close.com/pricing (AI email rewrite)"
  },
  {
   "id": "cap-16",
   "group": "AI",
   "capability": "Enrich contact/company records with external data (LinkedIn, web)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Lead/contact enrichment action"
   },
   "check": "GET /contact/{id} or lead custom fields show newly populated enrichment fields after running enrichment",
   "source": "https://close.com/pricing (Enrichment)"
  },
  {
   "id": "cap-18",
   "group": "Automation",
   "capability": "Use Chloe as an actor inside a Workflow step",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Workflow step assignee = Chloe"
   },
   "check": "Workflow step detail shows assignee type voice-agent/Chloe and produces a logged call/email when triggered",
   "source": "https://close.com/pricing (Use Chloe in Workflows)"
  },
  {
   "id": "cap-19",
   "group": "Automation",
   "capability": "Run Playbooks that auto-fill Outcomes and custom fields (Auto Updates)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Auto Updates / Playbooks settings"
   },
   "check": "Custom field value on a lead changes to the configured outcome after the triggering event, without manual edit",
   "source": "https://close.com/pricing (Auto Updates)"
  },
  {
   "id": "cap-20",
   "group": "Tasks",
   "capability": "Create and assign tasks with due dates and reminders",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /task/",
    "mcp": "fetch_task, find_call_tasks",
    "cli": null,
    "ui": "Task panel"
   },
   "check": "GET /task/{id} shows assignee and due date; completing it in UI sets is_complete true",
   "source": "https://close.com/pricing (Task management, Follow-up reminders)"
  },
  {
   "id": "cap-21",
   "group": "Lists",
   "capability": "Build and save dynamic filtered lists of leads/contacts (Smart Views)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /saved_search/",
    "mcp": "fetch_lead_smart_view",
    "cli": null,
    "ui": "Smart Views sidebar"
   },
   "check": "fetch_lead_smart_view returns the saved query; running it returns leads matching the filter",
   "source": "https://close.com/pricing (Dynamic list building)"
  },
  {
   "id": "cap-22",
   "group": "Email",
   "capability": "Create and use reusable email templates and text snippets",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /email_template/",
    "mcp": "find_email_templates, fetch_email_template",
    "cli": null,
    "ui": "Templates settings"
   },
   "check": "fetch_email_template returns the created template body; inserting it in composer populates the draft",
   "source": "https://close.com/pricing (Email templates, Snippets)"
  },
  {
   "id": "cap-23",
   "group": "Forms",
   "capability": "Build a no-code web form to capture leads",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "find_forms",
    "cli": null,
    "ui": "Forms builder"
   },
   "check": "find_forms lists the created form id; submitting the public form URL creates a new lead",
   "source": "https://close.com/pricing (Forms); https://developer.close.com/mcp/tools"
  },
  {
   "id": "cap-24",
   "group": "Data",
   "capability": "Import and export lead/contact data",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /import/",
    "mcp": null,
    "cli": null,
    "ui": "Import/export settings"
   },
   "check": "GET /import/{id} shows status complete and created lead count > 0",
   "source": "https://close.com/pricing (Data import/export)"
  },
  {
   "id": "cap-25",
   "group": "Data",
   "capability": "Detect and merge duplicate leads",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /lead/merge/",
    "mcp": null,
    "cli": null,
    "ui": "Duplicate detection prompt / lead merge"
   },
   "check": "GET /lead/{id} after merge shows combined activity count, and the duplicate lead id now 404s",
   "source": "https://close.com/pricing (Duplicate lead detection & merge)"
  },
  {
   "id": "cap-26",
   "group": "Custom Data",
   "capability": "Define custom fields on leads, contacts, and opportunities",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /custom_field/lead/",
    "mcp": "find_contact_custom_fields",
    "cli": null,
    "ui": "Custom fields settings"
   },
   "check": "GET /custom_field/lead/{id} returns the field definition; setting it on a lead and reading the lead shows the value",
   "source": "https://developer.close.com/api/overview (Custom Fields)"
  },
  {
   "id": "cap-27",
   "group": "Custom Data",
   "capability": "Define custom activity types with their own templates and fields",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /custom_activity/",
    "mcp": "find_custom_activities, fetch_custom_activity_instance",
    "cli": null,
    "ui": "Custom activities settings"
   },
   "check": "fetch_custom_activity_instance returns a logged instance with the defined custom field values",
   "source": "https://close.com/pricing (Custom activities)"
  },
  {
   "id": "cap-29",
   "group": "Collaboration",
   "capability": "Comment on and @-mention teammates on activities",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /comment/",
    "mcp": "fetch_comment",
    "cli": null,
    "ui": "Activity timeline comment box"
   },
   "check": "fetch_comment returns the comment body with resolved @-mentions",
   "source": "https://developer.close.com/mcp/tools (Fetch Comment)"
  },
  {
   "id": "cap-30",
   "group": "Mobile",
   "capability": "Manage CRM, make calls/texts, and view reports from the mobile app",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "iOS/Android app"
   },
   "check": "Mobile app shows the same lead record and a call placed from the app appears in the web activity timeline",
   "source": "https://close.com/pricing (Mobile app)"
  },
  {
   "id": "cap-31",
   "group": "Reporting",
   "capability": "View reports and dashboards on calls, emails, and pipeline activity",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /report/ (reporting resource)",
    "mcp": "aggregation",
    "cli": null,
    "ui": "Reports / Insights dashboard"
   },
   "check": "aggregation tool result for a known period matches counts shown on the Insights dashboard",
   "source": "https://developer.close.com (reporting metrics use-case)"
  },
  {
   "id": "cap-32",
   "group": "Integrations/Automation",
   "capability": "Subscribe to real-time events via webhooks",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /webhook/",
    "mcp": null,
    "cli": null,
    "ui": "Developer/API settings webhooks panel"
   },
   "check": "Triggering the subscribed event (e.g. lead update) delivers a POST to the configured endpoint within the event log window",
   "source": "https://developer.close.com/api/resources/webhooks"
  },
  {
   "id": "cap-33",
   "group": "Integrations",
   "capability": "Query the 30-day event log of account changes",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /event/",
    "mcp": null,
    "cli": null,
    "ui": "Activity/event log"
   },
   "check": "GET /event/ returns an entry for a change made moments earlier",
   "source": "https://close.com/pricing (API access + event log); https://developer.close.com/api/resources/events"
  },
  {
   "id": "cap-28",
   "group": "Custom Data",
   "capability": "Define custom objects attached to leads",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "find_custom_object_types, fetch_custom_object_instance",
    "cli": null,
    "ui": "Custom objects settings"
   },
   "check": "fetch_custom_object_instance returns a created instance attached to a given lead id",
   "source": "https://close.com/pricing (Custom objects)"
  },
  {
   "id": "cap-35",
   "group": "Integrations",
   "capability": "Build and publish an OAuth integration listed in the Close integrations directory",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "OAuth 2.0 app registration",
    "mcp": null,
    "cli": null,
    "ui": "Developer > Create OAuth app"
   },
   "check": "Created OAuth app appears with a client_id and can complete an authorization code exchange",
   "source": "https://developer.close.com/integrations/create-an-oauth-app"
  },
  {
   "id": "cap-36",
   "group": "Admin",
   "capability": "Assign user roles and permissions, including lead visibility rules",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "fetch_role, find_groups",
    "cli": null,
    "ui": "Organization settings > Roles"
   },
   "check": "fetch_role returns the permission set; a user in a restricted role cannot view leads outside their assigned visibility group in the UI",
   "source": "https://close.com/pricing (Role-based access & permissions, Lead visibility rules)"
  },
  {
   "id": "cap-37",
   "group": "Admin",
   "capability": "Restrict which users can access Chloe agents, prompts, and settings",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Organization settings > Chloe access controls"
   },
   "check": "A restricted user's UI no longer shows the Chloe settings/prompt screen after the restriction is applied",
   "source": "https://close.com/pricing (Restrict user access to Chloe)"
  },
  {
   "id": "cap-38",
   "group": "Admin",
   "capability": "View and manage billing invoices",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "fetch_invoice, find_invoices",
    "cli": null,
    "ui": "Billing settings"
   },
   "check": "fetch_invoice returns an invoice record matching the amount shown in the billing settings UI",
   "source": "https://developer.close.com/mcp/tools (Fetch Invoice, Find Invoices)"
  }
 ],
 "attempts": [
  {
   "t": "01:16",
   "cap": "discovery",
   "capability": "docs",
   "task": "Find docs, llms.txt, OpenAPI",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "close.com/llms.txt 200; developer.close.com/llms.txt 200 (index, MCP, OpenAPI links); developer.close.com/openapi.json openapi 3.1.0, 159 paths; .md page URLs return text/markdown",
   "notes": "Accept: text/markdown on developer page returns Vary: Accept but no text/markdown content-type observed; .md URL works"
  },
  {
   "t": "01:16",
   "cap": "discovery",
   "capability": "mcp",
   "task": "server/discover on https://mcp.close.com/mcp",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "POST server/discover -> 401 WWW-Authenticate Bearer resource_metadata=https://mcp.close.com/.well-known/oauth-protected-resource/mcp; PRM: AS https://api.close.com, scopes mcp.read, mcp.write_safe, mcp.write_destructive, offline_access",
   "notes": "auth-required; AS metadata has registration_endpoint (DCR), no client_id_metadata_document_supported, no device flow, PKCE S256"
  },
  {
   "t": "01:16",
   "cap": "discovery",
   "capability": "cards and preferences",
   "task": "server card, ai-catalog, agent-card, aipref, auth.md",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "<mcp>/server-card 404; /.well-known/ai-catalog.json 404; /.well-known/agent-card.json 404; /.well-known/agent.json 404; /.well-known/mcp/server-card.json 200 application/json (Close MCP, streamable-http, oauth2); close.com/robots.txt: Content-Signal: ai-train=no, search=yes (Cloudflare Content Signals form); close.com/auth.md 200 text/markdown (prose guide, no WorkOS agent_auth block); /.well-known/oauth-protected-resource on close.com 200"
  },
  {
   "t": "01:17",
   "cap": "pay",
   "capability": "pay public probes",
   "task": "402s, registries, checkout, trial",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "pay_probe.json: no 402 challenges on close.com/api.close.com; x402./mpp./agents. no such host; no mpp/stripe projects/bazaar listings; /.well-known/ucp 404; pricing: free plan, Try for free ... No credit card required; pay_tx.json: refused, no 402 on own domain",
   "notes": "OpenAPI has no x-payment-info; no billing endpoints in OpenAPI paths"
  },
  {
   "t": "02:58",
   "cap": "signup",
   "capability": "sign up",
   "task": "Find a headless sign-up route",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "developer.close.com/llms.txt, auth.md and OpenAPI (159 paths) list no sign-up or organization-create route; auth.md: create keys in Close under Settings → API Keys; no auth.md agent_auth block in AS metadata",
   "notes": "close.com/signup 301 -> app.close.com/signup, which app.close.com robots.txt disallows (Disallow: / with Allow: /signup/); the explicitly allowed /signup/ form was used in the browser"
  },
  {
   "t": "02:58",
   "cap": "signup",
   "capability": "sign up",
   "task": "Sign up in the browser at app.close.com/signup/ with the agent's inbox, AgentDrives Test",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "Email step accepted (Email saved: create your password); after password + Continue the page says: We could not verify this signup. Try a different browser or email support@close.com for assistance. Page carries invisible reCAPTCHA (This page is protected by reCAPTCHA); no visible challenge shown. Screenshot browser/shots/004.png",
   "notes": "Invisible bot check rejected our agent's browser. Fallback domain not applicable: drive started on matfy.com and the rejection names the browser, not the email.",
   "quality": {
    "error_legibility": "vague",
    "recoverable": "no"
   }
  },
  {
   "t": "02:58",
   "cap": "verify",
   "capability": "verify email",
   "task": "Read verification mail",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Not reached: sign-up rejected before any account was created"
  },
  {
   "t": "02:58",
   "cap": "credentials",
   "capability": "API credentials",
   "task": "Get an API key or OAuth token headless",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "key": "create",
   "evidence": "API keys only in the web app (Settings → Developer → API Keys, developer.close.com/api/overview/[redacted].md). OAuth: DCR at https://api.close.com/oauth2/register/ answered 201 headless with client_id (public client, scopes mcp.read mcp.write_destructive mcp.write_safe offline_access); authorize needs a signed-in Close user at app.close.com/oauth2/authorize/ (robots.txt on app.close.com disallows it too); no device flow, no client_credentials grant",
   "notes": "No account, so no key; DCR client registered but cannot be authorized"
  },
  {
   "t": "02:58",
   "cap": "first_call",
   "capability": "first API call",
   "task": "GET /api/v1/me/",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "GET https://api.close.com/api/v1/me/ without credentials -> 401 {\"error\": \"Unauthorized\"} (application/json, not problem+json); RateLimit: limit=100; remaining=100; reset=1 plus ratelimit-limit/x-ratelimit-* legacy headers",
   "quality": {
    "error_legibility": "vague"
   }
  },
  {
   "t": "02:58",
   "cap": "first_action",
   "capability": "first action",
   "task": "Create a lead",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Not reached: no account and no credentials (sign-up rejected by invisible bot check)"
  },
  {
   "t": "03:28",
   "cap": "pay",
   "capability": "pay step",
   "task": "Find how an agent could pay for a paid plan",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "close.com/pricing: Start your free 14-day trial, no credit card required; plans Solo $9, Essentials $35, Growth $99, Scale $139 per user/month billed annually. No 402 on close.com or api.close.com (pay_probe.json), no x402/MPP/UCP/Stripe Projects, no billing endpoints in the 159-path OpenAPI; MCP has read-only get_billing_summary / fetch_invoice / find_invoices, no upgrade tool. Checkout lives inside the app behind sign-up, not reached.",
   "notes": "pay_tx.json: we paid nothing (no 402 on the product domain)"
  },
  {
   "t": "03:28",
   "cap": "cancel",
   "capability": "cancel",
   "task": "Cancel a plan",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "not tested: no plan or trial was started (sign-up rejected). No billing API or MCP billing write tool in the docs; help.close.com/docs/cancel-your-subscription 404"
  },
  {
   "t": "03:28",
   "cap": "delete",
   "capability": "delete account",
   "task": "Delete the account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account was created (sign-up rejected), nothing to delete. OpenAPI has no account/organization delete route."
  },
  {
   "t": "03:28",
   "cap": "credentials",
   "capability": "API credentials",
   "task": "Revoke the DCR client registered in this drive",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "key": "revoke",
   "evidence": "AS metadata lists revocation_endpoint for tokens only; RFC 7591 registration response gave no registration_access_token / registration_client_uri, so the public client [redacted] cannot be deleted by us; it holds no grant and no token"
  }
 ],
 "stale": false,
 "icon": "/logos/close.png",
 "monitored": false,
 "verdict": "A person is needed before any agent work starts: L1 · Needs a person. Our agent's browser signup at app.close.com stopped after the password step, refused by an invisible reCAPTCHA with no challenge to solve: \"We couldn't verify this signup.\" Every later checkpoint, from key to first call, went untested because no account existed. The product's agent surface otherwise holds up well: llms.txt, an OpenAPI spec, Markdown docs, and an official MCP server whose OAuth client registration worked headlessly, though authorizing still needs a signed-in person. The trial needs no card, and paying or leaving were never reached.",
 "page": "https://agentdrives.com/tools/close?via=api"
}