Getting started
Inspecting a service
Use the hosted inspector with whichever public HTTPS URL you have: a service root or a supported machine-readable endpoint. InterfaceDelta discovers the supported surfaces a service publishes, or inspects a known endpoint directly. Inspection is bounded and passive; it does not create a monitor.
- Open Inspect.
- Enter a public service URL, MCP endpoint, OpenAPI document, A2A Agent Card, or ARD manifest.
- Review protocol, capability, access and consistency evidence.
- Use the Type control only when a nonstandard endpoint cannot be identified safely from its URL.
Hosted product
The inspector is the starting point
The browser inspector accepts one primary public HTTPS URL, performs bounded passive observation, and renders the resulting Passport. A separate MCP endpoint belongs under Advanced only when it differs from the primary URL, including an explicitly authorized cross-origin endpoint. Its current POST /api/inspect transport is unversioned and subject to change; it is not presented as InterfaceDelta API v1.
Observed inputs
Protocol surfaces
InterfaceDelta observes public ARD discovery documents, A2A Agent Cards, bounded MCP metadata inventories, declared OpenAPI documents, and experimental declarative WebMCP form tools. Protocol-specific evidence is retained while deterministic normalization makes the result comparable as one Passport.
MCP discovery and explicit endpoints
InterfaceDelta does not crawl arbitrary website paths or guess every possible machine interface. Published discovery can lead from a service root to eligible endpoints. A submitted URL whose path is deterministically recognized as MCP, or whose Type is set to MCP endpoint, authorizes an MCP metadata probe only at that exact URL. An ordinary arbitrary URL is never blindly posted to as MCP.
OpenAPI observation
OpenAPI is a machine-readable description of a conventional web API. InterfaceDelta observes JSON or safe YAML OpenAPI 3.1 documents when a valid ARD declaration identifies the artifact or when the user supplies a known document directly. It does not guess Swagger paths, crawl API documentation pages, or call operations described by the document.
The same direct-input model applies to an A2A Agent Card or ARD manifest. Auto recognizes only reviewed path conventions; the explicit Type selector is the restrained escape hatch for a nonstandard endpoint.
Same-origin declarations may use the hardened HTTPS boundary. Cross-origin declarations are recorded but not fetched. Local references are bounded; remote references, servers, callbacks, webhooks, OAuth, OpenID, links, examples and externalDocs are never contacted. Unsupported semantics remain indeterminate.
WebMCP declarative tools (experimental)
WebMCP is a proposed web standard, currently in browser origin trials, that lets a page offer tools to browser agents. InterfaceDelta reads only its declarative form markup — toolname, tooldescription, toolautosubmit and toolparamdescription — from the origin root page it already retrieves for ARD links and, when you inspect a URL with a path, from that one same-origin page, without its query or fragment. It never runs page scripts, submits forms or follows form actions, so tools registered by script are not visible, and seeing none is not proof that a site has none. Root-page tools enter the Passport and monitoring; submitted-page tools are a one-time inspection result unless you monitor that page.
MCP Apps and payment declarations
An MCP tool that declares an MCP Apps UI resource is recorded as declared; the UI resource is never fetched or rendered, and because InterfaceDelta does not advertise UI support, a missing declaration proves nothing. An MCP endpoint that answers HTTP 402 is reported as payment_required. A per-operation OpenAPI x-payment-info declaration is recorded as publisher-declared, summarized in the Passport by payment method, intent, currency and pricing mode. In every case nothing is offered, paid or verified. InterfaceDelta does not extract prices into the Passport; a 402 challenge header is kept exactly as the endpoint sent it.
OpenAPI to MCP checks require an exact valid publisher identifier and unambiguous schema slots. Names, descriptions, fuzzy matching, embeddings and LLM judgment are not evidence.
Primary protocol references: Agentic Resource Discovery (ARD), Agent2Agent (A2A), Model Context Protocol (MCP), and OpenAPI. These upstream specifications evolve; this page describes the exact versions and bounded behavior InterfaceDelta currently implements.
API
Current HTTP surface status
The hosted application has HTTP endpoints, but they do not all have the same stability or audience.
POST /api/inspectUnversioned hosted-inspector transport; public beta application endpoint, subject to change.POST /api/monitorsAuthenticated browser application endpoint using the InterfaceDelta web session.GET /api/account/*Authenticated first-party account endpoints; not an external developer API.GET /api/targets/:targetKey/historyRead-only public product surface for an exact known target key.GET /api/observations/:idRead-only unversioned product surface for an exact known observation.GET /api/v1/passports/:observationIdVersioned public exact-observation share contract.GET /api/badges/passport/:targetKeyRead-only badge surface; no scan triggered.Authentication status. Hosted account and token management use the passwordless-email web session. Developer API v1 operations use a first-party bearer token created in Account. The public exact-observation share route remains unauthenticated.
InterfaceDelta does not use a password for your account. Enter your email address to receive a short-lived, single-use sign-in link. Signing in enables monitor subscriptions, alert preferences, Developer API token management, and account controls; public Passport and history records remain separate from your account.
Contract mechanics / beta
Developer API v1 contract
Developers owns access-surface choice, token setup, and practical request examples. This deeper reference records the versioned transport boundary and its relationship to retained evidence. Open the REST API integration guide →
curl -X POST https://interfacedelta.com/api/v1/inspect \
-H "Authorization: Bearer $INTERFACEDELTA_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.org"}'const response = await fetch("https://interfacedelta.com/api/v1/inspect", {
method: "POST", headers: { Authorization: `Bearer ${process.env.INTERFACEDELTA_API_TOKEN}`, "Content-Type": "application/json" },
body: JSON.stringify({ url: "https://example.org" })
});import os, requests
response = requests.post("https://interfacedelta.com/api/v1/inspect", headers={"Authorization": f"Bearer {os.environ['INTERFACEDELTA_API_TOKEN']}"}, json={"url": "https://example.org"})Scopes are inspect:run, passport:read, monitors:read, and monitors:write. Collections use opaque cursors, default 20 and maximum 100. Errors include a stable code, bounded message and request ID.
Supported v1 routes
POST /api/v1/inspect—inspect:run; non-persistent.GET /api/v1/passports/:observationId— public exact-observation share contract.GET /api/v1/targets/:targetKey/historyand/changes—passport:read; bounded cursor pagination.GET /api/v1/monitors—monitors:read.POST /api/v1/monitorsandDELETE /api/v1/monitors/:subscriptionId—monitors:write.
Inspection uses the same public-HTTPS policy and is not persisted. Monitor creation preserves five targets per account, 50 shared global targets, and the approximately 24-hour cadence. Tokens bypass neither rate nor target controls.
OpenAPI: /api/openapi.json, OpenAPI 3.1.2. The public MCP interface is live; REST tokens are not MCP OAuth credentials and do not authenticate MCP accounts.
Concepts / reference
Canonical Passport
The current Passport schema version is 0.5.0. Major sections cover subject and observation identity, protocol surfaces, artifacts, endpoints, self-reported identity, access assertions, bounded inventory groups, capabilities, consistency findings and the semantic fingerprint. 0.5.0 adds an experimental webmcp surface for declarative form tools found in the origin root HTML. Baselines recorded by earlier CLI versions must be regenerated.
Evidence taxonomy
- Directly observed
- Bounded network or protocol evidence, such as an HTTP response, retrieved document, negotiated MCP version, or listed inventory.
- Publisher declared
- A semantic statement supplied by publisher metadata. Retrieving the document is observed; the claim inside remains declared.
- InterfaceDelta derived
- A pure deterministic conclusion such as canonical identity, fingerprint, consistency finding, or compatibility classification.
- Not observed / not fetched
- A bounded unknown with its reason retained, including unreachable, forbidden, auth-required, payment-required, policy-not-fetched, unsupported, or incomplete evidence.
The taxonomy is provenance, not a trust score. A Passport does not prove ownership, safety, security, legal compliance, active tool correctness, or universal compatibility.
Recorded history
Exact observation pages and the share API read already-recorded state and trigger no scan, observation write, or monitor mutation. Passport 0.2.0, 0.3.0, 0.4.0, and 0.5.0 records remain faithful to their retained representations. Stored comparisons retain their historical compatibility rule version and are not recomputed on read.
Production-normalized and validated. Incomplete inventory remains explicit and can make the Passport fingerprint incomplete.
{
"schemaVersion": "0.5.0",
"subject": {
"origin": "https://sample-agent.invalid",
"hostname": "sample-agent.invalid",
"scheme": "https",
"effectivePort": 443,
"inputUrl": "https://sample-agent.invalid"
},
"protocols": [
{
"protocol": "a2a",
"status": "valid"
},
{
"protocol": "ard",
"status": "valid"
},
{
"protocol": "mcp",
"status": "valid",
"revision": "2026-07-28"
},
{
"protocol": "mcp-server-card",
"status": "not_detected"
},
{
"protocol": "openapi",
"status": "valid",
"revision": "3.1.2"
},
{
"protocol": "webmcp",
"status": "observed"
}
],
"capabilities": [
{
"kind": "mcp.tool",
"protocolKey": "create_order",
"inventory": {
"complete": true
}
},
{
"kind": "openapi.operation",
"protocolKey": "POST /orders",
"inventory": {
"complete": false,
"truncatedReason": "OPENAPI_SCHEMA_KEYWORD_UNSUPPORTED:pattern"
}
},
{
"kind": "mcp.tool",
"protocolKey": "get_order",
"inventory": {
"complete": true
}
},
{
"kind": "mcp.resource",
"protocolKey": "sample://catalog",
"inventory": {
"complete": true
}
},
{
"kind": "a2a.skill",
"protocolKey": "research_brief",
"inventory": {
"complete": true
}
},
{
"kind": "mcp.tool",
"protocolKey": "search_catalog",
"inventory": {
"complete": true
}
},
{
"kind": "webmcp.tool",
"protocolKey": "request_quote",
"inventory": {
"complete": true
}
},
{
"kind": "mcp.prompt",
"protocolKey": "brief_template",
"inventory": {
"complete": true
}
}
],
"fingerprints": {
"passport": {
"algorithm": "sha256",
"canonicalization": "RFC8785",
"projectionVersion": "passport-semantic-v4",
"value": "e5c791a920aa6a7fb2556997d700816f58589b78345c1fde667c79b339df4542",
"complete": false
}
}
}AI applications
Public and account-authorized MCP
InterfaceDelta serves /mcp using MCP2026-07-28. The public read-only connection remains usable without signing in and is limited to already-recorded public state. The same read endpoint can also accept a WorkOS authorization issued for that exact resource. The canonical endpoint is https://interfacedelta.com/mcp; the connection command remains on the Developers page.
Two separate authorization resources
WorkOS Connect does not currently represent InterfaceDelta custom scopes. InterfaceDelta uses separate exact OAuth Resource Indicators and JWT audiences so fresh inspection authority cannot ride on the public/read authorization.
https://interfacedelta.com/mcp
anonymous-compatible → four recorded-data read tools
https://interfacedelta.com/mcp/inspect
WorkOS authorization required → inspect_public_service onlyThe read tools remain get_passport, get_latest_passport, list_target_history, and list_target_changes. The inspection resource accepts the same url, optional type, and optional mcpEndpoint inputs as the Web Inspector. A successful call records exactly one durable public-target Passport observation and its normal comparison; it does not create, remove, or alter a monitor.
Input
{ "url": "https://service.example/mcp", "type": "auto" }
Compact durable result
{
"observationId": "…",
"targetKey": "sha256:…",
"passportUrl": "https://interfacedelta.com/passport/…/observations/…",
"observedAt": "…",
"fingerprint": "sha256:…",
"comparison": { "state": "baseline|unchanged|changed|incompatible_version", "highestClassification": "…", "counts": { "breaking": 0, "nonBreaking": 0, "indeterminate": 0, "informational": 0 } },
"summary": { "surfacesObserved": 0, "capabilitiesObserved": 0 }
}The inspection resource is live and WorkOS-authorized. Keep the public/read MCP resource separate from the Inspector resource and its audience. InterfaceDelta Developer API tokens are not MCP OAuth tokens, and the caller's WorkOS credential is never passed to the inspected service.
Requesting an inspection proves only that an InterfaceDelta account requested the observation, not that it owns the target. The resulting observation may be available through existing public Passport and share surfaces. Connected-agent entries show read and inspection resource authorizations separately so either can be disconnected without presenting the other as revoked. The beta implementation permits 10 accepted fresh-inspection attempts per rolling hour per account; an explicit retry may record another observation.
OAuth and protocol details →Discovery publication
InterfaceDelta publishes ARD v0.91 at /.well-known/ard.json, advertises it from the root page with rel="ard", retains /.well-known/ai-catalog.json only for predecessor compatibility, and publishes experimental Server Card metadata at /mcp/server-card. The chain is ARD entry → experimental MCP Server Card → live MCP endpoint. Runtime server/discover and tools/list remain authoritative. These routes are live in the public beta.
Evidence
Example provenance
Public specimens distinguish observed network evidence from product-response examples and pinned protocol fixtures. The observed examples were captured by InterfaceDelta from its stateless controlled demonstration target at https://interfacedelta-demo-observed.vercel.app.
Real network observation through target policy, DNS-pinned HTTPS, protocol inspection and canonical normalization. Excerpted for readability.
{
"schemaVersion": "0.2.0",
"subject": {
"origin": "https://interfacedelta-demo-observed.vercel.app"
},
"observedAt": "2026-08-26T20:38:42.159Z",
"fingerprint": {
"algorithm": "sha256",
"canonicalization": "RFC8785",
"projectionVersion": "passport-semantic-v1",
"value": "499b2050aad01e1c8cb3d685381da22bc185e232603bd1815f5f88c152c00829",
"complete": true
}
}- Observed example
- Real InterfaceDelta target observation.
- Controlled demo comparison
- Real deterministic comparison between two observed demo Passports.
- Product response example
- Contract-valid hosted-product response, not target evidence.
- Protocol fixture
- Pinned standards artifact, not observed from the demo.
Reference
Result and error states
INVALID_REQUEST · INVALID_TARGET · TARGET_BLOCKEDnot_found · unreachable · INVALID_JSON · SCHEMA_INVALID · TIMEOUT · RESPONSE_TOO_LARGEauth_required · forbidden · payment_requiredPERSISTENCE_UNAVAILABLE · TARGET_NOT_FOUND · OBSERVATION_NOT_FOUNDAUTH_REQUIRED · MONITOR_LIMIT_REACHED · BETA_MONITOR_CAPACITY_REACHED · MONITOR_REQUEST_FAILEDProtocol result states and top-level API errors remain distinct; consumers should not flatten them into one generic failure.
Reference
Compatibility rules
The current comparison rule version is compatibility-rules-v7. Historical v1 records keep their original meaning. New comparisons emit breaking, non_breaking, informational and indeterminate changes. A changed fingerprint signals a semantic difference; it is not itself a breaking conclusion.
Each version preserves the one before it. v4 added MCP payment-required access changes, v5 WebMCP tools, and v6 OpenAPI operations that newly declare payment, which count as breaking only when both observations are complete and the operation also declares a 402 response. v7 adds per-page WebMCP rules for monitors that watch a specific page.
MCP tool schema analysis is directional: inputs prove every previous request remains accepted; outputs prove every current producer value remains valid for a previous consumer. The bounded Draft 2020-12 fragment covers boolean schemas, type sets, const and enum, numeric and string bounds, conservative objects, homogeneous arrays, and bounded local references. Remote references are never fetched. Unsupported dialects, keywords such as pattern or oneOf, and reached limits produce explicit indeterminate findings. Developer API and list_target_changes reads include bounded field paths, before/after facts, reason codes, and rule version.
{
"state": "changed",
"ruleVersion": "compatibility-rules-v7",
"counts": {
"breaking": 2,
"nonBreaking": 1,
"informational": 0,
"indeterminate": 1
},
"highestClassification": "breaking",
"changes": [
{
"code": "CAPABILITY_REMOVED",
"classification": "breaking",
"entityKind": "capability",
"entityId": "capability:e7c59cb6728b12f610ed630e",
"reasonCode": "PREVIOUSLY_PRESENT_CURRENTLY_ABSENT_COMPLETE_INVENTORIES"
},
{
"code": "MCP_TOOL_INPUT_SCHEMA_CHANGED",
"classification": "breaking",
"entityKind": "capability",
"entityId": "get_order",
"reasonCode": "REQUIRED_PROPERTY_ADDED"
},
{
"code": "INVENTORY_COMPARISON_INDETERMINATE",
"classification": "indeterminate",
"entityKind": "inventory",
"entityId": "artifact:ad0bcdeee448ac869c66297a|openapi.operation",
"reasonCode": "INVENTORY_INCOMPLETE_ON_ONE_OR_BOTH_SIDES"
},
{
"code": "CAPABILITY_ADDED",
"classification": "non_breaking",
"entityKind": "capability",
"entityId": "capability:a55ac47a48c9a53129a27418",
"reasonCode": "CURRENTLY_PRESENT_PREVIOUSLY_ABSENT_COMPLETE_INVENTORIES"
}
]
}Incomplete inventory can suppress removal inference. InterfaceDelta reports an indeterminate comparison instead of manufacturing certainty from missing evidence.
Hosted accounts
Monitoring and alerts
Signed-in users can subscribe to recurring target observations through the browser product. Breaking changes notify by default; indeterminate notifications are optional. A monitor watches the target origin's homepage and, if you choose one, a single same-origin page, and both are read for declarative WebMCP tools. Each watched page is its own target and counts toward your monitor limit. A watched page path becomes part of that target’s shared history: anyone with a Passport or observation link can read it, and it stays after your account is deleted, so never watch a path that contains a token, a private share link or personal data. Paths with credentials such as token= are refused. Current limits are beta guardrails, not service-level guarantees.
An account can also describe up to three workflows and the monitored services, endpoints and capabilities each depends on. For each named dependency InterfaceDelta reports whether a recorded change touches it, that no change was observed, or that the evidence cannot say. It is computed when you look, from recorded evidence only; it never says whether you are affected, and changes you did not name stay listed. Workflows are private to the account and are never shared, used for discovery, or sent to any model.
Programmatic access. Developer API v1 supports token-authenticated account monitor automation and, with the workflows:read scope, workflow relevance reads. Email-delivery internals remain browser-private.
Security model
Passive MCP boundary
Targets are public HTTPS only. Observation uses DNS/IP classification, DNS-pinned HTTPS, bounded redirects, bounded request and response sizes, and bounded pagination. No inspected-service credentials or arbitrary request headers are accepted.
Used
server/discoverinitializenotifications/initializedtools/listresources/listprompts/listNever performed
tools/callresources/readprompts/getOAuthsamplingelicitationtaskscompletionsubscriptionspaymentThis is a bounded observation model, not a security certification or a general-purpose MCP client.



