{
  "ok": true,
  "resource": {
    "id": "RES_A48E0CA7BC8C",
    "resource_type": "mcp_server",
    "canonical_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.com.mcp%2Fstrava/versions/3.0.0%2B0.7.1",
    "name": "HAPI Strava MCP Server",
    "summary_en": "Strava MCP tools for AI: athletes, activities, segments, clubs, routes. Powered by HAPI MCP server.",
    "summary_zh": "用于AI的Strava MCP工具：运动员、活动、路段、俱乐部、路线。由HAPI MCP服务器提供支持。",
    "description_en": "This MCP server provides tools to access Strava data, including athlete stats, activities, segments, clubs, routes, and equipment. It is powered by the HAPI MCP server and is listed in the official MCP registry. The server exposes 13 read-only tools that require authentication via OAuth (type unknown). The tools allow retrieving athlete information, segment efforts, club details, and routes. The server is healthy and responds over streamable HTTP.",
    "description_zh": "此MCP服务器提供访问Strava数据的工具，包括运动员统计、活动、路段、俱乐部、路线和设备。它由HAPI MCP服务器提供支持，并已在官方MCP注册表中列出。该服务器公开了13个只读工具，需要通过OAuth进行身份验证（类型未知）。这些工具允许检索运动员信息、路段成绩、俱乐部详情和路线。服务器运行健康，并通过流式HTTP响应。",
    "provider_name": "ai.com.mcp",
    "homepage_url": "https://run.mcp.com.ai/",
    "endpoint_url": "https://strava.run.mcp.com.ai/mcp",
    "source_url": "https://github.com/la-rebelion/hapimcp",
    "icon_url": null,
    "cover_image_url": null,
    "capabilities": [
      "athlete.read",
      "activity.read",
      "segment.read",
      "club.read",
      "route.read",
      "gear.read"
    ],
    "categories": [
      "data",
      "productivity"
    ],
    "industries": [
      "health",
      "software"
    ],
    "protocols": [
      "mcp"
    ],
    "auth": {
      "type": "unknown"
    },
    "pricing": {
      "model": "unknown"
    },
    "input_schema": {},
    "output_schema": {},
    "metadata": {
      "content_language": "en",
      "translation_status": "original-only",
      "official_registry": {
        "version": "3.0.0+0.7.1",
        "packages": [],
        "remotes": []
      },
      "review_gate": {
        "passed": true,
        "reasons": [],
        "policy_version": "review-gate-v1",
        "evaluated_at": "2026-09-03T06:04:09.369Z"
      }
    },
    "latest_version": "3.0.0+0.7.1",
    "status": "listed",
    "health_status": "healthy",
    "source_kind": "imported",
    "source_agent": "registry.modelcontextprotocol.io",
    "trust": {
      "signal": "none",
      "reason": "No suspicious or malicious evidence found.",
      "signals": {
        "yellow": 0,
        "red": 0
      }
    },
    "review_summary": {
      "method_version": "capability-evidence-v2",
      "capability_definition": "strong",
      "contract_completeness": "strong",
      "access_friction": "medium",
      "operational_transparency": "partial",
      "evidence_strength": "protocol_inspected",
      "use_readiness": "conditional",
      "reviewed_at": "2026-09-03T06:04:10.329Z"
    },
    "experience_count": 0,
    "verified_experience_count": 0,
    "usage_count": 0,
    "success_rate": null,
    "first_seen_at": "2026-09-03T02:50:15.683Z",
    "last_seen_at": "2026-09-03T06:04:09.621Z",
    "published_at": "2026-09-03T06:04:09.621Z",
    "created_at": "2026-09-03T02:50:15.683Z",
    "updated_at": "2026-09-03T06:04:10.329Z",
    "api_url": "https://aiworkshub.io/api/v1/resources/RES_A48E0CA7BC8C",
    "reviews_url": "https://aiworkshub.io/api/v1/resources/RES_A48E0CA7BC8C/reviews",
    "public_url": "https://aiworkshub.io/resources/RES_A48E0CA7BC8C",
    "distribution": {
      "canonical_identity": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.com.mcp%2Fstrava/versions/3.0.0%2B0.7.1",
      "syndicatable": true,
      "origins": [
        {
          "registry_url": "https://registry.modelcontextprotocol.io/",
          "upstream_resource_id": "ai.com.mcp/strava@3.0.0+0.7.1",
          "upstream_record_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.com.mcp%2Fstrava/versions/3.0.0%2B0.7.1",
          "relation": "syndicated",
          "metadata": {
            "source": "official-mcp-registry"
          },
          "first_seen_at": "2026-09-03T02:50:15.683Z",
          "last_seen_at": "2026-09-03T06:04:09.621Z"
        }
      ]
    },
    "tools": [
      {
        "name": "exploreSegments",
        "title_en": "Explore segments",
        "title_zh": "探索路段",
        "description_en": "Explore segments - Returns the top 10 segments matching a specified query.",
        "description_zh": "探索路段 - 返回与指定查询匹配的前10个路段。",
        "input_schema": {
          "type": "object",
          "properties": {
            "bounds": {
              "type": "array",
              "items": {
                "type": "number",
                "format": "float"
              },
              "minItems": 4,
              "maxItems": 4
            },
            "activity_type": {
              "type": "string",
              "enum": [
                "running",
                "riding"
              ]
            },
            "min_cat": {
              "type": "integer",
              "minimum": 0,
              "maximum": 5
            },
            "max_cat": {
              "type": "integer",
              "minimum": 0,
              "maximum": 5
            }
          },
          "required": [
            "bounds"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getClubActivitiesById",
        "title_en": "List Club Activities",
        "title_zh": "列出俱乐部活动",
        "description_en": "List Club Activities - Retrieve recent activities from members of a specific club. The authenticated athlete must belong to the requested club in order to hit this endpoint. Pagination is supported. Athlete profile visibility is respected for all activities.",
        "description_zh": "列出俱乐部活动 - 从特定俱乐部的成员中检索最近的活动。已认证运动员必须属于所请求的俱乐部才能访问此端点。支持分页。所有活动都尊重运动员个人资料的可见性。",
        "input_schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "format": "int64"
            },
            "page": {
              "type": "integer"
            },
            "per_page": {
              "type": "integer"
            }
          },
          "required": [
            "id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getClubAdminsById",
        "title_en": "List Club Administrators",
        "title_zh": "列出俱乐部管理员",
        "description_en": "List Club Administrators - Returns a list of the administrators of a given club.",
        "description_zh": "列出俱乐部管理员 - 返回给定俱乐部的管理员列表。",
        "input_schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "format": "int64"
            },
            "page": {
              "type": "integer"
            },
            "per_page": {
              "type": "integer"
            }
          },
          "required": [
            "id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getClubById",
        "title_en": "Get Club",
        "title_zh": "获取俱乐部",
        "description_en": "Get Club - Returns a given club using its identifier.",
        "description_zh": "获取俱乐部 - 使用其标识符返回给定的俱乐部。",
        "input_schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "format": "int64"
            }
          },
          "required": [
            "id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getClubMembersById",
        "title_en": "List Club Members",
        "title_zh": "列出俱乐部成员",
        "description_en": "List Club Members - Returns a list of the athletes who are members of a given club.",
        "description_zh": "列出俱乐部成员 - 返回给定俱乐部成员中的运动员列表。",
        "input_schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "format": "int64"
            },
            "page": {
              "type": "integer"
            },
            "per_page": {
              "type": "integer"
            }
          },
          "required": [
            "id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getEffortsBySegmentId",
        "title_en": "List Segment Efforts",
        "title_zh": "列出路段成绩",
        "description_en": "List Segment Efforts - Returns a set of the authenticated athlete's segment efforts for a given segment.  Requires subscription.",
        "description_zh": "列出路段成绩 - 返回给定路段上已认证运动员的一组路段成绩。需要订阅。",
        "input_schema": {
          "type": "object",
          "properties": {
            "segment_id": {
              "type": "integer"
            },
            "start_date_local": {
              "type": "string",
              "format": "date-time"
            },
            "end_date_local": {
              "type": "string",
              "format": "date-time"
            },
            "per_page": {
              "type": "integer"
            }
          },
          "required": [
            "segment_id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getGearById",
        "title_en": "Get Equipment",
        "title_zh": "获取装备",
        "description_en": "Get Equipment - Returns an equipment using its identifier.",
        "description_zh": "获取装备 - 使用其标识符返回装备。",
        "input_schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            }
          },
          "required": [
            "id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getLoggedInAthlete",
        "title_en": "Get Authenticated Athlete",
        "title_zh": "获取已认证运动员",
        "description_en": "Get Authenticated Athlete - Returns the currently authenticated athlete. Tokens with profile:read_all scope will receive a detailed athlete representation; all others will receive a summary representation.",
        "description_zh": "获取已认证运动员 - 返回当前已认证的运动员。具有profile:read_all范围的令牌将收到详细的运动员表示；其他令牌将收到摘要表示。",
        "input_schema": {
          "type": "object",
          "properties": {}
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getLoggedInAthleteClubs",
        "title_en": "List Athlete Clubs",
        "title_zh": "列出运动员俱乐部",
        "description_en": "List Athlete Clubs - Returns a list of the clubs whose membership includes the authenticated athlete.",
        "description_zh": "列出运动员俱乐部 - 返回包含已认证运动员的俱乐部列表。",
        "input_schema": {
          "type": "object",
          "properties": {
            "page": {
              "type": "integer"
            },
            "per_page": {
              "type": "integer"
            }
          }
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getLoggedInAthleteStarredSegments",
        "title_en": "List Starred Segments",
        "title_zh": "列出收藏路段",
        "description_en": "List Starred Segments - List of the authenticated athlete's starred segments. Private segments are filtered out unless requested by a token with read_all scope.",
        "description_zh": "列出收藏路段 - 列出已认证运动员收藏的路段。除非由具有read_all范围的令牌请求，否则私有路段将被过滤掉。",
        "input_schema": {
          "type": "object",
          "properties": {
            "page": {
              "type": "integer"
            },
            "per_page": {
              "type": "integer"
            }
          }
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getRoutesByAthleteId",
        "title_en": "List Athlete Routes",
        "title_zh": "列出运动员路线",
        "description_en": "List Athlete Routes - Returns a list of the routes created by the authenticated athlete. Private routes are filtered out unless requested by a token with read_all scope.",
        "description_zh": "列出运动员路线 - 返回由已认证运动员创建的路线列表。除非由具有read_all范围的令牌请求，否则私有路线将被过滤掉。",
        "input_schema": {
          "type": "object",
          "properties": {
            "page": {
              "type": "integer"
            },
            "per_page": {
              "type": "integer"
            }
          }
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getSegmentEffortById",
        "title_en": "Get Segment Effort",
        "title_zh": "获取路段成绩",
        "description_en": "Get Segment Effort - Returns a segment effort from an activity that is owned by the authenticated athlete. Requires subscription.",
        "description_zh": "获取路段成绩 - 从已认证运动员拥有的活动中返回路段成绩。需要订阅。",
        "input_schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "format": "int64"
            }
          },
          "required": [
            "id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "getStats",
        "title_en": "Get Athlete Stats",
        "title_zh": "获取运动员统计",
        "description_en": "Get Athlete Stats - Returns the activity stats of an athlete. Only includes data from activities set to Everyone visibility.",
        "description_zh": "获取运动员统计 - 返回运动员的活动统计。仅包括设置为“所有人”可见性的活动数据。",
        "input_schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "format": "int64"
            }
          },
          "required": [
            "id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      }
    ],
    "review_profile": {
      "schema_version": "aiworkshub.resource-review/0.2",
      "method_version": "capability-evidence-v2",
      "review_state": {
        "identity": "verified",
        "source": "verified",
        "connectivity": "verified",
        "contract": "strong",
        "safe_use": "untested",
        "real_use": "unobserved"
      },
      "assessment": {
        "capability_definition": "strong",
        "contract_completeness": "strong",
        "access_friction": "medium",
        "operational_transparency": "partial",
        "evidence_strength": "protocol_inspected",
        "use_readiness": "conditional"
      },
      "profile": {
        "capabilities": [
          {
            "id": "athlete.read",
            "weight": 100,
            "confidence": 100,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "activity.read",
            "weight": 80,
            "confidence": 100,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "segment.read",
            "weight": 80,
            "confidence": 100,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "club.read",
            "weight": 80,
            "confidence": 100,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "route.read",
            "weight": 60,
            "confidence": 100,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "gear.read",
            "weight": 40,
            "confidence": 100,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          }
        ],
        "domains": [
          {
            "id": "fitness",
            "weight": 100,
            "confidence": 100,
            "evidence_ids": [
              "source-record"
            ]
          },
          {
            "id": "sports",
            "weight": 100,
            "confidence": 100,
            "evidence_ids": [
              "source-record"
            ]
          },
          {
            "id": "health",
            "weight": 80,
            "confidence": 100,
            "evidence_ids": [
              "source-record"
            ]
          }
        ],
        "workflow_roles": [
          "retrieve",
          "analyze"
        ]
      },
      "capability_units": [
        {
          "id": "tool:getStats",
          "kind": "mcp_tool",
          "capability_id": "athlete.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "integer"
          ],
          "produces": [
            "object"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:getLoggedInAthlete",
          "kind": "mcp_tool",
          "capability_id": "athlete.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [],
          "produces": [
            "object"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:getLoggedInAthleteStarredSegments",
          "kind": "mcp_tool",
          "capability_id": "segment.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "integer"
          ],
          "produces": [
            "array"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:getEffortsBySegmentId",
          "kind": "mcp_tool",
          "capability_id": "segment.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "integer",
            "string"
          ],
          "produces": [
            "array"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:exploreSegments",
          "kind": "mcp_tool",
          "capability_id": "segment.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "array",
            "string",
            "integer"
          ],
          "produces": [
            "array"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:getSegmentEffortById",
          "kind": "mcp_tool",
          "capability_id": "segment.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "integer"
          ],
          "produces": [
            "object"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:getClubById",
          "kind": "mcp_tool",
          "capability_id": "club.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "integer"
          ],
          "produces": [
            "object"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:getClubMembersById",
          "kind": "mcp_tool",
          "capability_id": "club.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "integer"
          ],
          "produces": [
            "array"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:getClubAdminsById",
          "kind": "mcp_tool",
          "capability_id": "club.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "integer"
          ],
          "produces": [
            "array"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:getClubActivitiesById",
          "kind": "mcp_tool",
          "capability_id": "club.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "integer"
          ],
          "produces": [
            "array"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:getLoggedInAthleteClubs",
          "kind": "mcp_tool",
          "capability_id": "club.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "integer"
          ],
          "produces": [
            "array"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:getGearById",
          "kind": "mcp_tool",
          "capability_id": "gear.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "string"
          ],
          "produces": [
            "object"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:getRoutesByAthleteId",
          "kind": "mcp_tool",
          "capability_id": "route.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed_envelope_dynamic_result",
          "accepts": [
            "integer"
          ],
          "produces": [
            "array"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        }
      ],
      "access": {
        "distribution_license": {},
        "runtime_auth": {
          "type": "unknown"
        },
        "runtime_pricing": {
          "model": "unknown"
        },
        "dependencies": []
      },
      "operational_flags": [],
      "trust": {
        "signal": "none",
        "evidence_ids": [],
        "reason": "No suspicious or malicious evidence found."
      },
      "fit": {
        "good_for": [
          "Retrieving athlete statistics and profiles",
          "Exploring segments and segment efforts",
          "Accessing club information and activities",
          "Listing routes and equipment"
        ],
        "not_for": [
          "Writing or modifying Strava data",
          "Performing actions on behalf of users without explicit OAuth"
        ]
      },
      "evidence": [
        {
          "id": "source-record",
          "type": "registry_record",
          "source": "https://github.com/la-rebelion/hapimcp",
          "observation": "MCP source record for HAPI Strava MCP Server; version 3.0.0+0.7.1.",
          "observed_at": null,
          "payload": {}
        },
        {
          "id": "protocol-tools",
          "type": "protocol_observation",
          "source": "https://strava.run.mcp.com.ai/mcp#tools/list",
          "observation": "13 tools were returned by MCP discovery; 13 were retained for review.",
          "observed_at": "2026-09-03T06:03:49.537Z",
          "payload": {}
        }
      ],
      "unknowns": [
        "Authentication type is unknown; likely OAuth but not confirmed.",
        "Pricing model is unknown.",
        "Subscription requirement for some tools is not detailed.",
        "Exact output schemas are not provided.",
        "Real-world usage has not been observed."
      ],
      "id": "REV_4A172FA2C7B3",
      "resource_id": "RES_A48E0CA7BC8C",
      "evaluator_type": "platform_ai",
      "provider": "deepseek",
      "model": "deepseek-v4-flash",
      "review_scope": "protocol-inspected-mcp",
      "created_at": "2026-09-03T06:04:10.329Z"
    }
  }
}