Exactlane Preflight Phase 0A Api API

Caller-specific MCP capability compatibility evidence for a specific agent workflow before reliance. Static snapshot versus requirements. A capability snapshot is a cached caller-provided claim, not live truth. No live probing. The caller owns CONTINUE, UPDATE_INTEGRATION, and HOLD. After a finished

GitHub OpenAPI

Operations 13

GET /.well-known/exactlane.json Read the Exactlane MCP compatibility service manifest
GET /admin Read local operational inspection view
GET /openapi.json Read this OpenAPI document
POST /v0/agents Create one administrator-authorized scoped principal
DELETE /v0/agents/{agent_id} Revoke the caller's own principal
POST /v0/capabilities Store an immutable caller-provided MCP snapshot revision
GET /v0/capabilities/{capability_id} Read an owned private capability revision
POST /v0/checks Run a supported mcp-consumer-fit profile against an owned caller-provided snapshot
GET /v0/checks/{run_id} Read an owned private check report
POST /v0/public-access/grants Issue short-lived Public Agent Preview access
POST /v0/revision-checks Run a check on a new caller-provided revision and compare it with a previous check
POST /v0/snapshot-lint Report deterministic preconditions before spending a check
POST /v0/usage-events Attest how a finished check report was consumed

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/exactlane-dev:exactlane-preflight-phase-0a-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

exactlane-dev-api-openapi.json Raw ↑
{"components":{"parameters":{"IdempotencyKey":{"description":"Required on POST /v0/agents, POST /v0/capabilities, POST /v0/checks, POST /v0/revision-checks, and POST /v0/usage-events. 8 to 128 visible ASCII characters without spaces. Same key plus same body replays; same key plus a changed body returns 409.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":128,"minLength":8,"pattern":"^[!-~]+$","type":"string"}},"OptionalIdempotencyKey":{"description":"Optional on POST /v0/public-access/grants only. If supplied, exact replay for the same hashed client identity returns 200 without the bearer token. Different hashed client identities use independent idempotency namespaces. Callers who share a hashed identity (NAT, VPN, or shared network egress) share that namespace. Subsequent Public Preview capability, check, and usage-event writes still require Idempotency-Key.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":128,"minLength":8,"pattern":"^[!-~]+$","type":"string"}}},"schemas":{"AgentCreate":{"additionalProperties":false,"properties":{"display_label":{"maxLength":100,"minLength":1,"type":"string"},"operator_group_ref":{"description":"Admin-assigned opaque grouping","maxLength":128,"minLength":1,"type":["string","null"]},"scopes":{"default":["capabilities:write","capabilities:read","checks:write","checks:read","usage:write","self:delete"],"items":{"enum":["capabilities:write","capabilities:read","checks:write","checks:read","usage:write","self:delete"],"type":"string"},"minItems":1,"type":"array","uniqueItems":true},"traffic_class":{"default":"UNKNOWN","enum":["CONTROLLED","EXTERNAL_REVIEWED","UNKNOWN"],"type":"string"}},"required":["display_label"],"type":"object"},"AgentCreateResponse":{"additionalProperties":false,"properties":{"agent":{"$ref":"#/components/schemas/Principal"},"credential":{"$ref":"#/components/schemas/BearerCredential"}},"required":["agent","credential"],"type":"object"},"AgentRevocationResponse":{"additionalProperties":false,"properties":{"agent":{"type":"object"}},"required":["agent"],"type":"object"},"ArrayItemSchemaRequirement":{"additionalProperties":false,"description":"Caller-specific requirement over every explicit type=array node in one bounded tool schema location","properties":{"applies_when_modes":{"items":{"$ref":"#/components/schemas/CallerProfileMode"},"maxItems":8,"minItems":1,"type":"array","uniqueItems":true},"schema_location":{"enum":["input","output"],"type":"string"}},"required":["schema_location"],"type":"object"},"BearerCredential":{"additionalProperties":false,"properties":{"token":{"description":"Returned in this response; only a digest is stored","type":"string"},"type":{"const":"Bearer"}},"required":["type","token"],"type":"object"},"CallerProfileMode":{"description":"Opaque caller profile mode used only for exact, case-sensitive GAP-03 applicability","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$","type":"string"},"Capability":{"properties":{"capability_key":{"type":"string"},"created_at":{"format":"date-time","type":"string"},"expires_at":{"format":"date-time","type":"string"},"id":{"type":"string"},"revision_label":{"type":"string"},"snapshot":{"$ref":"#/components/schemas/CapabilitySnapshot"},"snapshot_digest":{"description":"Integrity hash of the stored caller-provided snapshot. Not a retrieval key. After Public Preview grant expiry, this digest cannot be used to fetch snapshot bytes; keep inline bytes or re-submit. GET /v0/capabilities/{capability_id} returns bytes only while the owner credential is still valid. There is no digest-fetch API.","type":"string"},"source_kind":{"const":"CALLER_PROVIDED"}},"required":["id","capability_key","revision_label","snapshot_digest","source_kind","created_at","expires_at"],"type":"object"},"CapabilityCreate":{"additionalProperties":false,"properties":{"capability_key":{"maxLength":128,"minLength":1,"type":"string"},"revision_label":{"maxLength":128,"minLength":1,"type":"string"},"snapshot":{"$ref":"#/components/schemas/CapabilitySnapshot"}},"required":["capability_key","revision_label","snapshot"],"type":"object"},"CapabilityResponse":{"additionalProperties":false,"properties":{"capability":{"$ref":"#/components/schemas/Capability"}},"required":["capability"],"type":"object"},"CapabilitySnapshot":{"additionalProperties":false,"properties":{"captured_at":{"format":"date-time","type":"string"},"protocol":{"additionalProperties":false,"properties":{"name":{"maxLength":64,"type":"string"},"revision":{"maxLength":64,"type":"string"},"transport":{"maxLength":64,"type":"string"}},"type":"object"},"schema_version":{"maxLength":80,"type":"string"},"tools":{"items":{"$ref":"#/components/schemas/CapabilityTool"},"maxItems":10,"type":"array"}},"type":"object"},"CapabilityTool":{"additionalProperties":false,"properties":{"_meta":{"description":"Accepted for tools/list compatibility and discarded before storage, digest and evaluation","type":"object"},"annotations":{"description":"Accepted for tools/list compatibility and discarded before storage, digest and evaluation","type":"object"},"description":{"description":"Accepted for tools/list compatibility and discarded before storage, digest and evaluation","type":"string"},"icons":{"description":"Accepted for tools/list compatibility and discarded before storage, digest and evaluation","type":"array"},"inputSchema":{"$ref":"#/components/schemas/JsonSchemaObject"},"max_input_bytes":{"maximum":262144,"minimum":1,"type":"integer"},"name":{"maxLength":128,"minLength":1,"type":"string"},"outputSchema":{"$ref":"#/components/schemas/JsonSchemaObject"},"title":{"description":"Accepted for tools/list compatibility and discarded before storage, digest and evaluation","maxLength":256,"type":"string"}},"required":["name"],"type":"object"},"CheckCreate":{"additionalProperties":false,"properties":{"capability_revision_id":{"maxLength":64,"minLength":1,"type":"string"},"previous_capability_revision_id":{"maxLength":64,"minLength":1,"type":"string"},"profile":{"$ref":"#/components/schemas/ProfileRef"},"requirements":{"$ref":"#/components/schemas/SupportedConsumerRequirements"},"source_kind":{"const":"CALLER_PROVIDED"}},"required":["capability_revision_id","source_kind","profile","requirements"],"type":"object"},"CheckReport":{"properties":{"checks":{"items":{"$ref":"#/components/schemas/CheckResult"},"type":"array"},"coverage":{"$ref":"#/components/schemas/Coverage"},"evaluated_at":{"format":"date-time","type":"string"},"lifecycle":{"enum":["QUEUED","RUNNING","FINISHED","CANCELLED"],"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"profile":{"type":"object"},"requirements_digest":{"type":"string"},"revision_changes":{"type":"object"},"run_id":{"type":"string"},"runner":{"type":"object"},"schema_version":{"const":"exactlane.check-report/0.1"},"source":{"properties":{"captured_at":{"format":"date-time","type":["string","null"]},"kind":{"const":"CALLER_PROVIDED"},"live_endpoint_observed":{"const":false},"observed_at":{"type":"null"}},"required":["kind","live_endpoint_observed"],"type":"object"},"subject":{"type":"object"},"trust":{"type":"object"},"verdict":{"description":"Finished-report aggregation precedence: any ERROR produces SYSTEM_ERROR; otherwise any FAIL produces FAIL; otherwise any UNSUPPORTED produces UNSUPPORTED; otherwise any NOT_RUN produces INCOMPLETE; otherwise the verdict is PASS. Report-level UNSUPPORTED and SYSTEM_ERROR are finished-report outcomes, not HTTP error responses.","enum":["PASS","FAIL","INCOMPLETE","UNSUPPORTED","SYSTEM_ERROR",null],"type":["string","null"]}},"required":["schema_version","run_id","lifecycle","verdict","subject","profile","runner","requirements_digest","source","coverage","checks","revision_changes","trust","evaluated_at","limitations"],"type":"object"},"CheckResponse":{"additionalProperties":false,"properties":{"check":{"$ref":"#/components/schemas/CheckReport"}},"required":["check"],"type":"object"},"CheckResult":{"properties":{"check_id":{"type":"string"},"evidence_path":{"type":"string"},"expected":{},"observed":{},"reason":{"type":"string"},"result":{"description":"Per-check evidence result. PASS: the condition was evaluated with supported semantics and the caller's requirement was met. FAIL: the evaluator proved a concrete incompatibility with the caller's requirement. NOT_RUN: the check did not execute because evidence was missing or stale, or because a prerequisite check could not run. UNSUPPORTED: the condition depends on semantics outside the fixed evaluator profile; this is neither proof of compatibility nor incompatibility. ERROR: a bounded internal runner, artifact, or report condition was represented as a check result.","enum":["PASS","FAIL","NOT_RUN","UNSUPPORTED","ERROR"],"type":"string"}},"required":["check_id","result"],"type":"object"},"ConsumerRequirements":{"additionalProperties":false,"properties":{"exposed_tool_identifier":{"$ref":"#/components/schemas/ExposedToolIdentifierRule"},"max_snapshot_age_seconds":{"maximum":2592000,"minimum":1,"type":"integer"},"protocol_revision":{"maxLength":64,"type":"string"},"required_tools":{"items":{"$ref":"#/components/schemas/ToolRequirement"},"maxItems":10,"minItems":1,"type":"array"},"schema_version":{"const":"exactlane.consumer-requirements/0.1"},"transport":{"maxLength":64,"type":"string"}},"required":["schema_version","protocol_revision","transport","required_tools"],"type":"object"},"ConsumerRequirementsV02":{"additionalProperties":false,"properties":{"caller_profile_mode":{"$ref":"#/components/schemas/CallerProfileMode"},"exposed_tool_identifier":{"$ref":"#/components/schemas/ExposedToolIdentifierRule"},"max_snapshot_age_seconds":{"maximum":2592000,"minimum":1,"type":"integer"},"protocol_revision":{"maxLength":64,"type":"string"},"required_tools":{"items":{"$ref":"#/components/schemas/ToolRequirementV02"},"maxItems":10,"minItems":1,"type":"array"},"schema_version":{"description":"Requirements 0.2 select profile 0.2 and 0.3 select profile 0.3; the fields are the same","enum":["exactlane.consumer-requirements/0.2","exactlane.consumer-requirements/0.3"]},"transport":{"maxLength":64,"type":"string"}},"required":["schema_version","protocol_revision","transport","required_tools"],"type":"object"},"Coverage":{"additionalProperties":false,"properties":{"errors":{"minimum":0,"type":"integer"},"executed":{"minimum":0,"type":"integer"},"failed":{"minimum":0,"type":"integer"},"not_run":{"minimum":0,"type":"integer"},"passed":{"minimum":0,"type":"integer"},"required":{"minimum":0,"type":"integer"},"unsupported":{"minimum":0,"type":"integer"}},"required":["required","executed","passed","failed","not_run","unsupported","errors"],"type":"object"},"Error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"}},"required":["code","message"],"type":"object"}},"required":["error"],"type":"object"},"ExposedToolIdentifierRule":{"additionalProperties":false,"description":"For each required tool, compare len(server_identifier + separator + tool.name) with max_characters; all parts are visible ASCII","properties":{"max_characters":{"maximum":264,"minimum":1,"type":"integer"},"separator":{"maxLength":8,"minLength":1,"pattern":"^[!-~]+$","type":"string"},"server_identifier":{"maxLength":128,"minLength":1,"pattern":"^[!-~]+$","type":"string"}},"required":["server_identifier","separator","max_characters"],"type":"object"},"JsonSchemaObject":{"description":"JSON Schema object; the fixed profile supports only its documented keyword subset","type":"object"},"Principal":{"additionalProperties":false,"properties":{"access_kind":{"enum":["bootstrap","public_preview"],"type":"string"},"created_at":{"format":"date-time","type":"string"},"display_label":{"type":"string"},"expires_at":{"format":"date-time","type":["string","null"]},"id":{"type":"string"},"operator_group_ref":{"type":["string","null"]},"revoked_at":{"format":"date-time","type":["string","null"]},"scopes":{"items":{"enum":["capabilities:write","capabilities:read","checks:write","checks:read","usage:write","self:delete"],"type":"string"},"type":"array"},"traffic_class":{"enum":["CONTROLLED","EXTERNAL_REVIEWED","UNKNOWN"],"type":"string"}},"required":["id","display_label","scopes","traffic_class","access_kind","created_at","expires_at","revoked_at"],"type":"object"},"ProfileRef":{"additionalProperties":false,"properties":{"id":{"const":"mcp-consumer-fit"},"version":{"enum":["0.1","0.2","0.3"],"type":"string"}},"required":["id","version"],"type":"object"},"PublicAccessDescriptor":{"additionalProperties":false,"properties":{"expires_at":{"format":"date-time","type":"string"},"kind":{"const":"public_preview"},"lifetime_seconds":{"const":1800,"type":"integer"},"notes":{"type":"string"},"quotas":{"additionalProperties":false,"properties":{"capabilities":{"const":2,"type":"integer"},"checks":{"const":3,"type":"integer"},"usage_events":{"const":2,"type":"integer"}},"required":["capabilities","checks","usage_events"],"type":"object"},"scopes":{"items":{"enum":["capabilities:write","capabilities:read","checks:write","checks:read","usage:write","self:delete"],"type":"string"},"type":"array"}},"required":["kind","lifetime_seconds","expires_at","quotas","scopes","notes"],"type":"object"},"PublicAccessGrantCreate":{"additionalProperties":false,"properties":{"display_label":{"maxLength":100,"minLength":1,"type":"string"}},"type":"object"},"PublicAccessGrantResponse":{"additionalProperties":false,"properties":{"access":{"$ref":"#/components/schemas/PublicAccessDescriptor"},"agent":{"$ref":"#/components/schemas/Principal"},"credential":{"description":"Present only on the original 201; omitted or null on replay","oneOf":[{"$ref":"#/components/schemas/BearerCredential"},{"type":"null"}]},"credential_disclosure":{"const":"once"}},"required":["agent","access","credential_disclosure"],"type":"object"},"RevisionCheckCreate":{"additionalProperties":false,"properties":{"capability_key":{"maxLength":128,"minLength":1,"type":"string"},"previous":{"$ref":"#/components/schemas/RevisionCheckPrevious"},"profile":{"$ref":"#/components/schemas/ProfileRef"},"requirements":{"$ref":"#/components/schemas/SupportedConsumerRequirements"},"revision_label":{"maxLength":128,"minLength":1,"type":"string"},"snapshot":{"$ref":"#/components/schemas/CapabilitySnapshot"},"source_kind":{"const":"CALLER_PROVIDED"}},"required":["capability_key","revision_label","source_kind","profile","requirements","snapshot","previous"],"type":"object"},"RevisionCheckPrevious":{"additionalProperties":false,"properties":{"report":{"$ref":"#/components/schemas/CheckReport","description":"The finished check report for previous.snapshot, at most 16 KiB. It is re-evaluated, never trusted; it must use the same requirements, profile and capability_key."},"revision_receipt":{"$ref":"#/components/schemas/RevisionReceipt","description":"Optional previous revision receipt whose current.report_digest names previous.report."},"snapshot":{"$ref":"#/components/schemas/CapabilitySnapshot","description":"The caller-provided snapshot that previous.report evaluated; its digest must match."}},"required":["snapshot","report"],"type":"object"},"RevisionCheckResponse":{"additionalProperties":false,"properties":{"check":{"$ref":"#/components/schemas/CheckReport"},"revision_receipt":{"$ref":"#/components/schemas/RevisionReceipt"}},"required":["check","revision_receipt"],"type":"object"},"RevisionReceipt":{"description":"Revision analysis beside an unchanged check report. The global previous-to-current comparison is authoritative. Isolated change evaluations report DIRECT_EFFECT_OBSERVED, NO_ISOLATED_EFFECT_OBSERVED or NOT_EVALUATED and cannot rule out interaction effects.","properties":{"analysis":{"type":"object"},"baseline":{"properties":{"status":{"enum":["REEVALUATION_MATCHED","REEVALUATION_MISMATCH","EVALUATOR_CHANGED","NOT_AVAILABLE"]}},"type":"object"},"caller_owns_operational_decision":{"const":true},"changes":{"properties":{"items":{"items":{"properties":{"isolated":{"enum":["DIRECT_EFFECT_OBSERVED","NO_ISOLATED_EFFECT_OBSERVED","NOT_EVALUATED"]},"scope":{"enum":["SNAPSHOT","PROTOCOL","REQUIRED_TOOL","UNREQUIRED_TOOL"]}},"type":"object"},"type":"array"}},"type":"object"},"core_digest":{"type":"string"},"current":{"type":"object"},"explanation":{"items":{"type":"object"},"type":"array"},"global":{"properties":{"conclusion_transition":{"enum":["STILL_PASS","NO_LONGER_PASS","NOW_PASS","STILL_NON_PASS_SAME_FINDINGS","STILL_NON_PASS_FINDINGS_CHANGED"]},"previous_conclusion_holds":{"type":"boolean"},"status":{"enum":["COMPLETE","INCOMPLETE","NOT_AVAILABLE"]},"transitions":{"items":{"type":"object"},"type":"array"}},"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"per_change_analysis":{"properties":{"interaction_effects":{"enum":["INTERACTION_EFFECT_POSSIBLE","SINGLE_CHANGE","NO_CHANGES"]},"limit":{"const":32},"status":{"enum":["COMPLETE","INCOMPLETE","NOT_APPLICABLE","NOT_AVAILABLE"]}},"type":"object"},"previous":{"type":"object"},"receipt_digest":{"type":"string"},"schema_version":{"const":"exactlane.revision-receipt/0.1"},"source":{"type":"object"},"subject":{"type":"object"}},"required":["schema_version","analysis","subject","previous","current","baseline","global","changes","per_change_analysis","explanation","caller_owns_operational_decision","source","limitations","core_digest","receipt_digest"],"type":"object"},"SchemaDialectIdentifier":{"description":"Absolute visible-ASCII URI compared by exact string equality","maxLength":256,"minLength":3,"pattern":"^[A-Za-z][A-Za-z0-9+.-]*:[!-~]+$","type":"string"},"SnapshotLintRequest":{"additionalProperties":false,"properties":{"requirements":{"type":"object"},"snapshot":{"type":"object"}},"required":["snapshot","requirements"],"type":"object"},"SnapshotLintResponse":{"additionalProperties":false,"properties":{"counts":{"type":"object"},"findings":{"items":{"additionalProperties":false,"properties":{"detail":{"type":"string"},"expect":{"description":"What the evaluator would do with this precondition. Not a verdict.","type":"string"},"kind":{"type":"string"},"location":{"type":"string"}},"required":["kind","location","detail","expect"],"type":"object"},"type":"array"},"is_compatibility_evidence":{"const":false},"live_endpoint_observed":{"const":false},"note":{"type":"string"},"profile":{"type":"object"},"schema_version":{"const":"exactlane.snapshot-lint/0.1"}},"required":["schema_version","profile","is_compatibility_evidence","live_endpoint_observed","note","findings","counts"],"type":"object"},"SupportedConsumerRequirements":{"description":"Profile 0.1 uses requirements 0.1, profile 0.2 uses requirements 0.2 and profile 0.3 uses requirements 0.3. Profile 0.3 also accepts JSON Schema annotation keywords in tool schemas.","oneOf":[{"$ref":"#/components/schemas/ConsumerRequirements"},{"$ref":"#/components/schemas/ConsumerRequirementsV02"}]},"ToolRequirement":{"additionalProperties":false,"properties":{"estimated_input_bytes":{"maximum":262144,"minimum":0,"type":"integer"},"name":{"maxLength":128,"minLength":1,"type":"string"},"provided_input_fields":{"additionalProperties":{"enum":["string","number","integer","boolean","array","object","null"],"type":"string"},"maxProperties":30,"type":"object"},"required_input_schema_dialect":{"$ref":"#/components/schemas/SchemaDialectIdentifier"},"required_output_paths":{"additionalProperties":{"enum":["string","number","integer","boolean","array","object","null"],"type":"string"},"maxProperties":30,"type":"object"},"required_output_schema_dialect":{"$ref":"#/components/schemas/SchemaDialectIdentifier"}},"required":["name"],"type":"object"},"ToolRequirementV02":{"additionalProperties":false,"properties":{"array_item_schema_requirements":{"description":"At most one input rule and one output rule; duplicate locations are rejected","items":{"$ref":"#/components/schemas/ArrayItemSchemaRequirement"},"maxItems":2,"minItems":1,"type":"array"},"estimated_input_bytes":{"maximum":262144,"minimum":0,"type":"integer"},"name":{"maxLength":128,"minLength":1,"type":"string"},"provided_input_fields":{"additionalProperties":{"enum":["string","number","integer","boolean","array","object","null"],"type":"string"},"maxProperties":30,"type":"object"},"required_input_schema_dialect":{"$ref":"#/components/schemas/SchemaDialectIdentifier"},"required_output_paths":{"additionalProperties":{"enum":["string","number","integer","boolean","array","object","null"],"type":"string"},"maxProperties":30,"type":"object"},"required_output_schema_dialect":{"$ref":"#/components/schemas/SchemaDialectIdentifier"}},"required":["name"],"type":"object"},"UsageEventCreate":{"additionalProperties":false,"description":"Client-attested acknowledgement that a finished owned check report was consumed. POST after a finished check while the same credential still owns the run. Exactlane validates and records decision and report_consumed; it does not derive them.","properties":{"autonomous":{"type":"boolean"},"check_run_id":{"description":"Owned finished check run id from POST /v0/checks or GET /v0/checks/{run_id}","maxLength":64,"minLength":1,"type":"string"},"decision":{"description":"Client-attested operational decision supplied by the caller. Exactlane produces compatibility evidence; the caller owns the operational decision. Exactlane validates and records this value but does not derive it from the report, and there is no universal verdict-to-decision mapping.","enum":["CONTINUE","UPDATE_INTEGRATION","HOLD"],"type":"string"},"integration_ref":{"description":"Opaque caller integration identifier (letters, digits, dot, underscore, colon, hyphen)","maxLength":128,"minLength":1,"type":"string"},"is_demo":{"type":"boolean"},"is_health_check":{"type":"boolean"},"is_retry":{"type":"boolean"},"occurred_at":{"description":"RFC3339 timestamp. Must not be more than five minutes in the future or older than 45 days.","format":"date-time","type":"string"},"platform_triggered":{"type":"boolean"},"report_consumed":{"description":"Required caller attestation that the finished report was consumed. Exactlane does not infer this from the check.","type":"boolean"},"trigger":{"description":"Client-attested real-work category. Public values: NEW_WORK, DEPENDENCY_CHANGE, REQUIREMENTS_CHANGE, INTEGRATION_FAILURE, OTHER_REAL_WORK. Other strings return 422 INVALID_TRIGGER.","enum":["NEW_WORK","DEPENDENCY_CHANGE","REQUIREMENTS_CHANGE","INTEGRATION_FAILURE","OTHER_REAL_WORK"],"type":"string"},"workflow_ref":{"description":"Opaque caller workflow identifier (letters, digits, dot, underscore, colon, hyphen). Unique with integration_ref per principal; a second distinct body returns 409 DUPLICATE_WORKFLOW_EVENT.","maxLength":128,"minLength":1,"type":"string"}},"required":["check_run_id","integration_ref","workflow_ref","trigger","decision","report_consumed","autonomous","is_demo","is_retry","is_health_check","platform_triggered","occurred_at"],"type":"object"},"UsageEventResponse":{"additionalProperties":false,"properties":{"usage_event":{"type":"object"}},"required":["usage_event"],"type":"object"}},"securitySchemes":{"agentBearer":{"scheme":"bearer","type":"http"},"bootstrapBearer":{"description":"Local operator bootstrap credential; not an agent credential","scheme":"bearer","type":"http"}}},"info":{"description":"Caller-specific MCP capability compatibility evidence for a specific agent workflow before reliance. Static snapshot versus requirements. A capability snapshot is a cached caller-provided claim, not live truth. No live probing. The caller owns CONTINUE, UPDATE_INTEGRATION, and HOLD. After a finished check, POST /v0/usage-events to attest that decision; report_consumed is required and Exactlane does not derive either field. Mutating REST writes except POST /v0/public-access/grants require Idempotency-Key. Streamable HTTP MCP at /mcp requires MCP-Protocol-Version, Mcp-Method, and params._meta as documented in /.well-known/exactlane.json. check_mcp_capability does not POST usage-events. Not a security scanner, certifier, or universal validator.","title":"Exactlane Preflight Phase 0A","version":"0.1.0"},"openapi":"3.1.0","paths":{"/.well-known/exactlane.json":{"get":{"responses":{"200":{"description":"Manifest"}},"summary":"Read the Exactlane MCP compatibility service manifest"}},"/admin":{"get":{"responses":{"200":{"description":"Private HTML overview"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid credential"}},"security":[{"bootstrapBearer":[]}],"summary":"Read local operational inspection view"}},"/openapi.json":{"get":{"responses":{"200":{"description":"OpenAPI 3.1"}},"summary":"Read this OpenAPI document"}},"/v0/agents":{"post":{"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCreateResponse"}}},"description":"Credential returned once or on exact replay"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed request or idempotency key"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid credential"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient scope or disabled live mode"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Resource absent or not owned"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency or unique-event conflict"},"411":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Content-Length is required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Request exceeds a hard bound"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Media type or content encoding is unsupported"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Request shape or fixed profile is unsupported"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Principal quota exceeded"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Bounded internal failure"}},"security":[{"bootstrapBearer":[]}],"summary":"Create one administrator-authorized scoped principal"}},"/v0/agents/{agent_id}":{"delete":{"parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRevocationResponse"}}},"description":"Credential revoked"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed request or idempotency key"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid credential"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient scope or disabled live mode"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Resource absent or not owned"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency or unique-event conflict"},"411":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Content-Length is required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Request exceeds a hard bound"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Media type or content encoding is unsupported"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Request shape or fixed profile is unsupported"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Principal quota exceeded"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Bounded internal failure"}},"security":[{"agentBearer":[]}],"summary":"Revoke the caller's own principal"}},"/v0/capabilities":{"post":{"description":"Idempotency-Key is required. The 201 body returns snapshot_digest, not snapshot bytes. A capability snapshot is a cached caller-provided claim, not live truth. After Public Preview grant expiry, the digest cannot be used to fetch bytes; keep inline bytes or re-submit. GET /v0/capabilities/{capability_id} returns snapshot bytes only while the owner credential is valid. There is no digest-fetch API.","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityResponse"}}},"description":"Capability revision created; body includes snapshot_digest, not snapshot bytes"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed request or idempotency key"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid credential"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient scope or disabled live mode"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Resource absent or not owned"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency or unique-event conflict"},"411":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Content-Length is required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Request exceeds a hard bound"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Media type or content encoding is unsupported"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Request shape or fixed profile is unsupported"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Principal quota exceeded"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Bounded internal failure"}},"security":[{"agentBearer":[]}],"summary":"Store an immutable caller-provided MCP snapshot revision"}},"/v0/capabilities/{capability_id}":{"get":{"description":"Owner-only. Returns snapshot bytes while the caller credential is still valid. After Public Preview grant expiry the bearer is expired; snapshot_digest is not a retrieval key and cannot fetch bytes. There is no digest-fetch API.","parameters":[{"in":"path","name":"capability_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityResponse"}}},"description":"Private capability revision"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Malformed request or idempotency key"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid credential"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Insufficient scope or disabled live mode"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Resource absent or not owned"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency or unique-event conflict"},"411":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Content-Length is required"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Request exceeds a hard bound"},"415":{"content":{"application/json":{"schema":{"$ref":"#/c

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://artifacts.apis.io/exactlane-dev/openapi/_original/exactlane-dev-api-openapi.json