{"ok":true,"data":{"openapi":"3.1.0","url":"/openapi.yaml","info":{"title":"Platphorm Ready API","version":"1.0.0","description":"Evidence-backed conformity, readiness, drift, and execution verification."},"auth":{"sharedKey":"PLATPHORM_API_KEY","headers":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key"],"browser":"Public dashboard scans use a server-side proxy; the shared key remains server-side."},"routes":["/api/health","/api/v1/health","/api/self-assessment","/api/v1/self-assessment","/api/v1/controls","/api/v1/tests","/api/v1/certificates","/api/v1/network/graph","/api/v1/network/assessments","/api/v1/network/assessments/{id}","/api/network/assessments","/api/network/assessments/{id}","/api/network-assessments","/api/network-assessments/{id}","/api/v1/profiles","/api/v1/adapters","/api/v1/verification/plan","/api/v1/verification/schema","/api/v1/verification/contracts","/api/v1/verification/runs","/api/v1/verification/runs/{id}","/api/v1/verification/runs/{id}/specialists","/api/v1/repository-assessments","/api/repository-assessments","/api/v1/verification/ui","/api/v1/verification/ui/report","/api/assessments","/api/assessments/{id}","/api/assessments/{id}/report","/api/assessments/{id}/evidence","/api/assessments/{id}/conformity","/api/assessments/{id}/drift","/api/assessments/{id}/contradictions","/api/assessments/{id}/repair-plan","/api/comparisons","/api/comparisons/{id}","/api/tests","/api/probes","/api/assertions","/api/profiles","/api/standards","/api/invariants","/api/archetypes","/api/drift-types","/api/mcp","/mcp","/openapi.json","/openapi.yaml","/.well-known/platphorm.json","/.well-known/mcp.json","/.well-known/agents.json","/.well-known/trust.json"],"integrations":{"catalog":"https://catalog.platphormnews.com/api/mcp","apiPlatform":"https://api.platphormnews.com/api/health","github":"server-side Vercel Connect when repository is provided","vercel":"server-side @vercel/sdk read-only project/deployment evidence when configured","cloudflare":"server-side Cloudflare Zone API read-only evidence when configured","scannerDiscovery":"registry, /.well-known/platphorm.json, MCP tools/list, OpenAPI, documented metadata, then configured-adapter fallback"},"providerReferences":{"apiMcpOnly":true,"accepted":["provider_project","cloudflare_zone_id","cloudflare_account_id"],"secrets":"Never supplied by the client; VERCEL_TOKEN and CLOUDFLARE_API_TOKEN remain server-side."},"repositoryAssessments":{"endpoint":"/api/repository-assessments","versionedEndpoint":"/api/v1/repository-assessments","mcpTools":["ready.repository.assess","assess_repository"],"repositoryInput":"API/MCP only","rawSourceReturned":false},"networkAssessments":{"endpoint":"/api/network-assessments","versionedEndpoint":"/api/v1/network/assessments","mcpTools":["ready.network.assess","ready.network.get"],"queryContract":"platphorm.ready.network-result@1"},"selfAssessment":{"endpoint":"/api/self-assessment","versionedEndpoint":"/api/v1/self-assessment","mcpTool":"get_self_assessment","contract":"platphorm.ready.self-assessment@1","publicReadOnly":true},"apiConformity":{"contract":"platphorm.api-conformity@1","scope":"Applicability-aware OpenAPI and bounded live API route comparison.","compares":["OpenAPI version and validity","documented operations and operation IDs","documented missing routes","undocumented live routes","anonymous auth boundaries","response content types"],"classifications":["CONFORMANT","OPENAPI_INVALID","DOCUMENTED_MISSING_ROUTE","UNDOCUMENTED_LIVE_ROUTE","OPERATION_ID_MISSING","SCHEMA_DRIFT","AUTH_DRIFT","CONTENT_TYPE_DRIFT","UNKNOWN"],"safety":"Only bounded public route probes are automatically used; protected or mutating operations remain uninvoked unless authorized evidence is supplied."},"capabilityParity":{"contract":"platphorm.capability-parity@1","source":"/.well-known/platphorm.json","compares":["declared UI actions","BrowserOps action/journey execution results in browser mode","OpenAPI method/path operations","input/output shapes","auth","side effects","risk","error statuses","MCP tools/list","documented routes","safe live public behavior"],"classifications":["CONFORMANT","MACHINE_CAPABILITY_GAP","DOCUMENTATION_GAP","SCHEMA_DRIFT","AUTH_DRIFT","SIDE_EFFECT_DRIFT","RISK_DRIFT","ERROR_DRIFT","UI_EXECUTION_DRIFT","UI_ONLY","UNKNOWN"],"safety":"Only public read-only MCP tools with no required arguments and public GET APIs without path parameters are executed automatically; protected or consequential actions remain uninvoked. Browser action execution is delegated to BrowserOps and never runs from the Ready server without the configured protected specialist lane.","unknownPolicy":"Targets without a capability declaration or required evidence remain UNKNOWN."},"scannerRegistry":{"endpoint":"/api/v1/adapters","contract":"platphorm.scanner-registry@1","statusSemantics":{"ACTIVE":"healthy runtime plus observed or stale live capability discovery","DEGRADED":"reachable but degraded or configured-only discovery","UNKNOWN":"no reliable runtime health evidence","DISABLED":"explicitly disabled","DEPRECATED":"explicitly deprecated"},"discoveryOrder":["scanner-registry","well-known","mcp","openapi","api-docs","configured-adapter"],"authority":"Each scanner declares primary authority domains and rationale; unavailable scanners remain UNKNOWN and cannot invent findings."}}}