offerhopper.ai Grocery and Drug Store Shopping Assistant
German grocery and drug store real time prices and offers including optimal route planing
Block For Production
trustsnap_d9bd18f40bba43b0.- Utility Coverage
- Step Up Auth
- Request Association
- Add an explicit confirm/dry-run parameter or two-step confirmation flow to write, delete, exec, and egress-capable tool…
- 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.
- No segmented attention signals observed in the current window.
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.
Risk
Security posture
Tool capability & risk inventory
| Tool | Capabilities | Risk | Findings | Notes |
|---|---|---|---|---|
plan_optimal_shopping_route |
read network financial | Medium | arbitrary network egress | No explicit safeguard hints detected. |
Write-action governance
Status detail: No high-risk write actions; auth boundary is public or unclear with 0 safeguard(s) and 0 confirmation signal(s).
| Tool | Risk | Flags | Safeguards |
|---|---|---|---|
| No high-risk tools were detected on the latest run. | |||
Action-controls diff
New actions
| Action | Risk | Flags |
|---|---|---|
plan_optimal_shopping_route | Medium | arbitrary network egress |
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• Warning
Evidence provenance
tool_snapshot_probe• OKconnector_replay_probe• OK
Client compatibility gate details
Remediation checklist
OpenAI connectors expect OAuth for remote server auth.Dynamic client registration materially improves connector setup.OAuth interoperability should be strong.The tool surface is not limited to search/fetch-style read tools.This client profile expects a read/search-only tool surface, but write, delete, or exec-capable tools are present.OAuth is not configured, so this client cannot authenticate without additional setup.
Remediation checklist
The tool surface is not limited to search/fetch-style read tools.This client profile expects a read/search-only tool surface, but write, delete, or exec-capable tools are present.OAuth is not configured, so this client cannot authenticate without additional setup.A connector refresh would break existing tool references (new required arguments or removed tools) -- an admin must re-approve the connector before this is safe.Not yet safe for company-knowledge use: requires a search/fetch-only surface with no export, bulk, mutating, or high-blast-radius exposure.Not yet safe for the Messages API remote MCP path: requires OAuth, a compatible connector profile, and no pending connector-refresh risk.
Remediation checklist
Add a clearer auth boundary around risky write actions.Add confirmation or dry-run semantics for risky actions.action_safety_probe is in warning -- confirm the flagged risk before treating this as write-safe.Production readiness is blocked by an active alert: Tool snapshot changed.Production readiness is blocked by an active alert: Auth mode changed.
Verdict traces
tool_snapshot_changed• high • Tool snapshot changedauth_mode_changed• high • Auth mode changed
Client verdict trace table
| Verdict | Status | Checks | Winning source | Conflicts |
|---|---|---|---|---|
openai_connectors |
Partially client-compatible | initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe | live_validation | none |
claude_desktop |
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 |
Medium | 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: Yes
- 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: Yes
- 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: Passes
- remote_transport: Passes
- tool_discovery: Passes
- auth_connect: Passes
- safe_write_review: Degraded
Recommended for
Evidence
Current trust snapshot
trustsnap_d9bd18f40bba43b0Canonical machine links
Evidence confidence
Latest validation evidence
Failures
oauth_authorization_serverno authorization serveroauth_protected_resourceClient error '403 Forbidden' for url 'https://mcp.offerhopper.ai/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403openid_configurationno authorization serverserver_cardClient error '403 Forbidden' for url 'https://mcp.offerhopper.ai/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403
Checks
| Check | Status | Latency | Evidence |
|---|---|---|---|
action_safety_probe |
Warning | n/a | No write-action risk evidence recorded. |
advanced_capabilities_probe |
OK | n/a | 4 capability signal(s): prompts, resource links, resources, structured outputs. |
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 | 399.6 ms | Check completed |
initialize |
OK | 423.8 ms | Protocol 2025-03-26 |
interactive_flow_probe |
Missing | n/a | Check completed |
oauth_authorization_server |
Missing | n/a | no authorization server |
oauth_protected_resource |
Error | 22.4 ms | Client error '403 Forbidden' for url 'https://mcp.offerhopper.ai/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 |
official_registry_probe |
OK | n/a | Check completed |
openid_configuration |
Missing | n/a | no authorization server |
probe_noise_resilience |
OK | 260.2 ms | Fetched https://mcp.offerhopper.ai/robots.txt |
prompt_get |
OK | 303.3 ms | 1 prompt message(s) returned |
prompts_list |
OK | 292.1 ms | 2 prompt(s) exposed |
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 |
OK | 126.4 ms | 1 resource content item(s) returned |
resources_list |
OK | 422.6 ms | 6 resource item(s) exposed |
schema_divergence_probe |
Missing | n/a | no server card tools |
server_card |
Error | 6.2 ms | Client error '403 Forbidden' for url 'https://mcp.offerhopper.ai/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 |
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 | 307.3 ms | 1 tool(s) exposed |
transport_compliance_probe |
Warning | 303.1 ms | Issues: missing session id, missing protocol header (bad protocol=400). |
utility_coverage_probe |
Missing | 278.1 ms | No completions evidence; no pagination evidence; tasks missing. |
Raw evidence view
Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": false,
"confirmation_signals": [],
"reason": null,
"safeguard_count": 0,
"summary": {
"annotation_conflict_tools": 0,
"bulk_access_tools": 0,
"capability_distribution": {
"financial": 1,
"network": 1,
"read": 1
},
"declared_non_read_only_tools": 0,
"destructive_tools": 0,
"egress_tools": 1,
"exec_tools": 0,
"has_mutating_capability": true,
"has_non_read_capability": true,
"high_risk_tools": 0,
"risk_distribution": {
"critical": 0,
"high": 0,
"low": 0,
"medium": 1
},
"secret_tools": 0,
"tool_count": 1
}
},
"latency_ms": null,
"status": "warning"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": true,
"resource_links": true,
"resources": true,
"roots": false,
"sampling": false,
"structured_outputs": true
},
"enabled": [
"prompts",
"resource_links",
"resources",
"structured_outputs"
],
"enabled_count": 4,
"initialize_capability_keys": [
"experimental",
"extensions",
"logging",
"prompts",
"resources",
"tools"
]
},
"latency_ms": null,
"status": "ok"
},
"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": 1,
"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": "813d385bdb6387dca68359ee5a4ba4ac035d7f002b4e2225a1ccd11020dda9c7",
"errors": [],
"matches": 2,
"stable_ratio": 1.0,
"successful": 2
},
"latency_ms": 399.56,
"status": "ok"
},
"initialize": {
"details": {
"headers": {
"content-type": "text/event-stream"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"experimental": {},
"extensions": {
"io.modelcontextprotocol/ui": {}
},
"logging": {},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true,
"subscribe": false
},
"tools": {
"listChanged": true
}
},
"instructions": "offerhopper.ai grocery and drug store shopping optimizer for Germany. Tool: plan_optimal_shopping_route \u2014 finds live deals and plans optimal multi-stop shopping routes. Prompts: 'Plan a shopping trip' (conversation starter), 'Explain my result' (result walkthrough). Resources: resource://about/service, resource://usage/guide, resource://retailers/supported, resource://config/defaults, resource://config/personas, resource://about/response_structure.",
"protocolVersion": "2025-03-26",
"serverInfo": {
"name": "ShoppingOptimizer",
"version": "1.0.2",
"websiteUrl": "https://offerhopper.ai"
}
}
},
"url": "https://mcp.offerhopper.ai/mcp"
},
"latency_ms": 423.77,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": false,
"prompt_available": true,
"risk_hits": [],
"safe_hits": []
},
"latency_ms": null,
"status": "missing"
},
"oauth_authorization_server": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"oauth_protected_resource": {
"details": {
"error": "Client error '403 Forbidden' for url 'https://mcp.offerhopper.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403",
"url": "https://mcp.offerhopper.ai/.well-known/oauth-protected-resource"
},
"latency_ms": 22.44,
"status": "error"
},
"official_registry_probe": {
"details": {
"direct_match": true,
"official_peer_count": 1,
"registry_identifier": "ai.offerhopper.mcp/shopping-optimizer",
"registry_source": "official_registry"
},
"latency_ms": null,
"status": "ok"
},
"openid_configuration": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"probe_noise_resilience": {
"details": {
"headers": {
"content-type": "text/plain; charset=utf-8"
},
"http_status": 200,
"url": "https://mcp.offerhopper.ai/robots.txt",
"validation_disallowed": false
},
"latency_ms": 260.22,
"status": "ok"
},
"prompt_get": {
"details": {
"headers": {
"content-type": "text/event-stream"
},
"http_status": 200,
"payload": {
"id": 4,
"jsonrpc": "2.0",
"result": {
"description": "Start a guided grocery shopping trip conversation.\n\nThis prompt seeds a multi-turn conversation that collects the shopping list,\nstarting location, and travel mode before calling find_grocery_deals.",
"messages": [
{
"content": {
"text": "I'd like help planning a grocery and drug store shopping trip in Germany. Please ask me what I need to buy, where I'm starting from, and how I plan to get there \u2014 then find the best deals and the most efficient route.",
"type": "text"
},
"role": "user"
}
]
}
},
"prompt_name": "Plan a shopping trip",
"url": "https://mcp.offerhopper.ai/mcp"
},
"latency_ms": 303.3,
"status": "ok"
},
"prompts_list": {
"details": {
"headers": {
"content-type": "text/event-stream"
},
"http_status": 200,
"payload": {
"id": 3,
"jsonrpc": "2.0",
"result": {
"prompts": [
{
"_meta": {
"fastmcp": {
"tags": []
}
},
"arguments": [],
"description": "Start a guided grocery shopping trip conversation.\n\nThis prompt seeds a multi-turn conversation that collects the shopping list,\nstarting location, and travel mode before calling find_grocery_deals.",
"name": "Plan a shopping trip"
},
{
"_meta": {
"fastmcp": {
"tags": []
}
},
"arguments": [
{
"description": "The JSON result returned by the shopping optimizer\n\nProvide as a JSON string matching the following schema: {\"type\":\"string\"}",
"name": "route_data",
"required": true
}
],
"description": "Guide for the model on how to explain the offerhopper.ai result to a user.",
"name": "Explain my optimization result"
}
]
}
},
"url": "https://mcp.offerhopper.ai/mcp"
},
"latency_ms": 292.12,
"status": "ok"
},
"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": true,
"drift_fields": [],
"metadata_document_count": 2,
"readable_sources": [
"registry"
],
"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": {
"headers": {
"content-type": "text/event-stream"
},
"http_status": 200,
"payload": {
"id": 6,
"jsonrpc": "2.0",
"result": {
"contents": [
{
"mimeType": "text/plain",
"text": "\n offerhopper.ai provides ability to act as a personal grocery and drug store shopping assistant. It seamlessly discovers the best grocery and drug store deals across German markets and plans the most efficient multi-stop routes to get your shopping done.\n **Deal and real time price discovery:** Instantly find current grocery and drug store deals, weekly offers, and promotions in major German supermarkets, including: Aldi,REWE,DM,Rossmann,Mueller as well as promotions from Penny, Netto, Norma, EDEKA and Globus\n **Smart Route Optimization:** Calculates the optimal multi-stop shopping route to hit all the necessary stores. Supports multiple transportation modes including driving, cycling, and walking. \n ",
"uri": "resource://about/service"
}
]
}
},
"resource_uri": "resource://about/service",
"url": "https://mcp.offerhopper.ai/mcp"
},
"latency_ms": 126.39,
"status": "ok"
},
"resources_list": {
"details": {
"headers": {
"content-type": "text/event-stream"
},
"http_status": 200,
"payload": {
"id": 5,
"jsonrpc": "2.0",
"result": {
"resources": [
{
"_meta": {
"fastmcp": {
"tags": []
}
},
"description": "General information about the offerhopper.ai",
"mimeType": "text/plain",
"name": "get_about_info",
"uri": "resource://about/service"
},
{
"_meta": {
"fastmcp": {
"tags": []
}
},
"description": "Current mathematical defaults used by the optimization engine.",
"mimeType": "text/plain",
"name": "get_config_defaults",
"uri": "resource://config/defaults"
},
{
"_meta": {
"fastmcp": {
"tags": []
}
},
"description": "Persona configurations mapped by travel mode.",
"mimeType": "text/plain",
"name": "get_config_personas",
"uri": "resource://config/personas"
},
{
"_meta": {
"fastmcp": {
"tags": []
}
},
"description": "List of supermarket chains currently indexed by the system.",
"mimeType": "text/plain",
"name": "get_supported_retailers",
"uri": "resource://retailers/supported"
},
{
"_meta": {
"fastmcp": {
"tags": []
}
},
"description": "Pre- and post-call guide for using the plan_optimal_shopping_route tool correctly.",
"mimeType": "text/plain",
"name": "get_usage_guide",
"uri": "resource://usage/guide"
},
{
"_meta": {
"fastmcp": {
"tags": []
}
},
"description": "Explains the key fields in the optimization response JSON, including mcp_hints.",
"mimeType": "text/plain",
"name": "get_response_structure",
"uri": "resource://about/response_structure"
}
]
}
},
"url": "https://mcp.offerhopper.ai/mcp"
},
"latency_ms": 422.58,
"status": "ok"
},
"schema_divergence_probe": {
"details": {
"card_server_name": 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": "ShoppingOptimizer",
"reason": "no_server_card_tools",
"server_name_mismatch": false
},
"latency_ms": null,
"status": "missing"
},
"server_card": {
"details": {
"error": "Client error '403 Forbidden' for url 'https://mcp.offerhopper.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403",
"url": "https://mcp.offerhopper.ai/.well-known/mcp/server-card.json"
},
"latency_ms": 6.23,
"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": 1,
"previous_tool_count": 1,
"removed": [],
"similarity": 1.0
},
"latency_ms": null,
"status": "ok"
},
"tools_list": {
"details": {
"headers": {
"content-type": "text/event-stream"
},
"http_status": 200,
"payload": {
"id": 2,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"_meta": {
"fastmcp": {
"tags": []
},
"precision": "high",
"supported_retailers": [
"REWE",
"ALDI S\u00dcD",
"ALDI NORD",
"LIDL",
"PENNY",
"NETTO",
"NORMA",
"DM",
"Rossmann",
"Mueller"
],
"version": "1.7"
},
"annotations": {
"openWorldHint": true,
"readOnlyHint": true,
"title": "Plan optimal grocery and drug store shopping trip"
},
"description": "Plans the optimal shopping trip for a given list and starting location in Germany. Answers 'where should I go to buy this list, and is the trip worth it?' \u2014 not 'what's on offer near me'. Matches each item on the list to the best current offer across German supermarkets and drug stores (REWE, Aldi, Lidl, Penny, Netto, Norma, Edeka, DM, Rossmann, Mueller), then computes the cheapest realistic route by weighing product prices against travel distance and shopping time. Returns the chosen store(s), the per-item picks with live prices, the trip's savings and a worth-it verdict, and a shareable interactive grocery list. Supports car, bicycle, and pedestrian travel modes. For corridor trips (A-to-B), supply 'end_location' to route stores along the way.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"end_location": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional destination location if not a round trip"
},
"hour_cost": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Time cost penalty in EUR per hour (defaults to 12.0)"
},
"items": {
"description": "The shopping list in natural language (e.g. '3x milk, eggs, bread')",
"type": "string"
},
"km_cost": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Travel cost penalty per kilometer (forced to 0.0 for bicycle/pedestrian)"
},
"location": {
"description": "Starting location (ZIP code, city, or address in Germany)",
"type": "string"
},
"max_radius_km": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum search radius in kilometers (defaults: car=15km, bicycle=5km, pedestrian=2km)"
},
"max_stores": {
"default": 100,
"description": "Maximum number of store stops to allow in the route (default: 100)",
"type": "integer"
},
"shopping_time_per_store": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Base shopping minutes spent per store (defaults to 10)"
},
"travel_mode": {
"default": "car",
"description": "Travel mode to use",
"enum": [
"car",
"bicycle",
"pedestrian"
],
"type": "string"
}
},
"required": [
"items",
"location"
],
"type": "object"
},
"name": "plan_optimal_shopping_route",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
},
"title": "Plan optimal grocery and drug store shopping trip"
}
]
}
},
"url": "https://mcp.offerhopper.ai/mcp"
},
"latency_ms": 307.31,
"status": "ok"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json"
},
"bad_protocol_payload": {
"error": {
"code": -32600,
"message": "Bad Request: Unsupported protocol version: 1999-99-99. Supported versions: 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25"
},
"id": "server-error",
"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": 303.15,
"status": "warning"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": {
"argument_name": "route_data",
"name": "Explain my optimization result",
"type": "prompt"
}
},
"initialize_capability_keys": [
"experimental",
"extensions",
"logging",
"prompts",
"resources",
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 200,
"probe_status": "missing"
}
},
"latency_ms": 278.08,
"status": "missing"
}
},
"failures": {
"oauth_authorization_server": {
"reason": "no_authorization_server"
},
"oauth_protected_resource": {
"error": "Client error '403 Forbidden' for url 'https://mcp.offerhopper.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403",
"url": "https://mcp.offerhopper.ai/.well-known/oauth-protected-resource"
},
"openid_configuration": {
"reason": "no_authorization_server"
},
"server_card": {
"error": "Client error '403 Forbidden' for url 'https://mcp.offerhopper.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403",
"url": "https://mcp.offerhopper.ai/.well-known/mcp/server-card.json"
}
},
"remote_url": "https://mcp.offerhopper.ai/mcp",
"server_card_payload": null,
"server_identifier": "ai.offerhopper.mcp/shopping-optimizer"
}
Known versions
1.0.2
Validation history
| Timestamp | Status | Score | Latency | Tools |
|---|---|---|---|---|
| Aug 08, 2026 07:24:33 AM UTC | Healthy | 65.1 | 3557.5 ms | 1 |
| Aug 07, 2026 07:24:08 PM UTC | Healthy | 38.8 | 3601.2 ms | 0 |
| Aug 07, 2026 07:23:52 AM UTC | Healthy | 38.8 | 3783.0 ms | 0 |
| Aug 06, 2026 07:23:11 PM UTC | Healthy | 38.8 | 3343.2 ms | 0 |
| Aug 06, 2026 07:12:48 AM UTC | Healthy | 40.0 | 2387.1 ms | 0 |
| Aug 06, 2026 07:12:47 AM UTC | Healthy | 40.0 | 3708.3 ms | 0 |
| Aug 06, 2026 01:12:39 AM UTC | Healthy | 43.2 | 3448.4 ms | 0 |
| Aug 05, 2026 07:07:33 PM UTC | Healthy | 45.7 | 3089.3 ms | 0 |
Validation timeline
| Validated | Summary | Score | Protocol | Auth mode | Tools | High-risk tools | Changes |
|---|---|---|---|---|---|---|---|
| Aug 08, 2026 07:24:33 AM UTC | Healthy | 65.1 | 2025-03-26 | public | 1 | 0 | auth_mode_changed tool_snapshot_changed |
| Aug 07, 2026 07:24:08 PM UTC | Healthy | 38.8 | unknown | unknown | 0 | 0 | none |
| Aug 07, 2026 07:23:52 AM UTC | Healthy | 38.8 | unknown | unknown | 0 | 0 | none |
| Aug 06, 2026 07:23:11 PM UTC | Healthy | 38.8 | unknown | unknown | 0 | 0 | none |
| Aug 06, 2026 07:12:48 AM UTC | Healthy | 40.0 | unknown | unknown | 0 | 0 | none |
| Aug 06, 2026 07:12:47 AM UTC | Healthy | 40.0 | unknown | unknown | 0 | 0 | none |
| Aug 06, 2026 01:12:39 AM UTC | Healthy | 43.2 | unknown | unknown | 0 | 0 | none |
| Aug 05, 2026 07:07:33 PM UTC | Healthy | 45.7 | unknown | unknown | 0 | 0 | none |
| Aug 04, 2026 08:52:17 PM UTC | Healthy | 45.8 | unknown | unknown | 0 | 0 | none |
| Jul 31, 2026 06:46:43 AM UTC | Healthy | 44.2 | unknown | unknown | 0 | 0 | none |
Recent validation runs
| Started | Status | Summary | Latency | Checks |
|---|---|---|---|---|
| Aug 08, 2026 07:24:29 AM UTC | Completed | Healthy | 3557.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 07, 2026 07:24:04 PM UTC | Completed | Healthy | 3601.2 ms | |
| Aug 07, 2026 07:23:48 AM UTC | Completed | Healthy | 3783.0 ms | |
| Aug 06, 2026 07:23:07 PM UTC | Completed | Healthy | 3343.2 ms | |
| Aug 06, 2026 07:12:45 AM UTC | Completed | Healthy | 2387.1 ms | |
| Aug 06, 2026 07:12:44 AM UTC | Completed | Healthy | 3708.3 ms | |
| Aug 06, 2026 01:12:36 AM UTC | Completed | Healthy | 3448.4 ms | |
| Aug 05, 2026 07:07:30 PM UTC | Completed | Healthy | 3089.3 ms | |
| Aug 04, 2026 08:52:14 PM UTC | Completed | Healthy | 3339.8 ms | |
| Jul 31, 2026 06:46:40 AM UTC | Completed | Healthy | 3552.2 ms | |
Public server reputation
Incident & change feed
| Timestamp | Event | Details |
|---|---|---|
| Aug 08, 2026 07:24:33 AM UTC | Latest validation: healthy | Score 65.1 with status healthy. |
| Aug 08, 2026 07:24:33 AM UTC | Score changed | Score delta +26.4 versus the previous run. |
| Aug 08, 2026 07:24:33 AM UTC | Tool snapshot changed | Added 1, removed 0, and changed 0 tool contracts. |
| Aug 08, 2026 07:24:33 AM UTC | Auth mode changed | Auth mode moved from unknown to public. |
Capabilities
- OAuth:
- DCR/CIMD:
- Prompts:
- Homepage: https://offerhopper.ai
- Docs: none
- Support: none
- Icon: none
- Remote endpoint: https://mcp.offerhopper.ai/mcp
- Server card: none
Benchmark tasks
| Benchmark task | Status | Evidence |
|---|---|---|
| Discover tools | Passes |
|
| Read-only fetch flow | Passes |
|
| OAuth-required connect | Degraded |
|
| Safe write flow with confirmation | Degraded |
|
Utility coverage
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. | ||
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: oauth_protected_resource, provenance_divergence_probe, server_card
Improved checks: advanced_capabilities_probe, connector_replay_probe, determinism_probe, initialize, official_registry_probe, probe_noise_resilience, prompt_get, prompts_list, resource_read, resources_list, tool_snapshot_probe, tools_list
Newly assessed dimensions: none
No longer assessed dimensions: none
| Component | Previous | Latest | Delta |
|---|---|---|---|
maintenance_signal_score | 3.0 | 4.0 | 1.0 |
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
- Tool snapshot changed (high)
Tools were added, removed, or materially changed between the latest two validations. - Auth mode changed (high)
Auth mode changed from unknown to public.
Aliases & registry graph
| Identifier | Source | Canonical | Score |
|---|---|---|---|
ai.offerhopper.mcp/shopping-optimizer |
official_registry | yes | 65.1 |
Alias consolidation
Source disagreements
| Field | What differs | Observed values |
|---|---|---|
| No source disagreements detected. | ||
Fix it
Why this score?
Algorithmic score breakdown
Actionable remediation
| Severity | Remediation | Why it matters | Recommended action |
|---|---|---|---|
| High | Add confirmation and dry-run semantics for risky actions | High-risk write, delete, exec, or egress tools should communicate safeguards clearly. | Add an explicit confirm/dry-run parameter or two-step confirmation flow to write, delete, exec, and egress-capable tools before they can make destructive changes.Playbook
|
| 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
|
| High | Respond to auth mode changed | Auth mode changed from unknown to public. | Document the new auth posture and confirm protected-resource and challenge metadata still match reality. |
| High | Respond to tool snapshot changed | Tools were added, removed, or materially changed between the latest two validations. | Publish a first-class changelog for tool additions, removals, and breaking schema changes.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
|
Point loss breakdown
| Component | Current | Points missing |
|---|---|---|
| Utility Coverage | 0/4 | -4.0 |
| Step Up Auth | 0/4 | -4.0 |
| Request Association | 0/4 | -4.0 |
| Recovery Semantics | 0/4 | -4.0 |
| OAUTH Interop | 0/4 | -4.0 |
| Interactive Flow Safety | 0/4 | -4.0 |
| Error Contract | 0/4 | -4.0 |
| Dependency Supply Chain Signal | 1/4 | -3.0 |
| Advanced Capability Coverage | 1/4 | -3.0 |
| Transport Compliance | 2/4 | -2.0 |
| Spec Recency | 2/4 | -2.0 |
| Security Hygiene | 2/4 | -2.0 |
Compatibility profiles
Connector URL: https://mcp.offerhopper.ai/mcp # No OAuth metadata detected. # Server: ai.offerhopper.mcp/shopping-optimizer
{
"mcpServers": {
"shopping-optimizer": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.offerhopper.ai/mcp"]
}
}
}
smithery mcp add "https://mcp.offerhopper.ai/mcp"
curl -sS https://mcp.offerhopper.ai/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://mcp.offerhopper.ai/mcp # No OAuth metadata detected. # Server: ai.offerhopper.mcp/shopping-optimizer
{
"mcpServers": {
"shopping-optimizer": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.offerhopper.ai/mcp"]
}
}
}
smithery mcp add "https://mcp.offerhopper.ai/mcp"
curl -sS https://mcp.offerhopper.ai/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.ai.offerhopper.mcp/shopping-optimizer.