{
 "slug": "freshdesk",
 "name": "Freshdesk",
 "url": "https://freshdesk.com",
 "domain": "freshdesk.com",
 "category": "customer-support",
 "category_name": "Customer support",
 "tested_at": "2026-10-06",
 "run": "20261006T074127Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261001T195052Z",
   "date": "2026-10-01",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": null,
    "driver": null,
    "signed": true,
    "inbox": null,
    "robots": "start"
   },
   "drives": 2
  },
  {
   "run": "20261006T074127Z",
   "date": "2026-10-06",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": null,
    "robots": "start"
   }
  }
 ],
 "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": "part",
   "text": "Some docs agents can read: llms.txt and an MCP server",
   "have": [
    "llms_txt",
    "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/9",
 "scores": {
  "coverage": null,
  "reliability": null,
  "resilience": null,
  "setup": 65,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 65,
  "security": null,
  "standards": []
 },
 "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": null,
  "robots": "start"
 },
 "same_level_drives": 3,
 "drives": 3,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": {
  "rung": "signup",
  "vendor": "Cloudflare managed challenge (Turnstile 'Verify you are human' interstitial)",
  "visible": true,
  "type": "network",
  "human": "",
  "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": "edge"
  },
  "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": "API reference (developers.freshdesk.com/api/), MCP article and FAQ on support.freshdesk.com and www.freshworks.com/llms.txt all fetched headless with no bot check."
  },
  "signup": {
   "status": "human",
   "note": "Cloudflare managed challenge ('Just a moment...', cf-mitigated: challenge, 'Verify you are human' checkbox) on www.freshworks.com/freshdesk/signup/, headless (403) and in a real browser.",
   "via": ""
  },
  "verify": {
   "status": "",
   "note": "No account: sign-up did not get past the Cloudflare challenge.",
   "reached": false
  },
  "credentials": {
   "status": "",
   "note": "The API key is per user, in profile settings, so it needs an account. None exists.",
   "via": "",
   "reached": false
  },
  "first_call": {
   "status": "",
   "note": "No API key. Unauthenticated calls answer 401 JSON (API: invalid_credentials; MCP: unauthorized).",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "No account, so nothing could be created.",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [
    "card (in-app, after the trial)"
   ],
   "rail_ids": [
    "card"
   ],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "no-card trial",
   "note": "No 402, x402, MPP, UCP or registry listing found. The pricing FAQ says sign-up gives a 14-day Enterprise trial and you 'select a plan and pay by credit card' afterwards. No billing API is documented. The checkout could not be seen because sign-up needs a human to clear the Cloudflare challenge first.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "note": "Not tested: no account. The docs (article 225486) say an Account Administrator uses Admin > Account > Account Details > Cancel account > Request cancellation, and 'We will reach out to you'. That is a request in the web UI, with no API route.",
   "docs_grade": "",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "Not tested: no account. The docs say the account and its data are deleted 14 days after the subscription end date, after a cancellation request in the web UI. No API route is documented.",
   "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": true,
   "card_required": null,
   "free_plan": null
  },
  "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": false,
  "cli": false,
  "sdk": false,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": false,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST v2, a single HTML reference page, no OpenAPI. The 401 JSON body is {code, message}, not problem+json. Rate-limit headers are the legacy X-RateLimit-*.",
  "mcp": "official, tenant URL /mcp, API-key auth, Growth plan and up, metered (MCP actions $15 per 1000). The PRM URL in the 401 returns 404.",
  "llms_txt": "www.freshworks.com/llms.txt only, a marketing index. None on freshdesk.com or developers.freshdesk.com.",
  "aipref": "Cloudflare Content Signals: a response header on freshdesk.com and Content-Signal lines in www.freshworks.com/robots.txt. No aipref Content-Usage."
 },
 "can_do": [
  "Read the full API reference and the MCP setup docs headless",
  "Learn the MCP endpoint format, its auth (an API key) and the plan limits from the docs"
 ],
 "cannot_do": [
  {
   "what": "Create a Freshdesk account",
   "why": "The sign-up page sits behind a Cloudflare managed challenge ('Verify you are human') that an automated agent does not pass"
  },
  {
   "what": "Get an API key or use the API/MCP on any ticket, contact or article",
   "why": "The key is per user and needs an account"
  },
  {
   "what": "Start a paid plan",
   "why": "Payment is by card in the app after the trial, and the account itself needs a human"
  },
  {
   "what": "Cancel or delete the account",
   "why": "There is no account. The docs describe only a web-UI cancellation request"
  }
 ],
 "blockers": [
  "Cloudflare managed challenge on www.freshworks.com/freshdesk/signup/ (also /freshdesk/omni/signup/ and freshdesk.com/signup)"
 ],
 "tips_for_owner": [
  "Let verified agents reach the sign-up form",
  "Serve the Protected Resource Metadata the MCP 401 names",
  "Answer server/discover before auth",
  "Publish an OpenAPI file and a Freshdesk llms.txt",
  "Add a billing API for plan changes"
 ],
 "tips_for_agents": [
  "Sign-up needs a human: the Cloudflare challenge on www.freshworks.com stops automated browsers. Have a human create the trial and hand you the per-user API key from profile settings.",
  "Once you have a key, use https://<subdomain>.freshdesk.com/mcp with the header 'Authorization: <api-key>' (Growth plan and up, metered actions), or the REST API at /api/v2 with Basic auth.",
  "Watch the legacy X-RateLimit-Total / X-RateLimit-Remaining headers. The docs say Retry-After comes back only when the limit is hit.",
  "Docs hosts (developers.freshdesk.com, support.freshdesk.com) are not challenged; www.freshworks.com sign-up pages are."
 ],
 "selfhost": null,
 "summary": "Freshdesk has a documented REST API and an official MCP server (API-key auth, Growth plan and up), but an agent cannot get an account: the sign-up page on www.freshworks.com is behind a Cloudflare managed challenge that our signed agent did not pass. Docs are readable headless. The MCP 401 points to Protected Resource Metadata that returns 404, and there is no OpenAPI, no agent payment rail and no billing API.",
 "wall": "Cloudflare challenge on the sign-up page",
 "plan_scope": "",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Freshdesk is a helpdesk ticketing tool with a documented API and an official MCP server. An agent got as far as reading all the docs on its own, but could not create an account because the sign-up page shows a human verification check that the agent cannot pass.",
  "can_do": [
   "Read the full API and MCP setup documentation without any human help",
   "Learn how the API key and MCP connection are supposed to work"
  ],
  "cannot_do": [
   {
    "what": "Create a Freshdesk account",
    "why": "the sign-up page shows a 'prove you are human' check the agent cannot pass"
   },
   {
    "what": "Get an API key or use any ticket, contact or article feature",
    "why": "the key is only available inside an account, which could not be created"
   },
   {
    "what": "Pay for or cancel/delete a plan",
    "why": "there is no account, and cancellation needs the web dashboard"
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Ticketing",
   "capability": "Create a support ticket",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/v2/tickets",
    "mcp": "likely (ticket actions)",
    "cli": null,
    "ui": "Helpdesk > New ticket / customer portal"
   },
   "check": "GET /api/v2/tickets/{id} returns the created ticket with matching subject",
   "source": "https://developers.freshdesk.com/api/#create_ticket"
  },
  {
   "id": "cap-02",
   "group": "Ticketing",
   "capability": "View and list tickets",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/v2/tickets, GET /api/v2/tickets/{id}",
    "mcp": "likely",
    "cli": null,
    "ui": "Helpdesk > Tickets list/detail"
   },
   "check": "GET /api/v2/tickets returns array including the known ticket id",
   "source": "https://developers.freshdesk.com/api/#list_all_tickets"
  },
  {
   "id": "cap-03",
   "group": "Ticketing",
   "capability": "Update a ticket (status, priority, assignment, fields)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PUT /api/v2/tickets/{id}",
    "mcp": "likely",
    "cli": null,
    "ui": "Helpdesk > Ticket detail"
   },
   "check": "GET /api/v2/tickets/{id} reflects new status/priority value",
   "source": "https://developers.freshdesk.com/api/#update_ticket"
  },
  {
   "id": "cap-04",
   "group": "Ticketing",
   "capability": "Delete (trash) a ticket",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "DELETE /api/v2/tickets/{id}",
    "mcp": null,
    "cli": null,
    "ui": "Helpdesk > Ticket detail > Delete"
   },
   "check": "GET /api/v2/tickets/{id} returns 404 or deleted=true in the deleted filter view",
   "source": "https://developers.freshdesk.com/api/#delete_a_ticket"
  },
  {
   "id": "cap-05",
   "group": "Ticketing",
   "capability": "Reply to or add a private note on a ticket",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/v2/tickets/{id}/reply, POST /api/v2/tickets/{id}/notes",
    "mcp": "likely",
    "cli": null,
    "ui": "Helpdesk > Ticket detail > Reply/Note, Threads"
   },
   "check": "GET /api/v2/tickets/{id}/conversations shows the new reply/note entry",
   "source": "https://developers.freshdesk.com/api/#reply_ticket"
  },
  {
   "id": "cap-06",
   "group": "Ticketing",
   "capability": "Resolve customer issues with an AI agent (automated reply/resolution)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "AI Agent Studio / Email AI Agent"
   },
   "check": "Ticket conversation shows an AI-agent-authored resolution and status changes to resolved without agent reply",
   "source": "https://www.freshworks.com/freshdesk/; https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-07",
   "group": "Ticketing",
   "capability": "Route and assign tickets via business rules (dispatch, automations, round robin/skill-based)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/v2/automations",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Workflows > Ticket dispatch/Automations"
   },
   "check": "A new ticket matching the rule arrives already assigned to the configured group/agent",
   "source": "https://developers.freshdesk.com/api/#automations; https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-08",
   "group": "Self-service",
   "capability": "Publish and manage knowledge base articles",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/v2/solutions/articles",
    "mcp": "likely (audit/update content)",
    "cli": null,
    "ui": "Admin > Knowledge Base / Solutions"
   },
   "check": "GET /api/v2/solutions/articles/{id} shows updated title/body and status=published",
   "source": "https://developers.freshdesk.com/api/#create_solution_article"
  },
  {
   "id": "cap-09",
   "group": "Ticketing",
   "capability": "Generate reports and dashboards on helpdesk performance",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Analytics > Reports/Dashboards"
   },
   "check": "A custom report/dashboard shows ticket volume and SLA metrics for the account",
   "source": "https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-10",
   "group": "Contacts",
   "capability": "Manage contacts (create, view, update, delete, restore, merge)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST/GET/PUT/DELETE /api/v2/contacts, PUT /api/v2/contacts/{id}/restore, PUT /api/v2/contacts/merge",
    "mcp": "likely",
    "cli": null,
    "ui": "Contacts"
   },
   "check": "GET /api/v2/contacts/{id} reflects the created/updated/merged contact record",
   "source": "https://developers.freshdesk.com/api/#contacts"
  },
  {
   "id": "cap-11",
   "group": "Contacts",
   "capability": "Manage companies and link tickets/contacts to them",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST/GET/PUT/DELETE /api/v2/companies",
    "mcp": "likely",
    "cli": null,
    "ui": "Contacts > Companies"
   },
   "check": "GET /api/v2/companies/{id} shows the company and associated contacts/tickets",
   "source": "https://developers.freshdesk.com/api/#companies"
  },
  {
   "id": "cap-12",
   "group": "Ticketing",
   "capability": "Tag and categorize tickets/contacts/companies",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "tags field on POST/PUT /api/v2/tickets",
    "mcp": "likely (enrich/tag at scale)",
    "cli": null,
    "ui": "Ticket detail > Tags"
   },
   "check": "GET /api/v2/tickets/{id} tags array contains the added tag",
   "source": "https://developers.freshdesk.com/api/#ticket_attributes"
  },
  {
   "id": "cap-13",
   "group": "Ticketing",
   "capability": "Filter / search tickets, contacts, and companies",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/v2/search/tickets, GET /api/v2/tickets?filter=, GET /api/v2/contacts?...",
    "mcp": "likely",
    "cli": null,
    "ui": "Helpdesk > Search/Filters"
   },
   "check": "GET /api/v2/tickets with filter query returns only matching tickets",
   "source": "https://developers.freshdesk.com/api/#filter_tickets"
  },
  {
   "id": "cap-14",
   "group": "Ticketing",
   "capability": "Merge duplicate tickets",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "PUT /api/v2/tickets/merge",
    "mcp": null,
    "cli": null,
    "ui": "Ticket detail > Merge"
   },
   "check": "GET /api/v2/tickets/{secondary_id} shows the ticket closed/merged into primary",
   "source": "https://developers.freshdesk.com/api/#ticket_merge"
  },
  {
   "id": "cap-15",
   "group": "Ticketing",
   "capability": "Bulk update or bulk delete tickets",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/v2/tickets/bulk_update, POST /api/v2/tickets/bulk_delete",
    "mcp": "likely (find/update groups of tickets)",
    "cli": null,
    "ui": "Helpdesk > Ticket list > Bulk actions"
   },
   "check": "GET on each affected ticket id shows the bulk-applied field change",
   "source": "https://developers.freshdesk.com/api/#bulk_update_tickets"
  },
  {
   "id": "cap-16",
   "group": "Ticketing",
   "capability": "Watch a ticket for updates",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/v2/tickets/{id}/watch",
    "mcp": null,
    "cli": null,
    "ui": "Ticket detail > Watch"
   },
   "check": "GET /api/v2/tickets/{id}/watchers lists the watching agent",
   "source": "https://developers.freshdesk.com/api/#add_watcher"
  },
  {
   "id": "cap-17",
   "group": "Ticketing",
   "capability": "Forward a ticket to an external email address",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/v2/tickets/{id}/forward",
    "mcp": null,
    "cli": null,
    "ui": "Ticket detail > Forward"
   },
   "check": "GET /api/v2/tickets/{id}/conversations shows a forward entry with the external recipient",
   "source": "https://developers.freshdesk.com/api/#forward_tickets"
  },
  {
   "id": "cap-18",
   "group": "Ticketing",
   "capability": "Track time spent on a ticket",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST/GET/PUT/DELETE /api/v2/tickets/{id}/time_entries",
    "mcp": null,
    "cli": null,
    "ui": "Ticket detail > Time tracking"
   },
   "check": "GET /api/v2/tickets/{id}/time_entries lists the logged entry with duration",
   "source": "https://developers.freshdesk.com/api/#create_time_entry"
  },
  {
   "id": "cap-19",
   "group": "Ticketing",
   "capability": "Create and use canned responses / ticket templates",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /api/v2/canned_responses",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Canned Responses; Ticket detail > Insert template"
   },
   "check": "GET /api/v2/canned_responses/{id} returns the saved response text; ticket created from template has prefilled fields",
   "source": "https://developers.freshdesk.com/api/#create_canned_response; https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-20",
   "group": "Self-service",
   "capability": "Run community/discussion forums for customers",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /api/v2/discussions/topics, POST /api/v2/discussions/forums",
    "mcp": null,
    "cli": null,
    "ui": "Customer portal > Community"
   },
   "check": "GET /api/v2/discussions/topics/{id} shows the created topic and replies",
   "source": "https://developers.freshdesk.com/api/#discussions; https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-21",
   "group": "Self-service",
   "capability": "Collect CSAT survey responses on resolved tickets",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/v2/surveys/satisfaction_ratings, POST /api/v2/tickets/{id}/csat_response",
    "mcp": null,
    "cli": null,
    "ui": "Ticket detail > Satisfaction survey"
   },
   "check": "GET /api/v2/surveys/satisfaction_ratings includes the submitted rating for the ticket",
   "source": "https://developers.freshdesk.com/api/#customer-satisfaction_legacy"
  },
  {
   "id": "cap-22",
   "group": "Administration",
   "capability": "Manage agents, roles and groups",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST/GET/PUT/DELETE /api/v2/agents, GET /api/v2/roles, POST/GET/PUT/DELETE /api/v2/groups",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Team"
   },
   "check": "GET /api/v2/agents/{id} reflects updated role/group assignment",
   "source": "https://developers.freshdesk.com/api/#agents; https://developers.freshdesk.com/api/#groups"
  },
  {
   "id": "cap-23",
   "group": "Administration",
   "capability": "Define agent skills for skill-based routing",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST/GET/PUT/DELETE /api/v2/skills",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Skill-based routing"
   },
   "check": "GET /api/v2/skills/{id} shows the configured skill and matching agents",
   "source": "https://developers.freshdesk.com/api/#skills; https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-24",
   "group": "Administration",
   "capability": "Set up email mailboxes for inbound/outbound ticket channels",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST/GET/PUT/DELETE /api/v2/email/mailboxes",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Email"
   },
   "check": "GET /api/v2/email/mailboxes/{id} shows the configured address and routing group",
   "source": "https://developers.freshdesk.com/api/#create_email_mailbox"
  },
  {
   "id": "cap-25",
   "group": "Administration",
   "capability": "Configure SLA policies and business hours",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST/GET /api/v2/sla_policies, GET /api/v2/business_hours",
    "mcp": null,
    "cli": null,
    "ui": "Admin > SLA / Business hours"
   },
   "check": "GET /api/v2/sla_policies/{id} shows the configured response/resolution targets applied to a new ticket's due_by",
   "source": "https://developers.freshdesk.com/api/#sla-policies; https://developers.freshdesk.com/api/#business-hours"
  },
  {
   "id": "cap-26",
   "group": "Administration",
   "capability": "Invite external collaborators on a ticket",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "agent_type param on POST /api/v2/agents",
    "mcp": null,
    "cli": null,
    "ui": "Ticket detail > Add collaborator"
   },
   "check": "GET /api/v2/tickets/{id} shows the collaborator in participant list",
   "source": "https://www.freshworks.com/freshdesk/pricing/; https://developers.freshdesk.com/api/#create_agent"
  },
  {
   "id": "cap-27",
   "group": "AI",
   "capability": "Draft/enhance agent replies with AI Copilot (response, summarization, resolution, sentiment, translation)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Ticket detail > Freddy AI Copilot panel"
   },
   "check": "Ticket detail shows AI-suggested reply/summary/translation rendered in the Copilot panel",
   "source": "https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-28",
   "group": "AI",
   "capability": "Get proactive AI insights with root-cause analysis on support metrics",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Analytics > Freddy AI Insights"
   },
   "check": "Insights dashboard shows a generated alert with identified root cause for a metric",
   "source": "https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-30",
   "group": "Automation",
   "capability": "Automate cross-app workflows via connector apps",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Apps > Connectors / Workflow automator"
   },
   "check": "A configured connector task run shows a completed execution log with the external system update",
   "source": "https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-31",
   "group": "Self-service",
   "capability": "Customize and translate the customer portal and knowledge base",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Portal settings / Multilingual KB"
   },
   "check": "Customer portal renders the custom logo/brand colors and the selected article language",
   "source": "https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-32",
   "group": "Administration",
   "capability": "Set up single sign-on (SAML) for agents",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Security > SSO"
   },
   "check": "Agent login redirects to the configured SAML identity provider and returns an authenticated session",
   "source": "https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-33",
   "group": "Administration",
   "capability": "Restrict access with allowed domains and IP whitelisting",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Security > Allowed domains/IP"
   },
   "check": "Portal/agent login from a non-whitelisted IP is blocked",
   "source": "https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-34",
   "group": "Administration",
   "capability": "View audit logs of admin configuration changes",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Audit log"
   },
   "check": "Audit log lists the recent automation/agent-profile change with actor and timestamp",
   "source": "https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-35",
   "group": "Administration",
   "capability": "Use a sandbox to test configuration changes",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Sandbox"
   },
   "check": "A change made in the sandbox instance is not reflected in the production account until promoted",
   "source": "https://www.freshworks.com/freshdesk/pricing/"
  },
  {
   "id": "cap-36",
   "group": "Administration",
   "capability": "Install third-party app integrations (Slack, Teams, Salesforce, Jira, Shopify, etc.)",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Apps marketplace"
   },
   "check": "Installed app appears under Admin > Apps with active status and the integration's data appears on a ticket",
   "source": "https://www.freshworks.com/freshdesk/"
  },
  {
   "id": "cap-37",
   "group": "Administration",
   "capability": "Purchase day passes for temporary agent access",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Billing > Day passes"
   },
   "check": "A day-pass agent can log in and is listed with a pass expiry timestamp",
   "source": "https://www.freshworks.com/freshdesk/pricing/"
  }
 ],
 "attempts": [
  {
   "t": "01:39",
   "cap": "discovery",
   "capability": "robots/aipref",
   "task": "Fetch robots.txt and Content-Usage/Content-signal",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "freshdesk.com/robots.txt 200 (S3/CloudFront): User-agent: * Disallow: (empty) + paths */thank-you, */lp/; no Content-Usage line; response header 'content-signal: search=yes, ai-input=yes, ai-train=no, use=reference'. www.freshworks.com/robots.txt has lines 'Content-Signal: ai-train=no', 'Content-Signal: search=yes', 'Content-Signal: ai-input=yes' (Cloudflare Content Signals, not aipref).",
   "notes": ""
  },
  {
   "t": "01:39",
   "cap": "discovery",
   "capability": "llms.txt",
   "task": "Find llms.txt",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "freshdesk.com/llms.txt 404 (redirects to freshworks.com/freshdesk/llms.txt/ 404); developers.freshdesk.com/llms.txt 404; www.freshworks.com/llms.txt 200 text/plain, H1 '# Freshworks Website & Docs for AI Systems', Last Updated 2025-12-17, marketing index linking developers.freshworks.com.",
   "notes": ""
  },
  {
   "t": "01:39",
   "cap": "discovery",
   "capability": "well-known cards",
   "task": "AI catalog, A2A card, MCP card, UCP, OAuth metadata, auth.md, SKILL.md",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "freshdesk.com/.well-known/{ai-catalog.json,agent-card.json,agent.json,mcp/server-card.json,ucp,oauth-protected-resource,oauth-authorization-server} all 404 text/html; /auth.md and /SKILL.md 404; www.freshworks.com/.well-known/ai-catalog.json 403 application/xml.",
   "notes": ""
  },
  {
   "t": "01:39",
   "cap": "discovery",
   "capability": "markdown docs",
   "task": "Accept: text/markdown on developers.freshdesk.com/api/ and .md URL",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Accept: text/markdown -> content-type text/html (S3), no Vary: Accept; developers.freshdesk.com/api.md 404.",
   "notes": ""
  },
  {
   "t": "01:39",
   "cap": "discovery",
   "capability": "pay subdomains",
   "task": "x402./mpp./agents.freshdesk.com",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "All 404 text/html 'no helpdesk' page (wildcard account subdomains), no 402.",
   "notes": ""
  },
  {
   "t": "01:39",
   "cap": "discovery",
   "capability": "mcp docs",
   "task": "Find MCP server",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "support.freshdesk.com article 50000012670 (modified 5 Oct 2026): official MCP at https://<subdomain>.freshdesk.com/mcp, transport http, auth 'API key only', header 'Authorization: <api-key>'. Supported plans table: Growth 25/min 1,200 actions/yr, Pro 50/6,000, Enterprise 100/12,000; GA since 10 Sep 2026.",
   "notes": ""
  },
  {
   "t": "01:39",
   "cap": "signup",
   "capability": "Sign up",
   "task": "GET www.freshworks.com/freshdesk/signup/ headless",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Pricing page on same host returned 200.",
   "notes": "",
   "quality": {
    "error_legibility": "vague",
    "recoverable": "no"
   }
  },
  {
   "t": "02:58",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Open signup form in real browser (pw)",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "after 12 s still interstitial. freshdesk.com/signup and /freshdesk/omni/signup/ also 403 cf challenge headless.",
   "notes": "",
   "quality": {
    "error_legibility": "vague",
    "recoverable": "no"
   }
  },
  {
   "t": "02:58",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Ask a human to sign up in their own browser",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "(Cloudflare Turnstile interstitial on the signup page).",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "discovery",
   "capability": "mcp server/discover",
   "task": "POST server/discover (2026-07-28) to https://support.freshdesk.com/mcp (Freshdesk's own helpdesk; no account of ours exists)",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "HTTP 401 application/json {\"error\": \"unauthorized\"}, header 'www-authenticate: Bearer resource_metadata=\"https://support.freshdesk.com/.well-known/oauth-protected-resource/mcp\"'. That PRM URL and the root /.well-known/oauth-protected-resource both return 404 text/html. Legacy initialize unauthenticated: 401 same body. <endpoint>/server-card: 401 JSON. Version could not be determined without an API key.",
   "notes": "",
   "quality": {
    "error_legibility": "vague"
   }
  },
  {
   "t": "05:41",
   "cap": "discovery",
   "capability": "api unauth",
   "task": "GET https://support.freshdesk.com/api/v2/tickets without credentials",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "401 application/json; charset=utf-8 {\"code\":\"invalid_credentials\",\"message\":\"You have to be logged in to perform this action.\"}; headers x-ratelimit-total: 5000.0, x-ratelimit-remaining, x-ratelimit-used-currentrequest (legacy X-RateLimit-*, not RateLimit/RateLimit-Policy); not problem+json.",
   "notes": "",
   "quality": {
    "error_legibility": "clear",
    "docs_match": "match"
   }
  },
  {
   "t": "05:41",
   "cap": "discovery",
   "capability": "api docs",
   "task": "Read API reference",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "developers.freshdesk.com/api/ 200 (single 3.2 MB HTML page): sections Rate Limit, Authentication, Retry-After header documented; no OpenAPI/Swagger file referenced; no mention of idempotency or sandbox.",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "docs",
   "capability": "Find docs",
   "task": "Locate API reference and MCP docs headless",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "support.freshdesk.com MCP article and FAQ 200; www.freshworks.com/llms.txt 200. No Cloudflare challenge on docs hosts.",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "pay",
   "capability": "Pay step",
   "task": "Probe 402s, well-knowns, registries, pricing",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "No 402 anywhere: x402./mpp./agents.freshdesk.com 404 'no helpdesk'; /.well-known/ucp 404; no x402/MPP mention; mpp.dev/api/services (137 services) and CDP x402 Bazaar contain no 'freshdesk'/'freshworks'; projects.dev page no match. Pricing page (200): plans Growth $19, Pro $55, Enterprise $89 /agent/month billed annually, no free plan listed; FAQ 'When you sign up, you instantly get access to our Enterprise plan for 14 days ... You can then select a plan and pay by credit card'. No billing/subscription endpoint in API reference ('subscription' 0 hits). Checkout not reachable: sign-up behind Cloudflare challenge.",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "verify",
   "capability": "Verify email",
   "task": "Verify email for our own Freshdesk account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by Cloudflare 'Verify you are human' interstitial on www.freshworks.com/freshdesk/signup/. API key is per-user in profile settings (docs), so it requires an account.",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "credentials",
   "capability": "Get API key",
   "task": "Get API key for our own Freshdesk account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by Cloudflare 'Verify you are human' interstitial on www.freshworks.com/freshdesk/signup/. API key is per-user in profile settings (docs), so it requires an account.",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "first_call",
   "capability": "First API/MCP call",
   "task": "First API/MCP call for our own Freshdesk account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by Cloudflare 'Verify you are human' interstitial on www.freshworks.com/freshdesk/signup/. API key is per-user in profile settings (docs), so it requires an account.",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "first_action",
   "capability": "First real action",
   "task": "First real action for our own Freshdesk account",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by Cloudflare 'Verify you are human' interstitial on www.freshworks.com/freshdesk/signup/. API key is per-user in profile settings (docs), so it requires an account.",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "cancel",
   "capability": "Cancel",
   "task": "Cancel plan",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account or plan was created. Docs (support.freshdesk.com article 225486, fetched live): 'Navigate to Admin > Account > Account Details ... click on the Cancel account button ... Request cancellation. We will reach out to you'. Web UI request, no API route found in the API reference.",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "delete",
   "capability": "Delete account",
   "task": "Delete account and data",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account was created. Same article: 'Freshdesk permanently deletes your account and account data 14 days after your subscription end date'; delete is the web-UI cancellation request; no API endpoint documented.",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "cap-01",
   "capability": "Create a support ticket",
   "task": "Attempt via POST /api/v2/tickets",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Not attempted on a live account: no Freshdesk account could be created (Cloudflare interstitial on sign-up). Route documented: POST /api/v2/tickets",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "cap-02",
   "capability": "View and list tickets",
   "task": "Attempt via GET /api/v2/tickets, GET /api/v2/tickets/{id}",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Not attempted on a live account: no Freshdesk account could be created (Cloudflare interstitial on sign-up). Route documented: GET /api/v2/tickets, GET /api/v2/tickets/{id}",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "cap-03",
   "capability": "Update a ticket (status, priority, assignment, fields)",
   "task": "Attempt via PUT /api/v2/tickets/{id}",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Not attempted on a live account: no Freshdesk account could be created (Cloudflare interstitial on sign-up). Route documented: PUT /api/v2/tickets/{id}",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "cap-04",
   "capability": "Delete (trash) a ticket",
   "task": "Attempt via DELETE /api/v2/tickets/{id}",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Not attempted on a live account: no Freshdesk account could be created (Cloudflare interstitial on sign-up). Route documented: DELETE /api/v2/tickets/{id}",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "cap-05",
   "capability": "Reply to or add a private note on a ticket",
   "task": "Attempt via POST /api/v2/tickets/{id}/reply, POST /api/v2/tickets/{id}/notes",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Not attempted on a live account: no Freshdesk account could be created (Cloudflare interstitial on sign-up). Route documented: POST /api/v2/tickets/{id}/reply, POST /api/v2/tickets/{id}/notes",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "cap-06",
   "capability": "Resolve customer issues with an AI agent (automated reply/resolution)",
   "task": "Attempt via MCP/UI",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Not attempted on a live account: no Freshdesk account could be created (Cloudflare interstitial on sign-up). Route documented: UI only",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "cap-07",
   "capability": "Route and assign tickets via business rules (dispatch, automations, round robin/skill-based)",
   "task": "Attempt via POST /api/v2/automations",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Not attempted on a live account: no Freshdesk account could be created (Cloudflare interstitial on sign-up). Route documented: POST /api/v2/automations",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "cap-08",
   "capability": "Publish and manage knowledge base articles",
   "task": "Attempt via POST /api/v2/solutions/articles",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Not attempted on a live account: no Freshdesk account could be created (Cloudflare interstitial on sign-up). Route documented: POST /api/v2/solutions/articles",
   "notes": ""
  },
  {
   "t": "05:41",
   "cap": "cap-09",
   "capability": "Generate reports and dashboards on helpdesk performance",
   "task": "Attempt via MCP/UI",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Not attempted on a live account: no Freshdesk account could be created (Cloudflare interstitial on sign-up). Route documented: UI only",
   "notes": ""
  }
 ],
 "stale": false,
 "icon": "/logos/freshdesk.png",
 "monitored": false,
 "verdict": "Needs a person: our agent reaches the signup page but stops there, behind a Cloudflare managed challenge, \"Verify you are human,\" on the Freshworks signup form, headless and in a browser alike. With no account it cannot reach the key page, the API or the MCP server, so the first call and the first piece of work never happen. Docs read fine without a person: the API reference, the MCP article and llms.txt all load headless. Paying and cancelling stay out of reach too: the pricing page describes a trial and a credit-card plan, and cancelling means a person filing a request in the admin panel, with no API route for either.",
 "page": "https://agentdrives.com/tools/freshdesk?via=api"
}