{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "slug": "letme",
    "name": "letme",
    "vendor": "Anchor Terminal",
    "vendorUrl": "https://letme.dev",
    "kind": "http-api",
    "category": "aggregator",
    "summary": "letme.dev selects tools for a task using Anchor Terminal's grades.",
    "url": "https://www.anchorterminal.com/tools/letme",
    "markdownUrl": "https://www.anchorterminal.com/tools/letme.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/letme.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/letme.json",
    "license": "Closed source, with no public repository found. The directory data it reads is CC BY 4.0.",
    "transports": [
      "http",
      "streamable-http"
    ],
    "remoteUrl": "https://letme.dev",
    "packages": [],
    "auth": "none",
    "authNotes": "Asking for a pick needs no key and no account. A self-issued letme key for calling through letme is specified on /letme/#key and not issued yet.",
    "pricing": "free",
    "pricingNotes": "Picking is free and needs no key. Calling through letme, at the vendor's own price with partner vendors paying 15 per cent of what they bill, comes later (https://www.anchorterminal.com/letme/#costs).",
    "priceSummary": "Free",
    "where": "hosted",
    "x402": {
      "level": "no",
      "evidence": "No payments yet. Top-ups by x402 are specified for when calling through letme opens (https://www.anchorterminal.com/letme/#pay).",
      "endpoints": []
    },
    "toolCount": 2,
    "popularity": {
      "githubStars": null,
      "npmWeekly": null,
      "pypiWeekly": null,
      "asOf": "2026-10-02"
    },
    "docsUrl": "https://www.anchorterminal.com/letme/",
    "llmsTxt": "https://letme.dev/llms.txt",
    "openapi": "https://letme.dev/openapi.json",
    "capabilities": [
      "agent.tools"
    ],
    "tags": [
      "hosted",
      "free",
      "no-signup",
      "mcp",
      "llms-txt",
      "uk"
    ],
    "lastRelease": "2026-10-02",
    "graded": true,
    "own": true,
    "disclosure": "letme is Anchor Terminal's own product, run by the same company and founder. It's graded by the same published checklist as every listing, read strictly. Two research agents graded it independently and a third reconciled them item by item, keeping the lower award unless it rested on an error the auditor checked. The review panel doesn't review it, and letme never picks it.",
    "anchor": {
      "graded": true,
      "score": 36.7,
      "grade": "F",
      "agentReady": false,
      "rank": 437,
      "ranked": true,
      "rankOf": 452,
      "categoryRank": 3,
      "methodology": "0.3",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 54,
        "maintenance": 35,
        "payments": 50,
        "reliability": 10,
        "schema": 68,
        "security": 23,
        "transparency": 40
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 10,
          "points": 2,
          "reason": "Read with the hosted checklist, and strictly, because letme is ours. No status page for letme.dev (letme.dev/status and anchorterminal.com/status answer 404, and neither /live/ nor /api/v1/workers.json lists letme), so 0 for a status page. No incident history to read, so 5 by the rule. No rate limit for picking is published, and the 5, 20 and 100 requests a second on /letme/ belong to a letme key that isn't issued, so read strictly 0. The Agent Skill at letme.dev/skills/letme/SKILL.md, linked from llms.txt, documents a 503 with Retry-After while letme is starting and says to wait and retry once, and nothing documents a 429 or how picking is limited (5 of 15, read strictly). Free with no paid tier, so no SLA (0). Every answer carries \"live\": false and calling.open false, so read strictly the surface isn't generally available (0). 10 in all."
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 68,
          "points": 11.05,
          "reason": "OpenAPI 3.1 at letme.dev/openapi.json covers GET and POST /, GET /{target}, /llms.txt, /words.json and POST /mcp, with typed parameters and Error and NotFound schemas. The MCP tools pick and about couldn't be listed (GET /mcp answers 405 and our fetcher can't POST), so read strictly 20 of 25. llms.txt, the Agent Skill and Markdown answers with a .md suffix or Accept: text/markdown (10). The Skill's description says when to use letme (\"Use when an agent needs a tool for a job\") and four Don't lines say when not to, and each OpenAPI operation says what it resolves, with the MCP tool descriptions unseen (14 of 20). minGrade, keyless and x402 are enums and n is bounded 0 to 10, but where, kind, auth and pricing are comma-separated strings with the allowed values only in prose, and the POST body types the same fields as arrays (9 of 15). Every parameter has an example, 400 and 404 have schemas that name the bad parameter or suggest alternatives, and the Skill documents the 503 with Retry-After, but there are no response examples and no 429 (10 of 15, read strictly). The changelog has dated letme entries on 1 and 2 October 2026, but the OpenAPI version is a build stamp (2026.10.02-1614) and letme.dev has no version in the path and no compatibility promise (5 of 15, read strictly). 68 in all."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 54,
          "points": 8.78,
          "reason": "Context cost 12 of 25. An answer can be cut to the pick with n=0 and asked for as Markdown, but there's no field selection, and every answer repeats the directory, rule and filters blocks beside each listing's connect snippets, notes and prices. The two MCP tools would be few, but their definitions couldn't be read, so this is scored as an API. Filtering 14 of 20, read strictly. Ten filters (where, kind, auth, keyless, x402, pricing, max, minGrade, not, n), up to ten alternatives and no paging. Errors 10 of 20, read strictly. The OpenAPI and the Skill say a 400 names the bad parameter and a 404 carries suggestions and a search link, and the status codes we saw matched (a bad minGrade gave 400, /localghost gave 404), but our fetcher drops 4xx bodies, so we couldn't read one. Safe retries 10 of 20. Every address is a read with no side effect, the Skill says to wait for Retry-After and retry once on a 503, and llms.txt documents not= to fall back after a failed call. MCP readOnlyHint annotations unchecked. Defaults 8 of 15. No parameter is required on GET and n defaults to 3, but there's no SDK in any language. 54 in all."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 23,
          "points": 4.03,
          "reason": "Read strictly. Credential model 0 of 30. Picking needs no credential, so there's nothing to grade, and the self-issued Ed25519 letme key on /letme/ isn't issued and earns nothing. Least privilege 12 of 20. Every live address is a read and the OpenAPI lists no write, so no destructive action exists, but there are no modes or scopes to choose and the MCP tool list is unchecked. Prompt injection 5 of 15. Answers carry auth notes, agent notes and shell or config snippets written from vendors' docs, among them a Tavily endpoint with the key in the query string (https://mcp.tavily.com/mcp/?tavilyApiKey=\u003ckey\u003e in the web.search answer), and nothing tells an agent to treat them as data. Operator visibility 0 of 15. No keys, no usage view and no per-call log. Security programme 6 of 20. security.txt and a disclosure policy (acknowledgement within two working days, a fix note published) on anchorterminal.com, none on letme.dev (404), no bounty, no SOC 2 or ISO 27001 and no advisories. The 2 October changelog reports an independent review of letme's POST with five medium and eleven low findings fixed, which is our own claim and earns nothing. 23 in all."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 50,
          "points": 6.25,
          "reason": "Scored on the live surface only. No machine payment protocol on letme's own endpoints, and the x402 top-ups specified for when calling opens earn nothing (0 of 40). Pricing 10 of 20, read strictly. Picking is free and that's stated on letme.dev, in llms.txt and in the Skill, but letme's own price schedule for calling isn't live, so only the zero price counts. Free use with no card 20, since picking needs no card, account or key. Autonomous onboarding 20, since there's no signup and every call we made was keyless. 50 in all."
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 35,
          "points": 3.06,
          "reason": "Read as a closed service. Last published change on 2 October 2026, the changelog entry that made letme's price step compare like with like and moved 76 of 283 picks (30). Dated letme entries on 1 and 2 October 2026 only, and the 25 September entry concerned its predecessor, Anchor Proxy, so read strictly 0 of 20. Responsiveness 5 of 15. A public changelog, contact addresses and a contact endpoint, but no public tracker, no reply seen, and the GitHub link on /letme/ and /about/ answers 404. Not in the official MCP registry (a search for letme returned letmepost and letmediff) and no SDKs (0). No public source, package or CI to judge (0). 35 in all."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 40,
          "points": 3.5,
          "note": "editorial 15, provenance 65",
          "reason": "Editorial half only. Closed source, and github.com/anchorterminal answers 404 although /letme/ and /about/ link to it. The terms are three sentences on /about/#terms (data under CC BY 4.0, assessments as opinions, API use subject to the docs' rate limits), and the OpenAPI points to /letme/ as its terms of service. Neither says what letme.dev guarantees or logs for a pick, so read strictly 5 of 30. Data handling 10 of 30. /about/ says the website sets no cookies and keeps aggregate server logs rotated after 30 days, and says in the future tense that letme will log method, tool, timing, status class, size and the calling key. Nothing says what letme.dev logs for a pick today or whether job text sent in ?q= is kept. The 90-day deprecation notice on /docs/ covers /api/v1/, not letme.dev (0 of 20, read strictly). No hosting provider, subprocessors or data location named (0). 15 in all."
        }
      ],
      "assessment": {
        "date": "2026-10-02",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "Context cost 12 of 25. An answer can be cut to the pick with n=0 and asked for as Markdown, but there's no field selection, and every answer repeats the directory, rule and filters blocks beside each listing's connect snippets, notes and prices. The two MCP tools would be few, but their definitions couldn't be read, so this is scored as an API. Filtering 14 of 20, read strictly. Ten filters (where, kind, auth, keyless, x402, pricing, max, minGrade, not, n), up to ten alternatives and no paging. Errors 10 of 20, read strictly. The OpenAPI and the Skill say a 400 names the bad parameter and a 404 carries suggestions and a search link, and the status codes we saw matched (a bad minGrade gave 400, /localghost gave 404), but our fetcher drops 4xx bodies, so we couldn't read one. Safe retries 10 of 20. Every address is a read with no side effect, the Skill says to wait for Retry-After and retry once on a 503, and llms.txt documents not= to fall back after a failed call. MCP readOnlyHint annotations unchecked. Defaults 8 of 15. No parameter is required on GET and n defaults to 3, but there's no SDK in any language. 54 in all.",
          "maintenance": "Read as a closed service. Last published change on 2 October 2026, the changelog entry that made letme's price step compare like with like and moved 76 of 283 picks (30). Dated letme entries on 1 and 2 October 2026 only, and the 25 September entry concerned its predecessor, Anchor Proxy, so read strictly 0 of 20. Responsiveness 5 of 15. A public changelog, contact addresses and a contact endpoint, but no public tracker, no reply seen, and the GitHub link on /letme/ and /about/ answers 404. Not in the official MCP registry (a search for letme returned letmepost and letmediff) and no SDKs (0). No public source, package or CI to judge (0). 35 in all.",
          "payments": "Scored on the live surface only. No machine payment protocol on letme's own endpoints, and the x402 top-ups specified for when calling opens earn nothing (0 of 40). Pricing 10 of 20, read strictly. Picking is free and that's stated on letme.dev, in llms.txt and in the Skill, but letme's own price schedule for calling isn't live, so only the zero price counts. Free use with no card 20, since picking needs no card, account or key. Autonomous onboarding 20, since there's no signup and every call we made was keyless. 50 in all.",
          "reliability": "Read with the hosted checklist, and strictly, because letme is ours. No status page for letme.dev (letme.dev/status and anchorterminal.com/status answer 404, and neither /live/ nor /api/v1/workers.json lists letme), so 0 for a status page. No incident history to read, so 5 by the rule. No rate limit for picking is published, and the 5, 20 and 100 requests a second on /letme/ belong to a letme key that isn't issued, so read strictly 0. The Agent Skill at letme.dev/skills/letme/SKILL.md, linked from llms.txt, documents a 503 with Retry-After while letme is starting and says to wait and retry once, and nothing documents a 429 or how picking is limited (5 of 15, read strictly). Free with no paid tier, so no SLA (0). Every answer carries \"live\": false and calling.open false, so read strictly the surface isn't generally available (0). 10 in all.",
          "schema": "OpenAPI 3.1 at letme.dev/openapi.json covers GET and POST /, GET /{target}, /llms.txt, /words.json and POST /mcp, with typed parameters and Error and NotFound schemas. The MCP tools pick and about couldn't be listed (GET /mcp answers 405 and our fetcher can't POST), so read strictly 20 of 25. llms.txt, the Agent Skill and Markdown answers with a .md suffix or Accept: text/markdown (10). The Skill's description says when to use letme (\"Use when an agent needs a tool for a job\") and four Don't lines say when not to, and each OpenAPI operation says what it resolves, with the MCP tool descriptions unseen (14 of 20). minGrade, keyless and x402 are enums and n is bounded 0 to 10, but where, kind, auth and pricing are comma-separated strings with the allowed values only in prose, and the POST body types the same fields as arrays (9 of 15). Every parameter has an example, 400 and 404 have schemas that name the bad parameter or suggest alternatives, and the Skill documents the 503 with Retry-After, but there are no response examples and no 429 (10 of 15, read strictly). The changelog has dated letme entries on 1 and 2 October 2026, but the OpenAPI version is a build stamp (2026.10.02-1614) and letme.dev has no version in the path and no compatibility promise (5 of 15, read strictly). 68 in all.",
          "security": "Read strictly. Credential model 0 of 30. Picking needs no credential, so there's nothing to grade, and the self-issued Ed25519 letme key on /letme/ isn't issued and earns nothing. Least privilege 12 of 20. Every live address is a read and the OpenAPI lists no write, so no destructive action exists, but there are no modes or scopes to choose and the MCP tool list is unchecked. Prompt injection 5 of 15. Answers carry auth notes, agent notes and shell or config snippets written from vendors' docs, among them a Tavily endpoint with the key in the query string (https://mcp.tavily.com/mcp/?tavilyApiKey=\u003ckey\u003e in the web.search answer), and nothing tells an agent to treat them as data. Operator visibility 0 of 15. No keys, no usage view and no per-call log. Security programme 6 of 20. security.txt and a disclosure policy (acknowledgement within two working days, a fix note published) on anchorterminal.com, none on letme.dev (404), no bounty, no SOC 2 or ISO 27001 and no advisories. The 2 October changelog reports an independent review of letme's POST with five medium and eleven low findings fixed, which is our own claim and earns nothing. 23 in all.",
          "transparency": "Editorial half only. Closed source, and github.com/anchorterminal answers 404 although /letme/ and /about/ link to it. The terms are three sentences on /about/#terms (data under CC BY 4.0, assessments as opinions, API use subject to the docs' rate limits), and the OpenAPI points to /letme/ as its terms of service. Neither says what letme.dev guarantees or logs for a pick, so read strictly 5 of 30. Data handling 10 of 30. /about/ says the website sets no cookies and keeps aggregate server logs rotated after 30 days, and says in the future tense that letme will log method, tool, timing, status class, size and the calling key. Nothing says what letme.dev logs for a pick today or whether job text sent in ?q= is kept. The 90-day deprecation notice on /docs/ covers /api/v1/, not letme.dev (0 of 20, read strictly). No hosting provider, subprocessors or data location named (0). 15 in all."
        },
        "sources": [
          {
            "what": "letme.dev index answer (self-check, calling block)",
            "url": "https://letme.dev/",
            "seen": "2026-10-02"
          },
          {
            "what": "OpenAPI document (version 2026.10.02-1614)",
            "url": "https://letme.dev/openapi.json",
            "seen": "2026-10-02"
          },
          {
            "what": "llms.txt",
            "url": "https://letme.dev/llms.txt",
            "seen": "2026-10-02"
          },
          {
            "what": "Agent Skill (503, Don't lines)",
            "url": "https://letme.dev/skills/letme/SKILL.md",
            "seen": "2026-10-02"
          },
          {
            "what": "capability pick with alternatives and the calling block",
            "url": "https://letme.dev/web.search",
            "seen": "2026-10-02"
          },
          {
            "what": "job-in-words pick",
            "url": "https://letme.dev/send-an-sms",
            "seen": "2026-10-02"
          },
          {
            "what": "answer used for the price-unit deduction",
            "url": "https://letme.dev/speech.stt.json?n=10\u0026minGrade=BB",
            "seen": "2026-10-02"
          },
          {
            "what": "ungraded slug (404)",
            "url": "https://letme.dev/localghost",
            "seen": "2026-10-02"
          },
          {
            "what": "words table and confidence rule",
            "url": "https://letme.dev/words.json",
            "seen": "2026-10-02"
          },
          {
            "what": "MCP endpoint (GET answers 405)",
            "url": "https://letme.dev/mcp",
            "seen": "2026-10-02"
          },
          {
            "what": "security.txt on letme.dev (404)",
            "url": "https://letme.dev/.well-known/security.txt",
            "seen": "2026-10-02"
          },
          {
            "what": "explanation page",
            "url": "https://www.anchorterminal.com/letme/",
            "seen": "2026-10-02"
          },
          {
            "what": "explanation page JSON twin",
            "url": "https://www.anchorterminal.com/letme/index.json",
            "seen": "2026-10-02"
          },
          {
            "what": "explanation page Markdown twin",
            "url": "https://www.anchorterminal.com/letme/index.md",
            "seen": "2026-10-02"
          },
          {
            "what": "about page (terms, privacy, security, entity)",
            "url": "https://www.anchorterminal.com/about/",
            "seen": "2026-10-02"
          },
          {
            "what": "changelog (1 and 2 October entries)",
            "url": "https://www.anchorterminal.com/changelog/",
            "seen": "2026-10-02"
          },
          {
            "what": "API docs and rate limits",
            "url": "https://www.anchorterminal.com/docs/",
            "seen": "2026-10-02"
          },
          {
            "what": "security.txt",
            "url": "https://www.anchorterminal.com/.well-known/security.txt",
            "seen": "2026-10-02"
          },
          {
            "what": "live monitoring page",
            "url": "https://www.anchorterminal.com/live/",
            "seen": "2026-10-02"
          },
          {
            "what": "API manifest with the letme object",
            "url": "https://www.anchorterminal.com/api/v1/index.json",
            "seen": "2026-10-02"
          },
          {
            "what": "monitoring workers list (no letme entry)",
            "url": "https://www.anchorterminal.com/api/v1/workers.json",
            "seen": "2026-10-02"
          },
          {
            "what": "agents page",
            "url": "https://www.anchorterminal.com/agents/",
            "seen": "2026-10-02"
          },
          {
            "what": "domain RDAP (registered 2026-09-30)",
            "url": "https://pubapi.registry.google/rdap/domain/letme.dev",
            "seen": "2026-10-02"
          },
          {
            "what": "GitHub organisation (404)",
            "url": "https://github.com/anchorterminal",
            "seen": "2026-10-02"
          },
          {
            "what": "official MCP registry search",
            "url": "https://registry.modelcontextprotocol.io/v0/servers?search=letme",
            "seen": "2026-10-02"
          }
        ],
        "openQuestions": [
          "unchecked: the MCP endpoint's tools/list (pick and about), their input schemas, descriptions and readOnlyHint annotations. GET /mcp answers 405 and our fetcher can't POST, so Schema and Ergonomics rest on the OpenAPI",
          "unchecked: the bodies of 400 and 404 answers. Our fetcher reports the status and drops the body",
          "unchecked: response headers (Cache-Control, rate-limit headers, CORS)",
          "unchecked: whether letme rereads the directory every 15 minutes, as the listing says. Answers read on 2 October 2026 showed a build at 16:16 UTC fetched at 16:31 UTC",
          "No rate limit for picking was found, and no statement of what letme.dev logs for a pick today",
          "The answers don't say which prices count as published for the job itself, so the speech.stt deduction may rest on a misreading of the price step",
          "The anchorterminal.com security.txt Expires value was the fetch time plus one year when one grader read it, which suggests it's regenerated on each request. A rolling expiry doesn't show the contact is maintained",
          "Once these scores publish, the 'listed and not graded' statements on /letme/, in the changelog, in the listing's disclosure and notable fields, and the picker's exclusion of ungraded listings will need rewording"
        ]
      },
      "negative": -2,
      "negativeNotes": [
        "2026-10-02, -2. For speech.stt the answer's why says \"price couldn't be compared (no two listings at grade BB publish a price for the job in the same unit)\" while the same answer gives all four BB listings a lead price per audio-minute ($0.00167, $0.0024, $0.002 and $0.003). It then picks by overall score (77 against 73.6). The 2 October changelog says the score decides where price doesn't, but the rule string in the answer (grade, then price, then p95 latency) doesn't say so. Azure is also the cheapest of the four, so the pick wouldn't change. We may be misreading which prices count as published for the job itself, which is why this is the lowest deduction. Reproduced on directory build 20261002T161644Z. Source https://letme.dev/speech.stt.json?n=10\u0026minGrade=BB"
      ],
      "verdict": "No key, account or card to ask for a pick, over GET, POST or MCP, and every address we called answered without credentials. Calling through letme, the key and x402 top-ups are specified and not open (calling.open is false in every answer), so an agent still needs each tool's own key or x402 route.",
      "disclosure": "letme is Anchor Terminal's own product, run by the same company and founder. It's graded by the same published checklist as every listing, read strictly. Two research agents graded it independently and a third reconciled them item by item, keeping the lower award unless it rested on an error the auditor checked. The review panel doesn't review it, and letme never picks it.",
      "strengths": [
        "No key, account or card to ask for a pick, over GET, POST or MCP, and every address we called answered without credentials",
        "OpenAPI 3.1, llms.txt and an Agent Skill linked from llms.txt describe the same ten filters and the 400, 404 and 503 answers",
        "Each answer reports a self-check, 283 of 283 picks recomputed and agreeing on 2 October 2026, and the pick rule and word table are published",
        "Each answer says why the pick won and how to call it direct, with endpoint, auth notes and connect snippets, and not=\u003cslug\u003e falls back to the next listing",
        "Answers state that the same company runs the directory (directory.sameCompany is true)"
      ],
      "weaknesses": [
        "Calling through letme, the key and x402 top-ups are specified and not open (calling.open is false in every answer), so an agent still needs each tool's own key or x402 route",
        "No status page, no published rate limit for picking, no 429 guidance and no SLA, and the limits on /letme/ belong to a key that isn't issued",
        "Closed source, no SDK and no MCP registry entry, and the GitHub link on /letme/ and /about/ answers 404",
        "On 2 October 2026 the speech.stt answer said price couldn't be compared while listing four same-grade prices per audio-minute",
        "Run by the company that grades the tools it picks from, with no stated logging for picks, no subprocessors and no deprecation policy for letme.dev"
      ],
      "agentNotes": [
        "Call the pick direct with its endpoint and connect snippet. letme.dev doesn't call tools yet, and calling.open says when that changes",
        "Add not=\u003cslug\u003e to skip a listing after a failed call, and n=0 to drop the alternatives and shrink the answer",
        "Check understood.confidence on a job in words, and ask again with a capability id (letme.dev/web.search) when it's low",
        "Don't ask for ungraded listings by slug. letme.dev/letme and letme.dev/localghost answer 404",
        "Send keys in a header, not in the URL, even where an answer's endpoint shows ?tavilyApiKey=\u003ckey\u003e"
      ],
      "metrics": {
        "kind": "remote",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "medium",
          "grade": "F",
          "methodology": "0.3",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 36.7
        }
      ],
      "editorialScores": {
        "ergonomics": 54,
        "maintenance": 35,
        "payments": 50,
        "reliability": 10,
        "schema": 68,
        "security": 23,
        "transparency": 15
      },
      "provenanceScore": 65
    },
    "connect": {
      "http": "curl -s https://letme.dev/web.search"
    },
    "letme": {
      "capability": "https://letme.dev/agent.tools"
    },
    "notable": [
      "letme reads only the directory's public JSON (/api/v1/tools.json, /api/v1/capabilities.json and /api/v1/categories.json) every 15 minutes, and recomputes every pick from those files as a check (https://www.anchorterminal.com/letme/#status)",
      "A job in words is matched to a capability without a model, from the capability ids, the categories and a published word table (https://letme.dev/words.json)",
      "Listings the directory doesn't grade, letme and LocalGhost among them, are never picked (https://www.anchorterminal.com/letme/#disclosure)"
    ],
    "area": "business",
    "details": [
      {
        "label": "Status",
        "value": "Picking works today. Calling through letme, the letme key and payments are specified and not open (calling.open is false in every answer)"
      },
      {
        "label": "Pick rule",
        "value": "Highest Anchor grade for the capability, then price, then p95 latency"
      },
      {
        "label": "Addresses",
        "value": "letme.dev/{job in words}, letme.dev/{capability}, letme.dev/{slug}, ?q= and POST / with filters, and /mcp with the tools pick and about"
      }
    ],
    "provenance": {
      "legalEntity": "Anchor Terminal Ltd",
      "domain": "letme.dev",
      "domainRegistered": "2026-09-30",
      "endpointOnVendorDomain": true,
      "terms": "https://www.anchorterminal.com/about/#terms",
      "privacy": "https://www.anchorterminal.com/about/#privacy",
      "statusPage": "",
      "changelog": "https://www.anchorterminal.com/changelog/",
      "securityTxt": "none",
      "checked": "2026-10-02",
      "notes": [
        "Run by Anchor Terminal Ltd, the company that runs this directory. Terms, privacy and the changelog are Anchor Terminal's own pages.",
        "letme.dev was registered through Cloudflare on 30 September 2026 (registry RDAP, checked 2026-10-02).",
        "No status page. letme.dev/status and anchorterminal.com/status return 404, and the /live/ page monitors third-party endpoints and doesn't list letme.dev.",
        "letme.dev/.well-known/security.txt returns 404. anchorterminal.com/.well-known/security.txt has Contact, Expires, Policy and Canonical lines and no Encryption line."
      ],
      "score": 65,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Anchor Terminal Ltd",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "letme.dev, registered 2026-09-30 (under a year)",
          "points": 0,
          "max": 15,
          "state": "no"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "letme.dev",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Privacy policy",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Status page",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/letme.json",
    "live": {
      "slug": "letme",
      "probe": {
        "target": "https://letme.dev",
        "method": "get",
        "lastAt": "2026-10-04T22:35:25.846022843Z",
        "lastOk": true,
        "lastStatus": 200,
        "lastMs": 15,
        "authRequired": false,
        "uptime24h": 100,
        "uptime30d": 100,
        "p50ms24h": 23,
        "p95ms24h": 72,
        "samples24h": 272,
        "samples30d": 627,
        "days": [
          {
            "date": "2026-10-02",
            "probes": 100,
            "ok": 100
          },
          {
            "date": "2026-10-03",
            "probes": 271,
            "ok": 271
          },
          {
            "date": "2026-10-04",
            "probes": 256,
            "ok": 256
          }
        ]
      },
      "securityTxt": {
        "url": "https://letme.dev/.well-known/security.txt",
        "state": "valid",
        "expires": "2027-10-01T00:00:00.000Z",
        "checkedAt": "2026-10-04T15:15:56.1692687Z"
      },
      "llmsTxt": {
        "url": "https://letme.dev/llms.txt",
        "ok": true,
        "status": 200,
        "checkedAt": "2026-10-04T15:17:56.645782299Z"
      },
      "domain": {
        "domain": "letme.dev",
        "registered": "2026-09-30",
        "source": "https://pubapi.registry.google/rdap/domain/letme.dev",
        "checkedAt": "2026-10-04T13:08:23.055142711Z"
      },
      "pages": [
        {
          "url": "https://www.anchorterminal.com/changelog/",
          "kind": "changelog",
          "status": 200,
          "checkedAt": "2026-10-04T15:49:06.974983864Z",
          "changedAt": "2026-10-04T15:49:06.974983864Z",
          "fingerprint": "a96eb7b6cea0"
        },
        {
          "url": "https://www.anchorterminal.com/about/",
          "kind": "terms",
          "status": 200,
          "checkedAt": "2026-10-04T15:49:04.964854009Z",
          "changedAt": "2026-10-04T15:49:04.964854009Z",
          "fingerprint": "77f155c71cca"
        }
      ],
      "updatedAt": "2026-10-04T22:35:25.846022843Z"
    }
  }
}
