ARWP Resolver MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ARWP Resolver MCPResolve https://example.com and explain what interfaces it exposes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Agent-Ready Web Profile
Resolve how a website can actually be used by agents.
Modern websites may expose HTML, Markdown negotiation, HTTP Link discovery, llms.txt, datasets, retrieval indexes, OpenAPI, Agent Skills, MCP, A2A, OAuth resource metadata, agents.json and other surfaces. A client should not need site-specific code — or guess which manifest is authoritative — to understand them.
ARWP now has two complementary parts:
ARWP Profile — an experimental publisher-maintained service map at
/ai/site-profile.json.ARWP Resolver — an interoperability engine that reads ARWP plus existing upstream/community/web discovery, preserves evidence and conflicts, and selects an interface for a concrete intent.
The profile is useful. It is not required to use the Resolver and it is not intended to replace upstream standards.
Public project site: https://dkharlanau.github.io/agent-ready-web-profile/
Profile contract: experimental v0.1. Released validator/Action: v0.1.0. The current main toolchain is version 0.2.0; npm publication remains an external release gate and must not be described as complete until it succeeds.
The problem
A site can legitimately publish several independent discovery surfaces:
WEBSITE
|
+---------------------+----------------------+
| | | | |
HTTP ARWP agents.* API/A2A Agent Skills
Link/HTML profile metadata
| | |
+-------------- MCP / OAuth / web ---------+
|
ARWP RESOLVER
|
evidence-backed service map
|
+------------+-------------+
| | |
read search tools
data structured agentThe Resolver does not ask every ecosystem to converge on one file. It answers:
What does this website actually expose, where did each claim come from, do the claims conflict, and which interface should a client use for this task?
Related MCP server: SBCF MCP Server
Resolve, explain and plan
node bin/arwp.mjs resolve https://example.com
node bin/arwp.mjs explain https://example.com
node bin/arwp.mjs plan https://example.com --intent=searchMachine-readable output is available with --json.
Supported planning intents:
readsearchstructuredtoolsagent
Planning is deterministic. It preserves source authority and fallbacks rather than hiding decisions behind a readiness score.
For read, richer publisher surfaces such as llms.txt or Markdown can be preferred, while ordinary canonical HTML remains an honest low-priority fallback. A plain website is therefore not treated as unusable merely because it has no AI-specific metadata.
See docs/RESOLVER.md.
Discovery surfaces
The Resolver currently normalizes evidence from:
canonical HTML and bounded ordinary web discovery;
HTTP
Linkrelations includingapi-catalog,service-desc,service-doc, Markdownalternateand ARWPdescribedby;Accept: text/markdowncontent-negotiation observation;valid ARWP profiles;
/agents.txtand/agents.jsonas a community convention;RFC 9727 API Catalog;
RFC 9728 root Protected Resource Metadata;
A2A
/.well-known/agent-card.json;Agent Skills
/.well-known/agent-skills/index.json;experimental MCP AI Catalog / Server Card discovery.
Experimental/community sources remain explicitly labeled. Static metadata is never silently upgraded into runtime conformance.
Source authority stays visible
Authority | Example |
| RFC 8288 / RFC 9727 / RFC 9728 |
| A2A Agent Card |
| Agent Skills discovery |
| agents.txt / agents.json |
| current MCP Server Card / AI Catalog work |
| ARWP publisher profile |
| directly observed HTML/HTTP evidence |
Authority is not authorization or a security trust rank.
Batch resolution
Inventory/research workflows can resolve several sites without site-specific wrappers:
node bin/arwp.mjs resolve-many targets.txt
node bin/arwp.mjs resolve-many targets.json --concurrency=4 --jsonThe library primitive is bounded to 100 targets and max concurrency 10. Same-origin work is serialized inside a batch and failures are isolated per site.
Snapshots and drift
Create compact operational state:
node bin/arwp.mjs snapshot https://example.com --output=example.snapshot.jsonCompare two observations:
node bin/arwp.mjs drift before.snapshot.json after.snapshot.json --jsonSnapshots keep identity, discovery sources, normalized interfaces, conflicts and deterministic intent plans. They do not copy canonical datasets.
Drift distinguishes added/removed/changed sources, interfaces, conflicts, identity and routing-plan changes. Observation time alone is not drift.
Resolver monitoring
A small monitor runtime builds on the same snapshots:
cp monitor/example.config.json arwp-resolver-monitor.json
npm run monitor:resolverA monitor may fail only on selected operational classes:
identitysource-removedinterface-removedconflict-addedplan-changedresolution-failedany
templates/github-actions/resolver-monitor.yml provides a scheduled workflow with cached operational snapshots and always-uploaded drift reports.
Runtime evidence is opt-in
A normal resolve remains static/bounded discovery and does not open MCP sessions or perform cryptographic trust checks.
The Resolver MCP exposes explicit verification tools when deeper evidence is wanted.
MCP runtime reconciliation
verify_mcp_runtime:
sends real modern
server/discoverwhere supported;falls back to legacy
initialize+notifications/initializedlifecycle;records negotiated/self-reported server metadata;
reports
authorization-requiredseparately from runtime failure;blocks cross-origin runtime redirects;
never invokes MCP tools;
never sends credentials discovered from metadata automatically;
surfaces static/runtime identity mismatches as conflicts.
A2A signature verification
verify_a2a_signatures:
validates the current v1 Agent Card required shape;
treats unsigned cards as
unsigned, not invalid;retrieves explicitly declared public HTTPS JWKS under the same network bounds;
verifies RS256 and ES256 signatures by
kid;distinguishes
signature-verified,signature-invalid,key-unavailable,unsupported-algorithm,invalid-cardandnot-assessed.
Internal RSA/EC fixtures and tampering detection pass CI. Broad cross-SDK interoperability is still an explicit external gate because current A2A implementations have had canonicalization/default-field inconsistencies. A cryptographically valid signature also does not by itself make a signer trustworthy.
Resolver as MCP
npm run resolver:mcpCurrent tools:
resolve_siteresolve_sitessearch_resolved_sitesexplain_siteplan_site_interfaceverify_mcp_runtimeverify_a2a_signatures
The prepared Official MCP Registry artifact launches this Resolver and does not require an ARWP profile.
The older ARWP-profile gateway remains available separately:
ARWP_PROFILE=https://example.com/ai/site-profile.json npm run mcp:startRemote Streamable HTTP profile gateway:
ARWP_PROFILE=https://example.com/ai/site-profile.json \
ARWP_HTTP_ALLOWED_HOSTS=mcp.example.com \
npm run mcp:httpSee docs/GATEWAY.md.
Resolver-backed federation
The original directory federation remains available:
node bin/arwp.mjs directory
node bin/arwp.mjs federated-search "outside view"The newer Resolver MCP search_resolved_sites starts from canonical site URLs. It does not require ARWP profiles.
Generic federation deliberately executes only resolved static JSON/JSONL/NDJSON retrieval indexes. It does not invent OpenAPI, MCP or A2A calls when operation semantics are unknown. Each result preserves source site, discovery source/authority and selected interface.
Public ARWP reference directory:
https://dkharlanau.github.io/agent-ready-web-profile/directory.jsonSee docs/DIRECTORY.md.
ARWP Profile
Publishers that want one explicit service map can expose:
/ai/site-profile.jsonMinimal profile:
{
"$schema": "https://raw.githubusercontent.com/dkharlanau/agent-ready-web-profile/v0.1.0/schema/site-profile.schema.json",
"profileVersion": "0.1",
"id": "example-knowledge-site",
"name": "Example Knowledge Site",
"canonicalUrl": "https://example.com/",
"description": "A reviewed public knowledge library.",
"web": {
"sitemap": "https://example.com/sitemap.xml",
"llms": "https://example.com/llms.txt"
}
}Optional HTML advertisement:
<link rel="describedby" type="application/json" href="/ai/site-profile.json">This is an ARWP convention, not a registered .well-known location. See SPEC.md.
Adopt ARWP from an existing website
node bin/arwp.mjs scan https://example.com
node bin/arwp.mjs init https://example.com
node bin/arwp.mjs validate ai/site-profile.json
node bin/arwp.mjs verify https://example.com/ai/site-profile.json
node bin/arwp.mjs health https://example.comscan observes bounded public evidence. init generates a conservative profile and does not invent unverified MCP, WebMCP, Skills or A2A capabilities.
Reusable Action:
- name: Validate Agent-Ready Web Profile
uses: dkharlanau/agent-ready-web-profile@v0.1.0
with:
profile: ai/site-profile.jsontemplates/github-actions/propose-arwp-profile.yml provides an opt-in profile-update PR workflow.
Bounded hosted discovery service
The server runtime exposes only fixed operations:
GET /health
POST /scan
POST /resolve
POST /explain
POST /planIt includes HTTPS-only target rules, DNS/private-network rejection, redirect revalidation, request/response bounds, explicit browser Origin allow-listing and shared rate limiting. It is not an arbitrary URL proxy.
ARWP_SCANNER_ALLOWED_ORIGINS=https://dkharlanau.github.io \
npm run scanner:httpA container artifact is in scanner-service/. Public hosting remains an external deployment gate.
Real reference suite
Five owner-controlled public knowledge-site architectures publish ARWP profiles and are live-verified:
Dzmitryi Kharlanau — SAP Knowledge;
Brali Practical Knowledge Library;
Cognitive Biases Knowledge Library;
CBT Cards;
Metkagram.
They are implementation/regression evidence, not independent adoption evidence.
Benchmark before marketing claims
Synthetic regression:
npm run benchmark:resolverIndependent-corpus runner:
npm run benchmark:external -- --output=benchmark-results/external.jsonThe external runner has a strict reviewed fixture schema. Aggregate results count only ownership=independent. Ground truth is manually reviewed public evidence and cannot be generated from Resolver output itself.
Subset strategy comparisons are selection-only projections over the same observed resolution. Request/byte/time metrics are attributed only to the actual Resolver network run.
The first pilot corpus contains 10 independent documentation sites and deliberately includes ordinary HTML controls and path-scoped discovery that the Resolver may miss. The target after reviewing the pilot is 20–50 sites.
No benchmark result is evidence of token savings, search ranking, adoption or answer quality. Raw negative results must remain visible. See docs/BENCHMARK.md.
What ARWP deliberately does not replace
Do not create ARWP-native replacements for:
RFC 8288 Web Linking;
RFC 9727 API Catalog;
RFC 9728 Protected Resource Metadata;
A2A Agent Cards;
MCP runtime discovery / Server Cards;
Agent Skills;
crawler AI-use preferences;
payment/commerce protocols.
Project rule:
UPSTREAM EXISTS
↓
resolve / verify / normalize it
UPSTREAM DOES NOT EXIST
↓
collect a concrete interoperability failure
ONLY THEN
↓
consider an ARWP-specific extensionSecurity boundaries
public HTTPS targets only;
private/reserved/link-local targets rejected;
redirect destinations revalidated;
bounded requests and responses;
no URL credentials;
generic federation does not invent operations;
metadata never grants permission;
static reachability never proves runtime conformance;
runtime probes are opt-in and do not invoke MCP tools;
signature verification does not establish signer trust;
conflicts remain visible instead of being hidden by a score.
Development direction
The North Star is:
How many external sites can ARWP correctly resolve and route without site-specific integration code?
Immediate work is increasingly external/evidence-driven:
preserve and review the first independent benchmark pilot;
fix systematic discovery gaps only after the baseline is recorded;
expand the corpus to 20–50 sites;
publish/install the 0.2.x Resolver package and MCP Registry artifact;
deploy the bounded public HTTPS discovery service;
obtain three independent adopters/consumers;
prove A2A signature interoperability against independent upstream implementations;
decide from evidence whether the ARWP Profile contract needs another version at all.
See ROADMAP.md.
Repository map
SPEC.md— experimental ARWP profile contract.schema/site-profile.schema.json— profile JSON Schema.bin/arwp.mjs— CLI for profile, Resolver and operations.lib/scanner.mjs— bounded website scanner.lib/resolver.mjs— multi-standard resolver and planner.lib/http-discovery.mjs— RFC 8288 / Markdown HTTP discovery.lib/mcp-runtime.mjs— opt-in MCP runtime reconciliation.lib/a2a-signature.mjs— bounded A2A signature verification.lib/resolver-snapshot.mjs— compact snapshots/drift.lib/resolver-batch.mjs— bounded multi-site resolution.lib/resolver-monitor.mjs— operational drift monitoring.resolver/server.mjs— Resolver MCP server.scanner-service/— bounded hosted scan/resolve service.gateway/— generic ARWP-profile MCP gateway.router/— profile and Resolver-backed federation.monitor/— monitor runner/config schema.registry/— initial public ARWP Directory.benchmarks/— synthetic and independent evidence tooling.docs/RESOLVER.md— Resolver model.docs/BENCHMARK.md— benchmark rules.ROADMAP.md— evidence-driven roadmap.
License
Apache License 2.0. See LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to scan any website for agent-readiness and generate the necessary artifacts (llms.txt, WebMCP scaffold, structured data) to make it agent-ready.18MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to discover and invoke Salesforce business capabilities (e.g., customer lookup, account creation) through MCP tools, keeping business logic in Apex while exposing it via REST, Agentforce, and OpenAPI.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to interact with any website through MCP, providing structured knowledge graph contexts, generated actions, and readiness scoring.
- AlicenseNot gradedqualityBmaintenanceEnables websites to expose a first-class interface for AI agents by providing read-only MCP tools like search_site and generating llms.txt discovery files.34MIT
Related MCP Connectors
Agent-to-agent referral network. Discover, recommend, and refer users between AI agents via MCP.
Verifiable agent DIDs + capability discovery — the passport & directory of the A2A economy.
AI agent website builder. Create and publish link-in-bio sites via MCP or REST API.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dkharlanau/agent-ready-web-profile'
If you have feedback or need assistance with the MCP directory API, please join our Discord server