SonarSource is Agent-Ready to agents.
Discry independently scored how well an AI agent can discover and understand the SonarSource API from what’s public — not whether it’s usable. Below: every signal we checked, what’s costing the score, and what to change.
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 · 90/100Comprehension
55% of score · 91/100What we found
- An agent discovering SonarSource lands in an unusually agent-native environment: robots.txt carries an explicit AI-crawler allow-list (GPTBot, ClaudeBot, anthropic-ai, CCBot, Perplexity, etc.) plus a Content-Signal: ai-train=yes header, so nothing blocks retrieval.
- Documentation is machine-first by design — every page is available as clean markdown by appending .md, via Accept: text/markdown content negotiation, and a full llms-full.txt corpus export. Even the 404 page instructs agents to use a ?ask= natural-language query endpoint and sitemap.md index.
- An agent looking for a machine-readable contract finds one: a valid OpenAPI 3.1 spec for Web API v2 (/api/v2/api-docs, 102 paths, 188 schemas) plus a hosted API reference portal (api-docs.sonarsource.com) and a self-documenting legacy webservices JSON with per-action descriptions, params, permissions, and response examples.
- SonarSource is deeply invested in agent tooling: an official SonarQube MCP Server (listed on PulseMCP), AGENTS.md/CLAUDE.md in the sonarqube-cli repo, agent plugins for Claude Code/Cursor/Codex/Copilot, and an entire 'Agent Centric Development Cycle' documentation tree.
- The main gap is operational, not discovery: rate limits and idempotency are not documented anywhere in the corpus, so an agent would only learn throttling limits by hitting them — the reason this scores A rather than a clean top of the range.
What to change
Prioritized by impact on discoverability. You (or your docs platform) deploy these — Discry never touches your API.
- 01Document rate limits and their response headers (limit, remaining, Retry-After) in the Web API appendix so agents can back off correctly instead of discovering limits by failing — this is the single biggest remaining gap.
- 02Add explicit error-recovery guidance for the top 5-10 error scenarios (e.g., what a 400 means per endpoint, how to resolve 401/403 permission failures, token-expiry handling) rather than relying on HTTP status codes alone.
- 03Publish a stable, versioned OpenAPI download URL (e.g., a documented /openapi.json) instead of only exposing the spec via a live instance's /api/v2/api-docs, so agents have a canonical, cacheable contract.
- 04Make the base-domain llms.txt API-aware — it currently lists only marketing/product pages with zero API references; adding a short 'API & developer docs' section pointing to the Web API and OpenAPI would tighten the discovery path.
- 05Document idempotency behavior for write endpoints (POST/PUT/PATCH) so agents can safely retry mutations without duplicating resources.
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.
The SonarQube Web API v2 ships a valid OpenAPI 3.1 spec (v2026.4, 102 paths, 188 schemas) that documents standardized HTTP error responses (400/401/403/500) per endpoint. Auth is bearer-token (personal, scoped-org, and one-time agent-app tokens), documented with realistic cURL examples. Legacy v1 endpoints use p/ps pagination and declare required permissions per action. Rate limits and idempotency keys are not documented; these are claims to confirm via a live Audit.