◎ Discry Score
semgrep.com
devtools · API
B
0 / 100
DISCOVERY0
COMPREHENSION0
Category leader: 96 (A)
Discry your API →
DEVTOOLS · RANK #17 OF 39

Semgrep is Good to agents.

Discry independently scored how well an AI agent can discover and understand the Semgrep API from what’s public — not whether it’s usable. Below: every signal we checked, what’s costing the score, and what to change.

Discry your API — freeView the docs ↗

SCORED UNDER RUBRIC 1.2 · A full re-launch under Discry Score 2.5 — a new behavioral instrument, not comparable to these scores — is in progress.

Discovery

45% of score · 86/100
OpenAPI specA machine-readable OpenAPI/Swagger spec agents can parse.Pass
llms.txtAn llms.txt index that points agents to the docs that matter.Pass
llms.txt qualityThe llms.txt is focused, current, and well under the size budget.Partial
llms-full.txtA full-text bundle agents can load in one request.Fail
AGENTS.mdAn AGENTS.md that tells coding agents how to build on the API.Pass
.well-known/mcp.jsonA discoverable MCP manifest at a well-known path.Fail
MCP registryThe API is listed in a public MCP registry.Pass
robots.txt AI directivesrobots.txt allows (or explicitly guides) AI crawlers.Pass
SitemapA sitemap so agents can enumerate the docs surface.Pass

Comprehension

55% of score · 71/100
Task-oriented descriptionsEndpoints described by what they accomplish, not just their shape.Pass
Realistic examplesRunnable, real-world request/response examples.Partial
Multi-step workflowsDocs that chain calls into complete jobs an agent can follow.Pass
Error-recovery guidanceDocumented failure modes and how to recover from them.Fail
Answer-first formatThe answer leads; preamble does not bury it.Pass
Capability boundariesClear limits — what the API can and cannot do.Partial
Naming consistencyConsistent, predictable naming across endpoints.Partial
Heading hierarchyClean heading structure agents can navigate.Pass
Markdown docsDocs available as clean markdown, not JS-rendered HTML only.Pass
Token efficiencyDocs are concise enough to fit an agent context window.Partial

What we found

  • An agent would discover Semgrep easily: a valid llms.txt at the domain root points straight to docs, the OpenAPI-format API reference, the rule registry, and the official MCP server — plus the API is listed across PulseMCP, Glama, and Smithery.
  • Semgrep is unusually invested in agent tooling: a comprehensive AGENTS.md ships in the primary repo (semgrep/semgrep), an official MCP server (semgrep/mcp, published to PyPI as semgrep-mcp), and a dedicated semgrep/skills repo of skills for AI coding agents.
  • The REST API is documented in OpenAPI format with a downloadable spec, task-oriented endpoint titles, answer-first layout (method/URL/cURL at the top), and realistic response payloads (real file paths, GitHub URLs, plausible IDs and timestamps).
  • The biggest comprehension gap for an agent is error handling: the API reference documents only 200 responses — no error codes, error schema, or recovery guidance — so an agent would only learn how failures behave by failing. Rate limits are likewise undocumented.
  • Naming is inconsistent within a single response object: nested finding fields mix snake_case (created_at, first_seen_scan_id, match_based_id) with camelCase (endColumn, filePath, externalSlug), which forces an agent to handle both conventions.

What to change

Prioritized by impact on discoverability. You (or your docs platform) deploy these — Discry never touches your API.

  1. 01Document error responses in the API reference: add the 4xx/5xx status codes, the error response schema, and per-error recovery guidance (e.g. what to do on 401 token/permission failures or 400 invalid-parameter responses) alongside the existing 200 examples.
  2. 02Publish rate-limit documentation — the limits themselves and the response headers returned on throttling (e.g. Retry-After) — so agents can back off correctly instead of discovering limits by failing.
  3. 03Standardize field naming across the API to a single convention (snake_case throughout is most consistent with the existing finding fields) to remove the camelCase/snake_case mixing inside response objects.
  4. 04Add descriptive context to each link in llms.txt (one line per entry) and add an llms-full.txt with concatenated API-usage content so agents can load core capabilities in one fetch.
  5. 05Offer multi-language request examples (Python, JavaScript) beyond cURL on endpoint pages to make examples directly copy-pasteable into agent-generated integration code.

Execution coverage · INFORMATIONAL, UNSCORED

Whether an agent can actually complete a call and recover from errors is the deeper Audit layer — documented here, but not part of the Discry Score.

API token (Bearer, Web API permission) Error format documented Rate limits documented Pagination documented Idempotency documented

Authentication is a single Bearer API token provisioned from the Settings page with an explicit 'Web API' permission. Pagination is well documented via page (0-indexed) and page_size (100-3000) query parameters. Error response formats, error codes, rate limits, and idempotency are not documented in the API reference — only 200-level responses are shown.

See your own Discry Score.

Drop your API docs URL. See what an agent sees — in 60 seconds, free.

Discry your API — free