docs-mcp

Remote MCP server for Tandem docs, install guides, SDKs, workflows, and agent setup help.

Should I use this

Quality & Safety

A
Description quality
86%
Schema completeness
92%
Naming quality
88%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (4)

  • LOWTool 'refresh_docs_index' description lacks action verbin refresh_docs_index
  • LOWTool 'refresh_doc_page' description lacks action verbin refresh_doc_page
  • LOWTool 'compare_docs_index_refresh' description lacks action verbin compare_docs_index_refresh
  • LOWTool 'compare_doc_page_refresh' description lacks action verbin compare_doc_page_refresh

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,786Tokens (tool definitions)
~1.0 KBTypical response size
Moderate attention impact (1.40% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Uptime

100.0%Available
742msAvg latency
13m agoLast success

Probed every 10 minutes. Showing last 100 samples.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "docs-mcp": {
      "url": "https://tandem.ac/mcp"
    }
  }
}

Remote endpoints

https://tandem.ac/mcpstreamable-http

What it can do

Tool inventory

Tools (13)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_docs(query, docs_ref, engine_version, limit, audience)

Search the published Tandem docs index for relevant pages.

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"
  ]
}
🟢get_doc(path, docs_ref, engine_version)

Fetch and normalize a published Tandem docs page by path or URL.

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"
  ]
}
🟢get_start_path(role, docs_ref)

Recommend the best Tandem docs starting path for a desktop user, server admin, or developer.

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"
  ]
}
🟢recommend_next_docs(current_path, docs_ref, goal, limit)

Recommend the next Tandem docs to read after a current page, optionally biased toward a goal.

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"
  ]
}
🟢answer_how_to(task, docs_ref, engine_version, audience, limit)

Answer how to install or use Tandem, build workflows, or use the SDKs by synthesizing relevant published docs.

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"
  ]
}
🟢get_tandem_guide(topic, docs_ref)

Return a structured Tandem learning guide for install-engine, python-sdk, typescript-sdk, build-workflows, or headless-deploy.

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"
  ]
}
⚪warmup_docs_cache(force_refresh, docs_ref)

Refresh the docs index and preload the most important Tandem docs pages into cache.

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."
    }
  }
}
🟢get_docs_cache_status

Inspect the current docs cache state for index sources and warmed pages.

Input Schema

{
  "type": "object",
  "properties": {}
}
⚪refresh_docs_index(force_refresh, docs_ref)

Force-refresh docs indexes and report whether data came from the network, cache, or stale fallback.

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."
    }
  }
}
⚪refresh_doc_page(path, docs_ref, force_refresh)

Force-refresh a docs page and report whether content came from the network, cache, or stale fallback.

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"
  ]
}
⚪invalidate_docs_cache(target, path, docs_ref)

Invalidate docs cache entries for index data, all pages, or a specific page path.

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."
    }
  }
}
⚪compare_docs_index_refresh(docs_ref)

Force-refresh the docs indexes and return before/after hashes so content changes can be proven.

Input Schema

{
  "type": "object",
  "properties": {
    "docs_ref": {
      "type": "string",
      "description": "Docs channel or immutable ref. Defaults to stable."
    }
  }
}
⚪compare_doc_page_refresh(path, docs_ref)

Force-refresh a docs page and return before/after hashes so page content changes can be proven.

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"
  ]
}

Compare

Peer Comparison

Compare this server with others in the same category.

Tools:0
Tools:0

Version History

unknown → unknown
10/5/2026
Initial manifest with 13 tools
Details
Added:
  • + search_docs
  • + get_doc
  • + get_start_path
  • + recommend_next_docs
  • + answer_how_to
  • + get_tandem_guide
  • + warmup_docs_cache
  • + get_docs_cache_status
  • + refresh_docs_index
  • + refresh_doc_page
  • + invalidate_docs_cache
  • + compare_docs_index_refresh
  • + compare_doc_page_refresh
unknown → unknown
10/5/2026
Initial manifest with 13 tools
Details
Added:
  • + search_docs
  • + get_doc
  • + get_start_path
  • + recommend_next_docs
  • + answer_how_to
  • + get_tandem_guide
  • + warmup_docs_cache
  • + get_docs_cache_status
  • + refresh_docs_index
  • + refresh_doc_page
  • + invalidate_docs_cache
  • + compare_docs_index_refresh
  • + compare_doc_page_refresh
unknown → unknown
10/5/2026
Initial manifest with 13 tools
Details
Added:
  • + search_docs
  • + get_doc
  • + get_start_path
  • + recommend_next_docs
  • + answer_how_to
  • + get_tandem_guide
  • + warmup_docs_cache
  • + get_docs_cache_status
  • + refresh_docs_index
  • + refresh_doc_page
  • + invalidate_docs_cache
  • + compare_docs_index_refresh
  • + compare_doc_page_refresh
unknown → unknown
10/4/2026
Initial manifest with 13 tools
Details
Added:
  • + search_docs
  • + get_doc
  • + get_start_path
  • + recommend_next_docs
  • + answer_how_to
  • + get_tandem_guide
  • + warmup_docs_cache
  • + get_docs_cache_status
  • + refresh_docs_index
  • + refresh_doc_page
  • + invalidate_docs_cache
  • + compare_docs_index_refresh
  • + compare_doc_page_refresh
unknown → unknown
10/4/2026
Initial manifest with 13 tools
Details
Added:
  • + search_docs
  • + get_doc
  • + get_start_path
  • + recommend_next_docs
  • + answer_how_to
  • + get_tandem_guide
  • + warmup_docs_cache
  • + get_docs_cache_status
  • + refresh_docs_index
  • + refresh_doc_page
  • + invalidate_docs_cache
  • + compare_docs_index_refresh
  • + compare_doc_page_refresh
unknown → unknown
10/4/2026
Initial manifest with 13 tools
Details
Added:
  • + search_docs
  • + get_doc
  • + get_start_path
  • + recommend_next_docs
  • + answer_how_to
  • + get_tandem_guide
  • + warmup_docs_cache
  • + get_docs_cache_status
  • + refresh_docs_index
  • + refresh_doc_page
  • + invalidate_docs_cache
  • + compare_docs_index_refresh
  • + compare_doc_page_refresh
unknown → unknown
10/4/2026
Initial manifest with 13 tools
Details
Added:
  • + search_docs
  • + get_doc
  • + get_start_path
  • + recommend_next_docs
  • + answer_how_to
  • + get_tandem_guide
  • + warmup_docs_cache
  • + get_docs_cache_status
  • + refresh_docs_index
  • + refresh_doc_page
  • + invalidate_docs_cache
  • + compare_docs_index_refresh
  • + compare_doc_page_refresh
unknown → unknown
10/4/2026
Initial manifest with 13 tools
Details
Added:
  • + search_docs
  • + get_doc
  • + get_start_path
  • + recommend_next_docs
  • + answer_how_to
  • + get_tandem_guide
  • + warmup_docs_cache
  • + get_docs_cache_status
  • + refresh_docs_index
  • + refresh_doc_page
  • + invalidate_docs_cache
  • + compare_docs_index_refresh
  • + compare_doc_page_refresh
unknown → unknown
10/4/2026
Initial manifest with 13 tools
Details
Added:
  • + search_docs
  • + get_doc
  • + get_start_path
  • + recommend_next_docs
  • + answer_how_to
  • + get_tandem_guide
  • + warmup_docs_cache
  • + get_docs_cache_status
  • + refresh_docs_index
  • + refresh_doc_page
  • + invalidate_docs_cache
  • + compare_docs_index_refresh
  • + compare_doc_page_refresh
unknown → unknown
10/4/2026
Initial manifest with 13 tools
Details
Added:
  • + search_docs
  • + get_doc
  • + get_start_path
  • + recommend_next_docs
  • + answer_how_to
  • + get_tandem_guide
  • + warmup_docs_cache
  • + get_docs_cache_status
  • + refresh_docs_index
  • + refresh_doc_page
  • + invalidate_docs_cache
  • + compare_docs_index_refresh
  • + compare_doc_page_refresh

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded13 tools
verifiedversion not recorded13 tools
verifiedversion not recorded13 tools