{
  "ok": true,
  "resource": {
    "id": "RES_95003C96D094",
    "resource_type": "mcp_server",
    "canonical_url": "https://tandem.ac/docs-mcp",
    "name": "docs-mcp",
    "summary_en": "Remote MCP server for Tandem docs, install guides, SDKs, workflows, and agent setup help.",
    "summary_zh": "用于Tandem文档、安装指南、SDK、工作流和代理设置帮助的远程MCP服务器。",
    "description_en": "A remote MCP server that provides access to Tandem documentation, including install guides, SDKs, workflows, and agent setup help. It offers tools for searching and fetching docs, recommending next steps, answering how-to questions, and managing a docs cache.",
    "description_zh": "一个远程MCP服务器，提供对Tandem文档的访问，包括安装指南、SDK、工作流和代理设置帮助。它提供搜索和获取文档、推荐后续步骤、回答操作问题以及管理文档缓存的工具。",
    "provider_name": "docs-mcp",
    "homepage_url": "https://tandem.ac/docs-mcp",
    "endpoint_url": "https://tandem.ac/mcp",
    "source_url": "https://github.com/frumu-ai/tandem",
    "icon_url": null,
    "cover_image_url": null,
    "capabilities": [
      "docs.search",
      "docs.retrieve",
      "docs.recommend",
      "docs.answer",
      "docs.cache-manage"
    ],
    "categories": [
      "developer-tools",
      "productivity",
      "research"
    ],
    "industries": [
      "software",
      "general"
    ],
    "protocols": [
      "mcp"
    ],
    "auth": {
      "type": "unknown",
      "source": "reviewed-source-metadata"
    },
    "pricing": {
      "model": "unknown"
    },
    "input_schema": {},
    "output_schema": {},
    "metadata": {
      "review_gate": {
        "passed": true,
        "reasons": [],
        "policy_version": "review-gate-v1",
        "evaluated_at": "2026-09-03T06:26:37.962Z"
      },
      "official_registry": {
        "name": "ac.tandem/docs-mcp",
        "version": "0.3.2",
        "status": "active",
        "schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
        "packages": [],
        "remotes": [
          {
            "type": "streamable-http",
            "url": "https://tandem.ac/mcp"
          }
        ]
      }
    },
    "latest_version": "0.3.2",
    "status": "listed",
    "health_status": "healthy",
    "source_kind": "discovered",
    "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": "low",
      "operational_transparency": "strong",
      "evidence_strength": "protocol_inspected",
      "use_readiness": "ready_for_guidance",
      "reviewed_at": "2026-09-03T06:26:39.142Z"
    },
    "experience_count": 0,
    "verified_experience_count": 0,
    "usage_count": 0,
    "success_rate": null,
    "first_seen_at": "2026-09-03T06:26:38.196Z",
    "last_seen_at": "2026-09-03T06:26:38.196Z",
    "published_at": "2026-09-03T06:26:38.196Z",
    "created_at": "2026-09-03T06:26:38.196Z",
    "updated_at": "2026-09-03T06:26:39.142Z",
    "api_url": "https://aiworkshub.io/api/v1/resources/RES_95003C96D094",
    "reviews_url": "https://aiworkshub.io/api/v1/resources/RES_95003C96D094/reviews",
    "public_url": "https://aiworkshub.io/resources/RES_95003C96D094",
    "distribution": {
      "canonical_identity": "https://tandem.ac/docs-mcp",
      "syndicatable": true,
      "origins": [
        {
          "registry_url": "https://registry.modelcontextprotocol.io/",
          "upstream_resource_id": "ac.tandem/docs-mcp",
          "upstream_record_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ac.tandem%2Fdocs-mcp/versions/0.3.2",
          "relation": "syndicated",
          "metadata": {
            "version": "0.3.2",
            "official_status": "active"
          },
          "first_seen_at": "2026-09-03T06:26:38.196Z",
          "last_seen_at": "2026-09-03T06:26:38.196Z"
        }
      ]
    },
    "tools": [
      {
        "name": "answer_how_to",
        "title_en": "Answer a Tandem how-to question",
        "title_zh": "回答Tandem操作问题",
        "description_en": "Answer how to install or use Tandem, build workflows, or use the SDKs by synthesizing relevant published docs.",
        "description_zh": "通过综合相关的已发布文档，回答如何安装或使用Tandem、构建工作流或使用SDK。",
        "input_schema": {
          "type": "object",
          "properties": {
            "task": {
              "type": "string",
              "description": "The Tandem task or question that needs a docs-grounded answer."
            },
            "docs_ref": {
              "type": "string",
              "description": "Docs channel or immutable ref. Defaults to stable."
            },
            "engine_version": {
              "type": "string",
              "description": "Optional Tandem engine version hint. Prefer stable docs for installed engines."
            },
            "audience": {
              "type": "string",
              "description": "Optional audience hint such as developer, desktop user, or operator."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10,
              "description": "Maximum number of supporting docs recommendations to include."
            }
          },
          "required": [
            "task"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": true,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "compare_doc_page_refresh",
        "title_en": "Compare page refresh",
        "title_zh": "比较页面刷新",
        "description_en": "Force-refresh a docs page and return before/after hashes so page content changes can be proven.",
        "description_zh": "强制刷新一个文档页面并返回前后哈希值，以便证明页面内容变化。",
        "input_schema": {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "description": "Docs path like /start-here/ or /sdk/python/ to compare before and after refresh."
            },
            "docs_ref": {
              "type": "string",
              "description": "Docs channel or immutable ref. Defaults to stable."
            }
          },
          "required": [
            "path"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "unknown",
        "open_world": true,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "compare_docs_index_refresh",
        "title_en": "Compare docs index refresh",
        "title_zh": "比较文档索引刷新",
        "description_en": "Force-refresh the docs indexes and return before/after hashes so content changes can be proven.",
        "description_zh": "强制刷新文档索引并返回前后哈希值，以便证明内容变化。",
        "input_schema": {
          "type": "object",
          "properties": {
            "docs_ref": {
              "type": "string",
              "description": "Docs channel or immutable ref. Defaults to stable."
            }
          }
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "unknown",
        "open_world": true,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_doc",
        "title_en": "Fetch a docs page",
        "title_zh": "获取文档页面",
        "description_en": "Fetch and normalize a published Tandem docs page by path or URL.",
        "description_zh": "通过路径或URL获取并规范化已发布的Tandem文档页面。",
        "input_schema": {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "description": "Docs path like /sdk/python/ or a full Tandem docs URL."
            },
            "docs_ref": {
              "type": "string",
              "description": "Docs channel or immutable ref. Defaults to stable."
            },
            "engine_version": {
              "type": "string",
              "description": "Optional Tandem engine version hint for compatibility checks."
            }
          },
          "required": [
            "path"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": true,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_docs_cache_status",
        "title_en": "Inspect docs cache status",
        "title_zh": "检查文档缓存状态",
        "description_en": "Inspect the current docs cache state for index sources and warmed pages.",
        "description_zh": "检查当前文档缓存状态，包括索引源和已预热的页面。",
        "input_schema": {
          "type": "object",
          "properties": {}
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_start_path",
        "title_en": "Get a starting docs path",
        "title_zh": "获取起始文档路径",
        "description_en": "Recommend the best Tandem docs starting path for a desktop user, server admin, or developer.",
        "description_zh": "为桌面用户、服务器管理员或开发者推荐最佳的Tandem文档起始路径。",
        "input_schema": {
          "type": "object",
          "properties": {
            "role": {
              "type": "string",
              "enum": [
                "desktop",
                "server_admin",
                "developer"
              ],
              "description": "The user role to optimize the docs starting point for."
            },
            "docs_ref": {
              "type": "string",
              "description": "Docs channel or immutable ref. Defaults to stable."
            }
          },
          "required": [
            "role"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_tandem_guide",
        "title_en": "Get a Tandem guide",
        "title_zh": "获取Tandem指南",
        "description_en": "Return a structured Tandem learning guide for install-engine, python-sdk, typescript-sdk, build-workflows, or headless-deploy.",
        "description_zh": "返回针对install-engine、python-sdk、typescript-sdk、build-workflows或headless-deploy的结构化Tandem学习指南。",
        "input_schema": {
          "type": "object",
          "properties": {
            "topic": {
              "type": "string",
              "enum": [
                "install-engine",
                "python-sdk",
                "typescript-sdk",
                "build-workflows",
                "headless-deploy"
              ],
              "description": "Named Tandem learning guide to return."
            },
            "docs_ref": {
              "type": "string",
              "description": "Docs channel or immutable ref. Defaults to stable."
            }
          },
          "required": [
            "topic"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "invalidate_docs_cache",
        "title_en": "Invalidate docs cache",
        "title_zh": "使文档缓存失效",
        "description_en": "Invalidate docs cache entries for index data, all pages, or a specific page path.",
        "description_zh": "使索引数据、所有页面或特定页面路径的文档缓存条目失效。",
        "input_schema": {
          "type": "object",
          "properties": {
            "target": {
              "type": "string",
              "enum": [
                "all",
                "index",
                "pages",
                "page"
              ],
              "description": "Which cache area to invalidate."
            },
            "path": {
              "type": "string",
              "description": "Required when target is page; identifies the specific docs path to invalidate."
            },
            "docs_ref": {
              "type": "string",
              "description": "Optional docs ref to scope page/index cache invalidation."
            }
          }
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "unknown",
        "open_world": false,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "recommend_next_docs",
        "title_en": "Recommend next docs",
        "title_zh": "推荐后续文档",
        "description_en": "Recommend the next Tandem docs to read after a current page, optionally biased toward a goal.",
        "description_zh": "在当前页面之后推荐接下来要阅读的Tandem文档，可选地偏向某个目标。",
        "input_schema": {
          "type": "object",
          "properties": {
            "current_path": {
              "type": "string",
              "description": "Current Tandem docs path the user has already read."
            },
            "docs_ref": {
              "type": "string",
              "description": "Docs channel or immutable ref. Defaults to stable."
            },
            "goal": {
              "type": "string",
              "description": "Optional goal such as install Tandem, use the Python SDK, or build workflows."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10,
              "description": "Maximum number of next-doc recommendations to return."
            }
          },
          "required": [
            "current_path"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": true,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "refresh_doc_page",
        "title_en": "Refresh one docs page",
        "title_zh": "刷新单个文档页面",
        "description_en": "Force-refresh a docs page and report whether content came from the network, cache, or stale fallback.",
        "description_zh": "强制刷新一个文档页面，并报告内容来自网络、缓存还是过时的回退。",
        "input_schema": {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "description": "Docs path like /start-here/ or /sdk/python/ to refresh."
            },
            "docs_ref": {
              "type": "string",
              "description": "Docs channel or immutable ref. Defaults to stable."
            },
            "force_refresh": {
              "type": "boolean",
              "description": "Whether to bypass cache and force a network refresh attempt."
            }
          },
          "required": [
            "path"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "unknown",
        "open_world": true,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "refresh_docs_index",
        "title_en": "Refresh docs index",
        "title_zh": "刷新文档索引",
        "description_en": "Force-refresh docs indexes and report whether data came from the network, cache, or stale fallback.",
        "description_zh": "强制刷新文档索引，并报告数据来自网络、缓存还是过时的回退。",
        "input_schema": {
          "type": "object",
          "properties": {
            "force_refresh": {
              "type": "boolean",
              "description": "Whether to bypass cache and force a network refresh attempt."
            },
            "docs_ref": {
              "type": "string",
              "description": "Docs channel or immutable ref. Defaults to stable."
            }
          }
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "unknown",
        "open_world": true,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "search_docs",
        "title_en": "Search Tandem docs",
        "title_zh": "搜索Tandem文档",
        "description_en": "Search the published Tandem docs index for relevant pages.",
        "description_zh": "在已发布的Tandem文档索引中搜索相关页面。",
        "input_schema": {
          "type": "object",
          "properties": {
            "query": {
              "type": "string",
              "description": "The Tandem question, task, or keyword query to search for."
            },
            "docs_ref": {
              "type": "string",
              "description": "Docs channel or immutable ref. Defaults to stable. Use next, refs/<sha>, or releases/<version> only when explicitly needed."
            },
            "engine_version": {
              "type": "string",
              "description": "Optional Tandem engine version hint. If supplied without docs_ref, the MCP still defaults to stable unless a matching versioned docs ref is configured."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 20,
              "description": "Maximum number of matching docs pages to return."
            },
            "audience": {
              "type": "string",
              "description": "Optional audience filter such as developer, desktop user, or operator."
            }
          },
          "required": [
            "query"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": true,
        "idempotency": "idempotent",
        "confirmation": "none",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "warmup_docs_cache",
        "title_en": "Warm docs cache",
        "title_zh": "预热文档缓存",
        "description_en": "Refresh the docs index and preload the most important Tandem docs pages into cache.",
        "description_zh": "刷新文档索引并将最重要的Tandem文档页面预加载到缓存中。",
        "input_schema": {
          "type": "object",
          "properties": {
            "force_refresh": {
              "type": "boolean",
              "description": "Whether to bypass cache and force fresh upstream fetches first."
            },
            "docs_ref": {
              "type": "string",
              "description": "Docs channel or immutable ref. Defaults to stable."
            }
          }
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "unknown",
        "open_world": true,
        "idempotency": "idempotent",
        "confirmation": "none",
        "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": "tested",
        "real_use": "unobserved"
      },
      "assessment": {
        "capability_definition": "strong",
        "contract_completeness": "strong",
        "access_friction": "low",
        "operational_transparency": "strong",
        "evidence_strength": "protocol_inspected",
        "use_readiness": "ready_for_guidance"
      },
      "profile": {
        "capabilities": [
          {
            "id": "docs.search",
            "weight": 90,
            "confidence": 95,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "docs.retrieve",
            "weight": 90,
            "confidence": 95,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "docs.recommend",
            "weight": 70,
            "confidence": 90,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "docs.answer",
            "weight": 80,
            "confidence": 90,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "docs.cache-manage",
            "weight": 50,
            "confidence": 80,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          }
        ],
        "domains": [
          {
            "id": "documentation",
            "weight": 100,
            "confidence": 95,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "developer-tools",
            "weight": 80,
            "confidence": 90,
            "evidence_ids": [
              "source-record"
            ]
          }
        ],
        "workflow_roles": [
          "discover",
          "retrieve",
          "analyze",
          "instruct"
        ]
      },
      "capability_units": [
        {
          "id": "tool:search_docs",
          "kind": "mcp_tool",
          "capability_id": "docs.search",
          "effect": "read",
          "open_world": true,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "text query",
            "optional docs_ref",
            "optional engine_version",
            "optional limit",
            "optional audience"
          ],
          "produces": [
            "search results"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:get_doc",
          "kind": "mcp_tool",
          "capability_id": "docs.retrieve",
          "effect": "read",
          "open_world": true,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "docs path",
            "optional docs_ref",
            "optional engine_version"
          ],
          "produces": [
            "docs page content"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:get_start_path",
          "kind": "mcp_tool",
          "capability_id": "docs.recommend",
          "effect": "read",
          "open_world": false,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "role",
            "optional docs_ref"
          ],
          "produces": [
            "recommended docs path"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:recommend_next_docs",
          "kind": "mcp_tool",
          "capability_id": "docs.recommend",
          "effect": "read",
          "open_world": true,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "current_path",
            "optional docs_ref",
            "optional goal",
            "optional limit"
          ],
          "produces": [
            "recommended docs paths"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:answer_how_to",
          "kind": "mcp_tool",
          "capability_id": "docs.answer",
          "effect": "read",
          "open_world": true,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "task",
            "optional docs_ref",
            "optional engine_version",
            "optional audience",
            "optional limit"
          ],
          "produces": [
            "answer with supporting docs"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:get_tandem_guide",
          "kind": "mcp_tool",
          "capability_id": "docs.retrieve",
          "effect": "read",
          "open_world": false,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "topic",
            "optional docs_ref"
          ],
          "produces": [
            "structured guide"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:warmup_docs_cache",
          "kind": "mcp_tool",
          "capability_id": "docs.cache-manage",
          "effect": "unknown",
          "open_world": true,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "optional force_refresh",
            "optional docs_ref"
          ],
          "produces": [
            "cache warmup result"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:get_docs_cache_status",
          "kind": "mcp_tool",
          "capability_id": "docs.cache-manage",
          "effect": "read",
          "open_world": false,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [],
          "produces": [
            "cache status"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:refresh_docs_index",
          "kind": "mcp_tool",
          "capability_id": "docs.cache-manage",
          "effect": "unknown",
          "open_world": true,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "optional force_refresh",
            "optional docs_ref"
          ],
          "produces": [
            "refresh result"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:refresh_doc_page",
          "kind": "mcp_tool",
          "capability_id": "docs.cache-manage",
          "effect": "unknown",
          "open_world": true,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "path",
            "optional docs_ref",
            "optional force_refresh"
          ],
          "produces": [
            "refresh result"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:invalidate_docs_cache",
          "kind": "mcp_tool",
          "capability_id": "docs.cache-manage",
          "effect": "unknown",
          "open_world": false,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "target",
            "optional path",
            "optional docs_ref"
          ],
          "produces": [
            "invalidation result"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:compare_docs_index_refresh",
          "kind": "mcp_tool",
          "capability_id": "docs.cache-manage",
          "effect": "unknown",
          "open_world": true,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "optional docs_ref"
          ],
          "produces": [
            "before/after hashes"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:compare_doc_page_refresh",
          "kind": "mcp_tool",
          "capability_id": "docs.cache-manage",
          "effect": "unknown",
          "open_world": true,
          "idempotency": "idempotent",
          "confirmation": "none",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "path",
            "optional docs_ref"
          ],
          "produces": [
            "before/after hashes"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        }
      ],
      "access": {
        "distribution_license": {},
        "runtime_auth": {},
        "runtime_pricing": {},
        "dependencies": []
      },
      "operational_flags": [],
      "trust": {
        "signal": "none",
        "evidence_ids": [],
        "reason": "No suspicious or malicious evidence found."
      },
      "fit": {
        "good_for": [
          "Providing documentation search and retrieval for Tandem products.",
          "Answering how-to questions about Tandem installation, SDKs, and workflows.",
          "Guiding users through Tandem documentation with recommended next steps."
        ],
        "not_for": [
          "Performing actions on Tandem systems beyond documentation retrieval.",
          "Accessing real-time data or executing workflows directly."
        ]
      },
      "evidence": [
        {
          "id": "source-record",
          "type": "registry_record",
          "source": "https://registry.modelcontextprotocol.io/v0.1/servers/ac.tandem%2Fdocs-mcp/versions/0.3.2",
          "observation": "MCP source record for ac.tandem/docs-mcp; version 0.3.2.",
          "observed_at": "2026-04-22T21:06:34.500049Z",
          "payload": {}
        },
        {
          "id": "protocol-tools",
          "type": "protocol_observation",
          "source": "https://tandem.ac/mcp#tools/list",
          "observation": "13 tools were returned by MCP discovery; 13 were retained for review.",
          "observed_at": "2026-09-03T06:26:19.258Z",
          "payload": {}
        }
      ],
      "unknowns": [
        "Exact output schema for tools is not provided in the evidence.",
        "Authentication requirements for the remote endpoint are not specified.",
        "Pricing model, if any, is not disclosed.",
        "Real-world usage patterns are not observed."
      ],
      "id": "REV_2AA6BC0B0565",
      "resource_id": "RES_95003C96D094",
      "evaluator_type": "platform_ai",
      "provider": "deepseek",
      "model": "deepseek-v4-flash",
      "review_scope": "protocol-inspected-mcp",
      "created_at": "2026-09-03T06:26:39.142Z"
    }
  }
}