Cybercyber.gc.ca
Your API design surface is strong — schema and types are well-structured, giving partners and their agents a solid contract to build against. However, the program has critical gaps in two areas that directly block partner adoption: partners and agents cannot discover your APIs without a sales conversation (no machine-readable discovery file, no self-service portal, no code samples), and once they do find your APIs, errors and descriptions are neither machine-readable nor consistent enough for agents to act on reliably.
API DesignA clean, typed, well-governed API contract agents can reason about3 pass1 warn0 fail99A+
| Signal | Points | Findings | Rationale | |
|---|---|---|---|---|
| pass | Auth declared & discoverablevia mcp | 25/25 | The MCP server at https://api.contrastcyber.com/mcp/ accepts unauthenticated requests, so an agent knows it needs no credentials. Investigated: mcp 100%. | Agents can only call an API when they can determine its auth posture — a declared scheme, or an explicit statement that none is required. |
| warn | Schema coverage & depthvia sdk | 24.4/25 | 21/21 (100%) public params are fully typed (no any/**kwargs). Analyzer confirms all methods have a derivable input schema. Investigated: sdk 98%. | Typed, complete request/response schemas are what make agent function-calling possible. |
| pass | Security & governance hygienevia sdk | 15/15 | Code is formatter-clean with zero linter errors and zero style warnings. Investigated: sdk 100%, wellknown 0%. | No leaked secrets, no critical lint violations, no OWASP API Top-10 spec smells, and a published vulnerability-disclosure channel. |
| pass | Example coveragevia sdk | 10/10 | README is present and includes a runnable quickstart. Investigated: sdk 100%, docs 0%. | Examples carry shape semantics schemas under-specify — for humans and agents alike. |
| na | Machine-readable, versioned contract | —/25 | No surface produced evidence for this capability in this run. | A current OpenAPI version with a declared versioning scheme lets agents reason about the contract. |
Developer ExperienceThe context both developers and agents need to integrate fast — onboarding, code samples, complete descriptions and worked examples0 pass2 warn2 fail45F
| Signal | Points | Findings | Rationale | |
|---|---|---|---|---|
| warn | Quickstart presentvia docs | 12.5/25 | Quickstart page is reachable at https://www.cyber.gc.ca/en/tools-services/sms/quickstart (1 variants scanned) but has no runnable code sample in its HTML or .md variant, so there's nothing to copy and run. Investigated: docs 50%. Fix: Add a copy-pasteable curl or SDK call, with the expected response, to the quickstart page (or its .md variant). | A quickstart is the fastest path from landing page to first successful call. |
| warn | Description completenessvia sdk | 5/15 | 12/18 operations lack a description. Investigated: sdk 33%. Fix: Add descriptions to operations so agents can route to the right tool by reading them. | Complete descriptions are the context humans and agents need to use endpoints. |
| fail | Self-service developer portalvia docs | 0/29 | No self-service signup detected — no signup link on the homepage or docs, and no conventional signup path (/signup, /sign-up, /register, /get-started, /console/signup, /dashboard/signup, /try, /try-free, /free, /free-trial, /start, /start-free, /join, /create-account, /account/signup, /auth/signup, /users/sign_up) resolved — so an agent can't onboard on its own. Investigated: docs 0%. Fix: Publish a public signup endpoint and link it from your homepage/docs to compress time-to-first-call. | A first call without a human in the loop — self-serve credentials, a free tier, or an API that needs none. |
| fail | Code samples in docsvia docs | 0/18 | No code samples detected across 1 sampled docs pages, so a coding agent gets no ready-to-use examples. Investigated: docs 0%. Fix: Add copy-pasteable code samples to API reference and quickstart pages. | Multi-language samples shorten time-to-first-call. |
| na | Changelog published | —/13 | No surface produced evidence for this capability in this run. | A published changelog lets partners track changes without surprise. |
Agent DiscoveryPartners and their agents can find your APIs — llms.txt, registries, crawlable and reachable docs2 pass1 warn1 fail71B
| Signal | Points | Findings | Rationale | |
|---|---|---|---|---|
| pass | Docs reachable, not hard auth-gatedvia docs | 30/30 | All 1 pages are publicly accessible. Investigated: docs 100%. | Agents can only index and fetch docs they can reach — past auth gates and over correct HTTP semantics. |
| pass | Registry & SDK presencevia docs | 28/28 | Indexed on Context7 (llmstxt/cyberar_io_llms-full_txt, 0 snippets). Investigated: docs 100%, wellknown 100%, sdk 58%, cli 0%, mcp 0%. | Listing in MCP registries and publishing SDKs puts the API where agents and their tooling look. |
| warn | Crawlable / AEOvia wellknown | 6/12 | No sitemap found via robots.txt or /sitemap.xml on the docs host, so AI search engines have no crawl map for your docs. Investigated: wellknown 50%. Fix: Publish an XML sitemap and reference it from robots.txt. | Bots allowed plus a fresh sitemap make docs findable by agent crawlers. |
| fail | llms.txt present, valid & comprehensivevia docs | 0/30 | No llms.txt found at any candidate location (https://www.cyber.gc.ca/en/tools-services/llms.txt, https://www.cyber.gc.ca/llms.txt, https://www.cyber.gc.ca/docs/llms.txt). Investigated: docs 0%, sdk 0%. | A valid, comprehensive llms.txt is the machine-readable entry point for agents. |
Agent UnderstandingAgents can correctly interpret your APIs — machine-readable errors, consistent descriptions, structured data, parseable docs1 pass3 warn2 fail57D
| Signal | Points | Findings | Rationale | |
|---|---|---|---|---|
| pass | Agent-navigable, token-efficient docsvia docs | 22/22 | All 1 pages contain server-rendered content. Investigated: docs 100%. | Server-rendered, clean, small-footprint docs are what an agent can cheaply fetch and parse correctly. |
| warn | Operation purpose clarityvia sdk | 12.5/25 | Read/write classification is mostly ambiguous: only 0/18 operations classified. Investigated: sdk 50%. Fix: Use standard verbs (get/list/create/update/delete) and clear mutation semantics so agents can tell reads from writes. | Agents select the right endpoint from its summary + operationId; clear, named operations make tool-selection reliable — the strongest driver of correct tool choice. |
| warn | Agent instructions file (AGENTS.md)via sdk | 5/10 | No agents.md or skill.md context file found (nice-to-have for agent operation). Investigated: sdk 50%, wellknown 0%. Fix: Add an agents.md or skill.md describing how an agent should use this SDK (auth setup, key operations, gotchas). | An AGENTS.md gives coding agents explicit setup, auth, and usage instructions to interpret and operate the API — beyond llms.txt's link index. |
| warn | Docs structured datavia docs | 4/8 | Only OpenGraph/meta tags across 1 assessed pages — no JSON-LD for AI answer engines to cite. Investigated: docs 50%. Fix: Emit JSON-LD with Article/TechArticle @type and dateModified in the rendered docs head. | Structured data (JSON-LD/schema.org) on docs pages gives agents an unambiguous parse target and is what answer engines cite. Detected on the JS-rendered head (Firecrawl) for a bounded page budget, so JS-injected JSON-LD is now caught; pages we can't render are excluded rather than failed. |
| fail | Machine-readable errors (RFC 9457)via sdk | 0/28 | No single common SDK base error class was found; errors do not share one root. Investigated: sdk 0%. Fix: Introduce a single base error class that every SDK error subclasses, so consumers can catch the whole SDK with one type. | RFC 9457 problem details and a documented error-code inventory let agents parse failures without burning tokens. |
| fail | Description consistency across surfaces | 0/7 | Mean pairwise description similarity across 2 surfaces (docs, sdk) is 0% (threshold 35% for full credit). Fix: Align the API description across spec, docs, and SDK so an agent reading any one surface gets the same story. | Every surface tells the same story about what the product is. |
Agent UsabilityAgents have the context to use your APIs reliably, not just find them2 pass1 warn0 fail85A
| Signal | Points | Findings | Rationale | |
|---|---|---|---|---|
| pass | Idempotency documentedvia sdk | 27/27 | Built-in retry machinery is present (grep-derived). Investigated: sdk 100%. | Documented idempotency lets agents retry safely. |
| warn | Sandbox separationvia sdk | 10/20 | No test-mode flag or sandbox environment is exposed. Investigated: sdk 50%. Fix: Expose a test-mode flag or sandbox environment so agents can exercise the SDK safely. | An isolated environment lets agents exercise destructive operations safely. |
| pass | Runnable collection with test scriptsvia sdk | 9/9 | README is present and includes a runnable quickstart. Investigated: sdk 100%, platform 0%. | A public, maintained collection with assertions is runnable truth agents validate against. |
| na | Rate-limit signaling | —/22 | No surface produced evidence for this capability in this run. | Machine-readable rate-limit headers let agents throttle adaptively. |
| na | Pagination documented & consistent | —/22 | No surface produced evidence for this capability in this run. | Consistent, documented pagination lets agents traverse collections. |
Resources Discovered
The public resources we found for Cyber — the evidence behind the score. All discovered from public sources; nothing here requires access to your systems.
| Agent hints | Context7 (0) |
|---|