hikmahtech/drwhome
hikmahtech/drwhome hikmahtech/drwhome](https://glama.ai/mcp/servers/hikmahtech/drwhome) 📇 ☁️ – Remote MCP server at `https://drwho.me/mcp/mcp` with 10 developer utilities: base64 encode/decode, JWT decode (no verify), DNS lookup via Cloudflare DoH, UUID v4/v7, URL encode/decode, JSON format, User-Agent parse, IP lookup via ipinfo. Open access over streamable HTTP — point Claude Desktop at the URL.
Allow With Approval
trustsnap_725a9623e512d028.- Utility Coverage
- Step Up Auth
- Resource Contract
- Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.
- Serve /.well-known/oauth-protected-resource and point it at your authorization server metadata.
- Publish /.well-known/oauth-authorization-server from your issuer and include registration endpoint when supported.
- AI crawler activity
- Search crawler activity
- profile / badge SVG / trust summary inspection
Dispute this assessment
If any published claim about this server -- its score, a risk flag, a capability classification, or its taxonomy -- is factually wrong, tell us what evidence shows and we will review it. This does not require claiming or verifying ownership of the server first.
Verify responds to disputes within 5 business days and resolves them within 15.
Dispute history
No disputes filed for this server.
Risks
Security posture
Tool capability & risk inventory
| Tool | Capabilities | Risk | Findings | Notes | Evidence |
|---|---|---|---|---|---|
ip_lookup |
read | Low | none | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"ip": {
"description": "IPv4 or IPv6 address to look up, e.g. 1.2.3.4 or 2001:db8::1. Hostnames are not accepted.",
"type": "string"
}
},
"required": [
"ip"
],
"type": "object"
},
"risk_flags": []
}
Dispute this classification
|
dns_lookup |
read | Low | none | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"name": {
"description": "Domain name or hostname to resolve, e.g. example.com or mail.example.com. FQDN preferred; relative labels are accepted.",
"type": "string"
},
"type": {
"description": "DNS record type to query. Common choices: A (IPv4), AAAA (IPv6), MX (mail), TXT (SPF/DKIM/verification), NS (nameservers), CNAME (alias).",
"enum": [
"A",
"AAAA",
"MX",
"TXT",
"NS",
"CNAME"
],
"type": "string"
}
},
"required": [
"name",
"type"
],
"type": "object"
},
"risk_flags": []
}
Dispute this classification
|
dossier_dns |
read network | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read",
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_mx |
read network | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read",
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_spf |
read network | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read",
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_dmarc |
network | Medium | arbitrary network egress freeform input surface | Safeguards hinted in metadata. |
Schema & evidence{
"annotations": {},
"capabilities": [
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_dkim |
network | Medium | arbitrary network egress freeform input surface | Safeguards hinted in metadata. |
Schema & evidence{
"annotations": {},
"capabilities": [
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
},
"selectors": {
"description": "DKIM selector names to probe, e.g. [\"google\", \"s1\"]. Omit to probe the built-in common-selectors set: default, google, k1, selector1, selector2, mxvault.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_tls |
read network | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read",
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_redirects |
read network | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read",
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_headers |
read network | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read",
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_cors |
read write network | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read",
"write",
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
},
"method": {
"description": "Access-Control-Request-Method header value, e.g. POST or PUT. Defaults to GET if omitted.",
"type": "string"
},
"origin": {
"description": "Origin header value to include in the preflight, e.g. https://app.example.com. Defaults to https://domainposture.com if omitted.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_web_surface |
network | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
user_agent_parse |
read | Low | none | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"ua": {
"description": "Full User-Agent header value as sent by the browser or HTTP client, e.g. \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36\".",
"type": "string"
}
},
"required": [
"ua"
],
"type": "object"
},
"risk_flags": []
}
Dispute this classification
|
dossier_dnssec |
network | Medium | arbitrary network egress freeform input surface | Safeguards hinted in metadata. |
Schema & evidence{
"annotations": {},
"capabilities": [
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_mta_sts |
read network | Medium | arbitrary network egress freeform input surface | Safeguards hinted in metadata. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read",
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_tlsrpt |
network | Medium | arbitrary network egress freeform input surface | Safeguards hinted in metadata. |
Schema & evidence{
"annotations": {},
"capabilities": [
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_whois |
read network | Medium | arbitrary network egress freeform input surface | Safeguards hinted in metadata. |
Schema & evidence{
"annotations": {},
"capabilities": [
"read",
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_ct_log |
network | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
dossier_full |
network | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {},
"capabilities": [
"network"
],
"input_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress",
"freeform_input_surface"
]
}
Dispute this classification
|
Write-action governance
Status detail: No unsafe write-action governance gaps detected on the latest validation.
| Tool | Risk | Flags | Safeguards |
|---|---|---|---|
| No high-risk tools were detected on the latest run. | |||
Action-controls diff
New actions
| Action | Risk | Flags |
|---|---|---|
| No newly added actions. | ||
Changed actions
| Action | Change types | Risk |
|---|---|---|
| No materially changed actions. | ||
Critical alerts
Compatibility
Client compatibility verdicts
Client compatibility only means the server shape can work with a client. Production trust decision and write-action publishing are evaluated separately so a client-compatible server can still be blocked for production.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Warningstep_up_auth_probe• Missingconnector_replay_probe• OK — Frozen tool snapshots must survive refresh.request_association_probe• Missing — Roots, sampling, and elicitation should stay request-scoped.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Warning
Evidence provenance
action_safety_probe• OK
Evidence provenance
tool_snapshot_probe• OKconnector_replay_probe• OK
Client compatibility gate details
Remediation checklist
- Add OAuth-based authentication for remote connector auth.
- Support dynamic client registration (DCR) to simplify connector setup.
- Improve OAuth interoperability -- see the OAuth Interop score breakdown.
- Limit the exposed surface to search/fetch-style read tools.
- Remove or isolate write, delete, and exec-capable tools before using this read/search-only client profile.
- Configure OAuth for authenticated remote MCP access.
Remediation checklist
- Limit the exposed surface to search/fetch-style read tools.
- Remove or isolate write, delete, and exec-capable tools before using this read/search-only client profile.
- Configure OAuth for authenticated remote MCP access.
- Remove export, bulk, mutating, and high-blast-radius exposure before certifying company-knowledge use.
- Satisfy OAuth, compatibility, and connector-refresh requirements before using the Messages API remote MCP path.
- Resolve transport compliance issues before wider client rollout.
Remediation checklist
- Add a clearer auth boundary around risky write actions.
Verdict traces
- No active alert triggers.
Client verdict trace table
| Verdict | Status | Checks | Winning source | Conflicts |
|---|---|---|---|---|
openai_connectors |
Not client-compatible | initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe | live_validation | none |
claude_desktop |
Not client-compatible | initialize, tools_list, transport_compliance_probe | live_validation | none |
unsafe_for_write_actions |
Publishing blocked | action_safety_probe | live_validation | none |
snapshot_churn_risk |
Low | tool_snapshot_probe, connector_replay_probe | history | none |
Publishability policy profiles
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: No
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: No
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Compatibility fixtures
- remote_http_endpoint: Passes
- oauth_discovery: Degraded
- frozen_tool_snapshot_refresh: Passes
- request_association: Not Assessed
- remote_transport: Passes
- tool_discovery: Passes
- auth_connect: Passes
- safe_write_review: Degraded
Recommended for
Evidence
Current trust snapshot
trustsnap_725a9623e512d028Canonical machine links
Evidence confidence
Latest validation evidence
Failures
oauth_authorization_serverno authorization serveroauth_protected_resourceClient error '404 Not Found' for url 'https://www.domainposture.com/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404openid_configurationno authorization serverserver_cardClient error '404 Not Found' for url 'https://www.domainposture.com/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
Checks
| Check | Status | Latency | Evidence |
|---|---|---|---|
action_safety_probe |
OK | n/a | 16 egress-capable, non-read capabilities: write tool(s); no clear auth boundary; safeguards=6; confirmation=dossier dmarc, dossier dnssec, dossier mta sts, dossier tlsrpt. |
advanced_capabilities_probe |
Missing | n/a | No advanced MCP capability signals detected. |
connector_publishability_probe |
Warning | n/a | Publishability blockers: server card. |
connector_replay_probe |
OK | n/a | Backward compatible with no breaking tool-surface changes. |
determinism_probe |
OK | 863.4 ms | Check completed |
initialize |
OK | 887.7 ms | Protocol 2025-03-26 |
interactive_flow_probe |
OK | n/a | Check completed |
oauth_authorization_server |
Missing | n/a | no authorization server |
oauth_protected_resource |
Error | 876.5 ms | Client error '404 Not Found' for url 'https://www.domainposture.com/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
official_registry_probe |
Missing | n/a | Check completed |
openid_configuration |
Missing | n/a | no authorization server |
probe_noise_resilience |
OK | 1766.5 ms | Fetched https://drwho.me/robots.txt |
prompt_get |
Missing | n/a | not advertised |
prompts_list |
Missing | 1160.1 ms | not supported |
protocol_version_probe |
Warning | n/a | Claims 2025-03-26; 2 release(s) behind 2025-11-25. |
provenance_divergence_probe |
Not_Assessed | n/a | Check completed |
request_association_probe |
Missing | n/a | No request-association capabilities were advertised. |
resource_read |
Missing | n/a | not advertised |
resources_list |
Missing | 595.2 ms | not supported |
schema_divergence_probe |
Missing | n/a | no server card tools |
server_card |
Error | 1470.4 ms | Client error '404 Not Found' for url 'https://www.domainposture.com/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
session_resume_probe |
Warning | n/a | no session id |
step_up_auth_probe |
Missing | n/a | No OAuth or incremental-scope signals detected. |
tool_snapshot_probe |
OK | n/a | Check completed |
tools_list |
OK | 481.1 ms | 19 tool(s) exposed |
transport_compliance_probe |
Warning | 893.4 ms | Issues: missing session id, missing protocol header (bad protocol=400). |
utility_coverage_probe |
Missing | 460.9 ms | No completions evidence; no pagination evidence; tasks missing. |
Known versions
- No versions recorded.
Public server reputation
Benchmark tasks
| Benchmark task | Status | Evidence |
|---|---|---|
| Discover tools | Passes |
|
| Read-only fetch flow | Degraded |
|
| OAuth-required connect | Degraded |
|
| Safe write flow with confirmation | Likely to fail |
|
Utility coverage
Tool snapshot diff & changelog
Required-argument changes
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument changes detected. | ||
Output-schema drift
| Tool | Previous properties | Latest properties |
|---|---|---|
| No output-schema drift detected. | ||
Validation diff
Regressed checks: none
Improved checks: none
Newly assessed dimensions: none
No longer assessed dimensions: none
| Component | Previous | Latest | Delta |
|---|---|---|---|
| No component deltas between the latest two runs. | |||
Registry & provenance divergence
| Field | Registry | Live server card |
|---|---|---|
| Title | n/a | n/a |
| Version | n/a | n/a |
| Homepage | n/a | n/a |
Active alerts
No active alerts for the current server state.
Aliases & registry graph
| Identifier | Source | Canonical | Identity evidence | Score |
|---|---|---|---|---|
awesome-hikmahtech/drwhome |
awesome_mcp_servers | yes | canonical | 61.5 |
hikmahtech/drwhome |
glama_registry | no | repo_slug | n/a |
Alias consolidation
Strong alias identity requires matching remote URL, server-card URL, repository slug, or explicit registry cross-reference; shared provider namespace alone is not identity.
Source disagreements
| Field | What differs | Observed values |
|---|---|---|
| Registry source | Multiple registries or registry sync paths claim this same canonical server. | awesome_mcp_servers glama_registry |
| Remote URL | Aliases currently point at different MCP endpoints, which can indicate mirrors, stale registry data, or a real endpoint split. | https://drwho.me/mcp/mcp https://glama.ai/mcp/servers/lg8a3ch9of |
| Homepage | Registry entries disagree on the primary homepage for this server. | https://github.com/hikmahtech/drwhome https://glama.ai/mcp/servers/lg8a3ch9of |
| Registry identifier | Different registry-specific identifiers resolve to the same canonical server record here. | awesome_mcp_servers:hikmahtech/drwhome glama_registry:lg8a3ch9of |
Fix it
Why this score?
Algorithmic score breakdown
1 component(s) not assessed for this run: Provenance Divergence
Experimental candidate components
Actionable remediation
| Severity | Remediation | Why it matters | Recommended action |
|---|---|---|---|
| High | Align session and protocol behavior with Streamable HTTP expectations | Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. | Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.Playbook
|
| High | Expose /.well-known/oauth-protected-resource | Without a protected-resource document, OAuth clients cannot discover auth requirements reliably. | Serve /.well-known/oauth-protected-resource and point it at your authorization server metadata.Playbook
|
| High | Publish OAuth authorization-server metadata | Clients need authorization-server metadata to discover issuer, endpoints, and DCR support. | Publish /.well-known/oauth-authorization-server from your issuer and include registration_endpoint when supported.Playbook
|
| High | Publish a complete server card | Missing or incomplete server-card metadata weakens discovery, documentation, and trust signals. | Serve /.well-known/mcp/server-card.json and include tools, prompts/resources, homepage, and support links.Playbook
|
| Medium | Adopt a current MCP protocol revision | Older protocol revisions reduce compatibility with newer clients and registry programs. | Advertise a current MCP protocol revision (2025-06-18 or later) in both the initialize response and the MCP-Protocol-Version header.Playbook
|
| Medium | Close connector-publishing gaps | Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. | |
| Medium | Document minimal scopes and return cleaner auth challenges | Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints. | Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.Playbook
|
| Medium | Publish OpenID configuration | OIDC metadata improves token validation and client compatibility. | Expose /.well-known/openid-configuration with issuer, jwks_uri, and supported grants.Playbook
|
| Medium | Support resumable HTTP sessions cleanly | Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports. | Persist session state keyed by Mcp-Session-Id and honor Last-Event-ID on GET reconnects so clients can resume a dropped Streamable HTTP session.Playbook
|
| Low | Expose modern utility surfaces like completions, pagination, or tasks | Utility coverage improves interoperability with larger clients and long-lived agent workflows. | Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.Playbook
|
| Low | Publish newer MCP capability signals | Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking. | Advertise only the advanced capabilities (roots, sampling, elicitation) you have actually implemented end to end in the initialize capabilities object.Playbook
|
| Low | Publish or reconcile the server in the official MCP registry | Official registry presence improves discovery confidence and cross-source consistency. |
Point loss breakdown
| Component | Current | Points missing |
|---|---|---|
| Utility Coverage | 0/4 | -4.0 |
| Step Up Auth | 0/4 | -4.0 |
| Resource Contract | 0/4 | -4.0 |
| Request Association | 0/4 | -4.0 |
| Recovery Semantics | 0/4 | -4.0 |
| Prompt Contract | 0/4 | -4.0 |
| OAUTH Interop | 0/4 | -4.0 |
| Dependency Supply Chain Signal | 0/4 | -4.0 |
| Advanced Capability Coverage | 0/4 | -4.0 |
| Egress SSRF Resilience | 1/4 | -3.0 |
| Transport Compliance | 2/4 | -2.0 |
| Spec Recency | 2/4 | -2.0 |
Compatibility profiles
Connector URL: https://drwho.me/mcp/mcp # No OAuth metadata detected. # Server: awesome-hikmahtech/drwhome
{
"mcpServers": {
"drwhome": {
"command": "npx",
"args": ["mcp-remote", "https://drwho.me/mcp/mcp"]
}
}
}
smithery mcp add "https://drwho.me/mcp/mcp"
curl -sS https://drwho.me/mcp/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Governance
MCP TrustOps
TrustOps turns this report into operational controls: freshness SLAs, authenticated validation, semantic benchmarks, policy exports, alert subscriptions, badges, cost/compliance metadata, and runtime routing. Fresh trusted index decisions stay separate from long-tail inventory so stale scores do not masquerade as current evidence.
/v1/decideAlert subscription types
MCP Runtime hosting
Verify Hosted MCP turns a trusted server report into a managed remote MCP endpoint with GitHub deployment provenance, sandbox policy, encrypted secrets, release history, rollback, and audit/usage events.
/hosted/{namespace}/{name}/mcp| Deployment | Status | Endpoint | Release |
|---|---|---|---|
| No hosted runtime deployments yet. | |||
Authenticated validation sessions
Public validation is free. Authenticated validation is paid and proves scoped behavior, write-action safeguards, and authenticated tool execution.
/v1/verify/v1/ci/previewInstall snippets
Connector URL: https://drwho.me/mcp/mcp # No OAuth metadata detected. # Server: awesome-hikmahtech/drwhome
{
"mcpServers": {
"drwhome": {
"command": "npx",
"args": ["mcp-remote", "https://drwho.me/mcp/mcp"]
}
}
}
smithery mcp add "https://drwho.me/mcp/mcp"
curl -sS https://drwho.me/mcp/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Agent access & tool surface
tools/list, prompts/list, and resources/list checks.awesome-hikmahtech/drwhome.History
Validation history
| Timestamp | Status | Score | Latency | Tools |
|---|---|---|---|---|
| Aug 11, 2026 07:43:41 AM UTC | Healthy | 61.5 | 10413.5 ms | 19 |
| Aug 10, 2026 07:43:22 PM UTC | Healthy | 61.5 | 12222.7 ms | 19 |
| Aug 10, 2026 07:43:01 AM UTC | Healthy | 61.5 | 13161.8 ms | not fetched |
| Aug 09, 2026 07:42:36 PM UTC | Healthy | 61.5 | 13370.2 ms | not fetched |
| Aug 09, 2026 07:42:16 AM UTC | Healthy | 60.9 | 11034.7 ms | not fetched |
| Aug 08, 2026 07:36:40 PM UTC | Healthy | 60.4 | 13218.9 ms | not fetched |
| Aug 08, 2026 07:35:55 AM UTC | Healthy | 60.4 | 12428.4 ms | not fetched |
| Aug 07, 2026 07:35:17 PM UTC | Healthy | 60.4 | 11984.9 ms | not fetched |
Validation timeline
| Validated | Summary | Score | Protocol | Auth mode | Tools | High-risk tools | Changes |
|---|---|---|---|---|---|---|---|
| Aug 11, 2026 07:43:41 AM UTC | Healthy | 61.5 | 2025-03-26 | public | 19 | 0 | none |
| Aug 10, 2026 07:43:22 PM UTC | Healthy | 61.5 | 2025-03-26 | public | 19 | 0 | none |
| Aug 10, 2026 07:43:01 AM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 09, 2026 07:42:36 PM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 09, 2026 07:42:16 AM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 08, 2026 07:36:40 PM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 08, 2026 07:35:55 AM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 07, 2026 07:35:17 PM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 07, 2026 07:34:52 AM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 06, 2026 07:34:23 PM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
Recent validation runs
| Started | Status | Summary | Latency | Checks |
|---|---|---|---|---|
| Aug 11, 2026 07:43:31 AM UTC | Completed | Healthy | 10413.5 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, schema_divergence_probe, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Aug 10, 2026 07:43:10 PM UTC | Completed | Healthy | 12222.7 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, schema_divergence_probe, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Aug 10, 2026 07:42:48 AM UTC | Completed | Healthy | 13161.8 ms | not fetched (not counted in confidence) |
| Aug 09, 2026 07:42:23 PM UTC | Completed | Healthy | 13370.2 ms | not fetched (not counted in confidence) |
| Aug 09, 2026 07:42:05 AM UTC | Completed | Healthy | 11034.7 ms | not fetched (not counted in confidence) |
| Aug 08, 2026 07:36:26 PM UTC | Completed | Healthy | 13218.9 ms | not fetched (not counted in confidence) |
| Aug 08, 2026 07:35:42 AM UTC | Completed | Healthy | 12428.4 ms | not fetched (not counted in confidence) |
| Aug 07, 2026 07:35:05 PM UTC | Completed | Healthy | 11984.9 ms | not fetched (not counted in confidence) |
| Aug 07, 2026 07:34:39 AM UTC | Completed | Healthy | 13287.7 ms | not fetched (not counted in confidence) |
| Aug 06, 2026 07:34:12 PM UTC | Completed | Healthy | 11202.9 ms | not fetched (not counted in confidence) |
Incident & change feed
| Timestamp | Event | Details |
|---|---|---|
| Aug 11, 2026 07:43:41 AM UTC | Latest validation: healthy | Score 61.5 with status healthy. |
| Aug 05, 2026 10:58:22 AM UTC | Score corrected (post-1.0.503 remediation, R1 zero-anchoring) | Prior: 68.42. Corrected: 65.92. |
Technical details
Raw evidence view
Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": false,
"confirmation_signals": [
"dossier_dmarc",
"dossier_dnssec",
"dossier_mta_sts",
"dossier_tlsrpt"
],
"reason": null,
"safeguard_count": 6,
"summary": {
"annotation_conflict_tools": 0,
"bulk_access_tools": 0,
"capability_distribution": {
"network": 16,
"read": 12,
"write": 1
},
"declared_non_read_only_tools": 0,
"destructive_tools": 0,
"egress_tools": 16,
"exec_tools": 0,
"has_mutating_capability": true,
"has_non_read_capability": true,
"high_risk_tools": 0,
"risk_distribution": {
"critical": 0,
"high": 0,
"low": 3,
"medium": 16
},
"secret_tools": 0,
"tool_count": 19
}
},
"latency_ms": null,
"status": "ok"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": false,
"resource_links": false,
"resources": false,
"roots": false,
"sampling": false,
"structured_outputs": false
},
"enabled": [],
"enabled_count": 0,
"initialize_capability_keys": [
"tools"
]
},
"latency_ms": null,
"status": "missing"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"server_card"
],
"criteria": {
"action_safety": true,
"auth_flow": true,
"connector_replay": true,
"initialize": true,
"protocol_version": true,
"remote_transport": true,
"request_association": true,
"server_card": false,
"session_resume": true,
"step_up_auth": true,
"tool_surface": true,
"tools_list": true,
"transport_compliance": true
},
"high_risk_tools": 0,
"tool_count": 19,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"connector_replay_probe": {
"details": {
"added_tools": [],
"additive_output_changes": [],
"backward_compatible": true,
"output_breaks": [],
"removed_tools": [],
"required_arg_breaks": [],
"would_break_after_refresh": false
},
"latency_ms": null,
"status": "ok"
},
"determinism_probe": {
"details": {
"attempts": 2,
"baseline_signature": "723b1997fe8b402e8fd05b01c5995f4704c9d6be352c7db2cabcec7156c5f316",
"errors": [],
"matches": 2,
"stable_ratio": 1.0,
"successful": 2
},
"latency_ms": 863.39,
"status": "ok"
},
"initialize": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"tools": {
"listChanged": true
}
},
"protocolVersion": "2025-03-26",
"serverInfo": {
"name": "domainposture.com",
"version": "0.1.0"
}
}
},
"url": "https://drwho.me/mcp/mcp"
},
"latency_ms": 887.67,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": false,
"prompt_available": false,
"risk_hits": [],
"safe_hits": [
"browser"
]
},
"latency_ms": null,
"status": "ok"
},
"oauth_authorization_server": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"oauth_protected_resource": {
"details": {
"error": "Client error '404 Not Found' for url 'https://www.domainposture.com/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://drwho.me/.well-known/oauth-protected-resource"
},
"latency_ms": 876.55,
"status": "error"
},
"official_registry_probe": {
"details": {
"direct_match": false,
"official_peer_count": 0,
"registry_source": "awesome_mcp_servers"
},
"latency_ms": null,
"status": "missing"
},
"openid_configuration": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"probe_noise_resilience": {
"details": {
"consent_error": null,
"headers": {
"content-type": "text/plain",
"set-cookie": "__Host-authjs.csrf-token=a6ef9f136140a734ced8d6cc75040fc3db0832c21c329785bf5c5af97ab21a2a%7C3e1b9b396b79226de99dffa4925f6ff00797b2f52dc641d7bdfb37aac5798092; Path=/; HttpOnly; Secure; SameSite=Lax, __Secure-authjs.callback-url=https%3A%2F%2Fwww.domainposture.com; Path=/; HttpOnly; Secure; SameSite=Lax",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"url": "https://drwho.me/robots.txt",
"validation_disallowed": false
},
"latency_ms": 1766.54,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 3,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://drwho.me/mcp/mcp"
},
"latency_ms": 1160.14,
"status": "missing"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-03-26",
"lag_days": 244,
"latest_known_version": "2025-11-25",
"releases_behind": 2,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"comparable_field_count": 0,
"compared_fields": [
"title",
"version",
"homepage",
"repository"
],
"direct_official_match": false,
"drift_fields": [],
"metadata_document_count": 1,
"readable_sources": [],
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": null,
"server_card_version": null
},
"latency_ms": null,
"status": "not_assessed"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resources_list": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 5,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://drwho.me/mcp/mcp"
},
"latency_ms": 595.17,
"status": "missing"
},
"schema_divergence_probe": {
"details": {
"auth_scheme_mismatch": false,
"card_server_name": null,
"card_server_version": null,
"compared_dimensions": [
"server_name",
"server_version",
"declared_vs_observed_auth",
"tool_membership",
"parameter_names",
"required_parameters",
"parameter_types",
"output_schema_presence"
],
"compared_tool_count": 0,
"live_server_name": "domainposture.com",
"live_server_version": "0.1.0",
"reason": "no_server_card_tools",
"server_name_mismatch": false,
"server_version_mismatch": false
},
"latency_ms": null,
"status": "missing"
},
"server_card": {
"details": {
"error": "Client error '404 Not Found' for url 'https://www.domainposture.com/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://drwho.me/.well-known/mcp/server-card.json"
},
"latency_ms": 1470.43,
"status": "error"
},
"session_resume_probe": {
"details": {
"protocol_version": "2025-03-26",
"reason": "no_session_id",
"resume_expected": true,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [],
"challenge_headers": [],
"minimal_scope_documented": false,
"oauth_present": false,
"scope_specificity_ratio": 0.0,
"step_up_signals": [],
"supported_scopes": []
},
"latency_ms": null,
"status": "missing"
},
"tool_snapshot_probe": {
"details": {
"added": [],
"changed_outputs": [],
"current_tool_count": 19,
"previous_tool_count": 19,
"removed": [],
"similarity": 1.0
},
"latency_ms": null,
"status": "ok"
},
"tools_list": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 2,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"description": "Context lookup: Resolve an IPv4 or IPv6 address to its geolocation, ASN, org name, and city/country. Use when you need network or location context for a raw IP address; prefer dns_lookup or dossier_dns for hostname resolution. Queries ipinfo.io with a server-side token \u2014 the token is never exposed to callers. Returns a JSON object with fields ip, city, region, country, org, loc, and timezone. On failure, returns an error string describing what went wrong.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"ip": {
"description": "IPv4 or IPv6 address to look up, e.g. 1.2.3.4 or 2001:db8::1. Hostnames are not accepted.",
"type": "string"
}
},
"required": [
"ip"
],
"type": "object"
},
"name": "ip_lookup"
},
{
"description": "Context lookup: Resolve a single DNS record type (A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, or SRV) and return the raw answers. Use for quick, targeted lookups of one record type; prefer dossier_dns for a full multi-type DNS audit in parallel, or dossier_full for a complete domain health check. Queries Cloudflare DoH (1.1.1.1/dns-query) over HTTPS, follows CNAME chains, 5 s timeout. Returns a JSON array of answer objects with name, type, and data fields. On error, returns a string describing the DNS failure.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"name": {
"description": "Domain name or hostname to resolve, e.g. example.com or mail.example.com. FQDN preferred; relative labels are accepted.",
"type": "string"
},
"type": {
"description": "DNS record type to query. Common choices: A (IPv4), AAAA (IPv6), MX (mail), TXT (SPF/DKIM/verification), NS (nameservers), CNAME (alias).",
"enum": [
"A",
"AAAA",
"MX",
"TXT",
"NS",
"CNAME"
],
"type": "string"
}
},
"required": [
"name",
"type"
],
"type": "object"
},
"name": "dns_lookup"
},
{
"description": "Core dossier check: Fetch a domain's full DNS profile \u2014 A, AAAA, NS, SOA, CAA, and TXT records \u2014 all in parallel. Use as the first step of a domain audit or when you need a comprehensive DNS snapshot in one call; prefer dns_lookup for a single record type, or dossier_full for all 10 dossier checks at once. Fires six Cloudflare DoH (1.1.1.1) queries concurrently, each with a 5 s timeout. Returns a CheckResult discriminated union: on success, {status:\"ok\", records:{a, aaaa, ns, soa, caa, txt}}; on failure, {status:\"error\", reason}.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_dns"
},
{
"description": "Core dossier check: Look up a domain's MX (mail exchanger) records and return them sorted ascending by priority. Use when verifying inbound-mail routing or as a precursor to SPF or DMARC checks; prefer dns_lookup with type=MX if you only need the raw DNS answer without the ranked view. Queries Cloudflare DoH (1.1.1.1), follows CNAME aliases, 5 s timeout. Returns a CheckResult discriminated union: on success, {status:\"ok\", records:[{exchange, priority},...]} sorted by priority; on failure, {status:\"error\", reason}.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_mx"
},
{
"description": "Core dossier check: Retrieve and parse a domain's SPF record, decomposing it into mechanisms and qualifiers. Use to verify email sender policy, debug delivery failures, or check the 10-lookup limit; pair with dossier_dmarc for full email-auth coverage, or use dns_lookup with type=TXT for the raw record only. Fetches TXT records via Cloudflare DoH (1.1.1.1), 5 s timeout, locates the v=spf1 record and parses all mechanisms. Returns a CheckResult: on success, {status:\"ok\", raw, mechanisms:[{type, value, qualifier},...], lookupCount}; on failure, {status:\"error\", reason}.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_spf"
},
{
"description": "Core dossier check: Retrieve and parse a domain's DMARC policy from its _dmarc.<domain> TXT record, returning all tags. Use to audit email authentication policy, verify the p (policy) and rua (reporting) settings, or confirm alignment mode; pair with dossier_spf and dossier_dkim for complete email-auth coverage. Queries _dmarc.<domain> via Cloudflare DoH (1.1.1.1), 5 s timeout; parses each tag=value pair. Returns a CheckResult: on success, {status:\"ok\", raw, tags:{p, rua, ruf, adkim, aspf,...}}; on failure, {status:\"error\", reason}.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_dmarc"
},
{
"description": "Core dossier check: Probe a domain's DKIM public keys by querying <selector>._domainkey.<domain> for each selector. Use to verify signing configuration or discover active selectors; supply selectors when you know the ESP's selector, or omit to probe six common selectors (default, google, k1, selector1, selector2, mxvault). Issues parallel Cloudflare DoH (1.1.1.1) TXT queries per selector, 5 s timeout each. Returns a CheckResult: {status:\"ok\", found:[{selector, publicKey, raw},...], notFound:[...]} or {status:\"error\", reason}.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
},
"selectors": {
"description": "DKIM selector names to probe, e.g. [\"google\", \"s1\"]. Omit to probe the built-in common-selectors set: default, google, k1, selector1, selector2, mxvault.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_dkim"
},
{
"description": "Core dossier check: Fetch and inspect the TLS certificate presented by a domain on port 443, returning chain details and validity period. Use to verify certificate expiry, issuer, Subject Alternative Names, or detect mismatched or self-signed certs; not a full cipher-suite scanner. Performs a TLS handshake from the server edge, 5 s timeout; extracts the leaf certificate. Returns a CheckResult: on success, {status:\"ok\", subject, issuer, validFrom, validTo, daysRemaining, sans, fingerprint}; on failure, {status:\"error\", reason}.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_tls"
},
{
"description": "Core dossier check: Trace the full HTTP redirect chain starting from https://<domain>/, recording each hop's status code and destination URL. Use to debug redirect loops, verify HTTP\u2192HTTPS upgrades, or audit link shorteners; stops at 10 hops to prevent infinite loops. Follows Location headers with fetch (no auto-redirect), 5 s per hop. Returns a CheckResult: on success, {status:\"ok\", hops:[{url, statusCode, redirectsTo},...], final}; on failure, {status:\"error\", reason}.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_redirects"
},
{
"description": "Core dossier check: Fetch https://<domain>/ and return all HTTP response headers, with an audit highlighting missing or misconfigured security headers. Use to review CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy; for redirect tracing use dossier_redirects instead. Single GET via fetch, 5 s timeout, captures raw response headers before any redirect is followed. Returns a CheckResult: on success, {status:\"ok\", headers:{...}, securityAudit:[{header, present, value},...]}; on failure, {status:\"error\", reason}.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_headers"
},
{
"description": "Core dossier check: Send a CORS preflight OPTIONS request to https://<domain>/ and return the access-control-* response headers. Use to verify CORS policy for a specific origin-method pair, or to check whether a domain allows cross-origin requests; provide origin and method to simulate a precise preflight, or omit to use defaults (origin: https://domainposture.com, method: GET). Single OPTIONS request via fetch, 5 s timeout. Returns a CheckResult: on success, {status:\"ok\", headers:{access-control-allow-origin,...}}; on failure, {status:\"error\", reason}.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
},
"method": {
"description": "Access-Control-Request-Method header value, e.g. POST or PUT. Defaults to GET if omitted.",
"type": "string"
},
"origin": {
"description": "Origin header value to include in the preflight, e.g. https://app.example.com. Defaults to https://domainposture.com if omitted.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_cors"
},
{
"description": "Core dossier check: Snapshot a domain's public web surface: robots.txt, sitemap.xml, and the home-page <head> metadata (title, description, OpenGraph, Twitter cards). Use for SEO audits, content discovery, or verifying metadata before sharing; for HTTP headers use dossier_headers, for redirect behavior use dossier_redirects. Fetches /, /robots.txt, and /sitemap.xml concurrently via HTTPS, 5 s each; parses <head> with a lightweight HTML parser. Returns a composite CheckResult: {status:\"ok\", meta:{title, description, og, twitter}, robots, sitemapPresent} or {status:\"error\", reason}.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_web_surface"
},
{
"description": "Context lookup: Parse a User-Agent header string into structured browser, OS, device type, and rendering-engine components. Use to identify client capabilities from a raw UA string, e.g. when analysing server logs or request headers; does not perform any network lookups \u2014 entirely local parsing. Runs synchronously using the ua-parser-js library with no external calls. Returns a JSON object with browser.name, browser.version, os.name, os.version, device.type, device.vendor, and engine.name fields; unknown fields are empty strings.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"ua": {
"description": "Full User-Agent header value as sent by the browser or HTTP client, e.g. \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36\".",
"type": "string"
}
},
"required": [
"ua"
],
"type": "object"
},
"name": "user_agent_parse"
},
{
"description": "Core dossier check: Verify DNSSEC chain-of-trust for a domain (DS, DNSKEY, AD flag). Use to confirm the zone is signed and resolvers accept the chain; prefer dossier_dns for raw record types or dossier_full for the complete audit. Fires Cloudflare DoH DS and DNSKEY queries with DO=1; 8s timeout. Returns a CheckResult discriminated union with { dnssecEnabled, adFlag, ds[], dnskey[] } on success.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_dnssec"
},
{
"description": "Core dossier check: Fetch and validate a domain's MTA-STS policy (mode, mx, max_age, policy id). Use to confirm inbound SMTP is locked to TLS for this domain. Resolves the _mta-sts TXT record, then fetches the policy from mta-sts.<domain>/.well-known/mta-sts.txt; 10s timeout. Returns a CheckResult; not_applicable when no MTA-STS TXT is published.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_mta_sts"
},
{
"description": "Core dossier check: Look up a domain's TLS-RPT (SMTP TLS Reporting) policy. Use to confirm the domain receives reports of SMTP-TLS failures. Resolves _smtp._tls.<domain> TXT via Cloudflare DoH; 5s timeout. Returns a CheckResult; not_applicable when no record is published.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_tlsrpt"
},
{
"description": "Core dossier check: Look up the registrar, creation date, expiry date, and registry statuses for a domain. Use for ownership/expiry audit. Queries WHOIS over TCP/43 via the `whoiser` library; 15s timeout. Returns a CheckResult; not_applicable when the registry refuses or redacts the query (common on cloud IPs).",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_whois"
},
{
"description": "Core dossier check: Discover subdomains visible in Certificate Transparency logs. Use for attack-surface mapping; prefer dossier_full when running a complete audit. Queries crt.sh first, falls back to certspotter; capped at 100 unique subdomains; 10s timeout. Returns a CheckResult with { subdomains[], wildcards[], certCount, source }.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_ct_log"
},
{
"description": "Aggregate dossier check: Run all 10 Domain Dossier checks \u2014 dns, mx, spf, dmarc, dkim, tls, redirects, headers, cors, web-surface \u2014 in parallel and return all results in a single response. Use when you need a comprehensive domain health snapshot in one call; counts as ONE paywall call regardless of how many checks run. For a single focused check, prefer the individual dossier_* tools to minimise latency. Fires all 10 checks concurrently via Cloudflare DoH or direct HTTPS, 5 s per-check timeout. Returns a JSON object keyed by check id (dns, mx, etc.), each value a CheckResult discriminated union ({status:\"ok\",...} or {status:\"error\", reason}).",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"domain": {
"description": "Public FQDN, e.g. example.com. Must be resolvable on the public internet; IPs, ports, paths, and protocol prefixes are rejected.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dossier_full"
}
]
}
},
"url": "https://drwho.me/mcp/mcp"
},
"latency_ms": 481.05,
"status": "ok"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"bad_protocol_payload": {
"error": {
"code": -32000,
"message": "Bad Request: Unsupported protocol version: 1999-99-99 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)"
},
"id": null,
"jsonrpc": "2.0"
},
"bad_protocol_status_code": 400,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
},
"latency_ms": 893.42,
"status": "warning"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": null
},
"initialize_capability_keys": [
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 200,
"probe_status": "missing"
}
},
"latency_ms": 460.91,
"status": "missing"
}
},
"failures": {
"oauth_authorization_server": {
"reason": "no_authorization_server"
},
"oauth_protected_resource": {
"error": "Client error '404 Not Found' for url 'https://www.domainposture.com/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://drwho.me/.well-known/oauth-protected-resource"
},
"openid_configuration": {
"reason": "no_authorization_server"
},
"server_card": {
"error": "Client error '404 Not Found' for url 'https://www.domainposture.com/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://drwho.me/.well-known/mcp/server-card.json"
}
},
"remote_url": "https://drwho.me/mcp/mcp",
"server_card_payload": null,
"server_identifier": "awesome-hikmahtech/drwhome"
}
Capabilities
- OAuth:
- DCR/CIMD:
- Prompts:
- Homepage: https://github.com/hikmahtech/drwhome
- Docs: https://github.com/hikmahtech/drwhome
- Support: https://github.com/hikmahtech/drwhome
- Icon: none
- Remote endpoint: https://drwho.me/mcp/mcp
- Server card: none
Transport compliance drilldown
Issues: missing_session_id, missing_protocol_header
Request association
Connector replay
Required-argument replay breaks
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument replay breaks detected. | ||
Output-schema replay breaks
| Tool | Removed properties | Added properties |
|---|---|---|
| No output-schema replay breaks detected. | ||