Skip to main content
Glama

Document360 MCP Server

Model Context Protocol server for Document360 that enables AI assistants to search, retrieve, and interact with your knowledge base. Built with FastMCP, this server provides seamless access to Document360 articles, categories, and project versions through a standardized MCP interface.

Features

  • Get Category by ID

  • Get Category Page Content by ID

  • Get Article by ID

  • Search in Project Versions

  • List Project Versions

Related MCP server: Amplemarket Knowledge Base MCP Server

Requirements

  • Python 3.12+

  • Document360 API key

Installation

Clone or download this repository, then install dependencies:

pip install -r requirements.txt

or using a virtual environment:

python -m venv venv
source venv/bin/activate  # On Windows use `venv\Scripts\activate.bat`
pip install -r requirements.txt

or using UV

uv venv
uv pip install -r requirements.txt

Configuration

Set your Document360 API key and other environment variables. You can do this in your shell or directly in the mcp-config.json file:

{
  "mcpServers": {
    "document360": {
      "command": "uv",
      "args": [
      "--directory", "/path/to/document360-mcp/folder", "run" ,"server.py"
      ],
      "env": {
        "DOCUMENT360_API_KEY": "your_api_key_here",
        "DOCUMENT360_BASE_URL": "https://apihub.document360.io"
      }
    }
  }
}

Note: the default base URL is https://apihub.document360.io, but some accounts require to use the regional base url https://apihub.us.document360.io.

Usage

Run the server directly:

python server.py

Or with UV:

uv run server.py

Exposed MCP Tools

Although Document360 exposes more granular endpoints, these are sufficient for a simple consumption workflow: models can discover project versions, enumerate categories and pages, and retrieve full page contents.

  • get_category_page_content Parameters:

    • category_id (UUID string): Document360 category ID

    • page_id (UUID string): Document360 page ID

  • get_article Parameters:

    • article_id (UUID string): Document360 article ID

  • search_in_project Parameters:

    • project_version_id (UUID string): Document360 project version ID

    • query (string, optional): Free-text phrase searched across articles/categories by the Document360 backend

    • hits_per_page (int, optional, default 20): Maximum number of ranked results to return (1-1000)

  • list_project_versions Parameters: none

  • get_category Parameters:

    • category_id (UUID string): Document360 category ID

License

MIT

Available Tools

5 tools
get_articleA
Read-only

Get article by ID from Document360

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYesDocument360 article ID (UUID string)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes that this is a safe read operation, and the description does not contradict it. The tool adds no behavioral disclosures beyond that, such as not-found behavior, but the output schema likely covers return expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single declarative sentence with no filler. The verb and resource are front-loaded, and every word contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-required-parameter read-only lookup with an output schema and a clear source system, the description is nearly complete. It only lacks explicit guidance on when to choose this tool over its siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage and already describes article_id as a Document360 article ID in UUID string form. The description adds no meaning beyond 'by ID', so the schema carries the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get'), a specific resource ('article'), and the lookup key ('by ID') from Document360. This clearly distinguishes it from sibling tools like get_category or search_in_project without requiring schema inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use this tool when you have a Document360 article ID and need the article's content. However, it does not explicitly state when to prefer this over sibling tools such as search_in_project or get_category, so guidance is minimal but not misleading.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_categoryB
Read-only

Get category by ID from Document360

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idYesDocument360 category ID (UUID string)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description 'Get category by ID' is consistent with that read-only intent. The description adds no additional behavioral context (e.g., not-found behavior, permissions), but the annotation covers the key safety trait, so a baseline 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence states the action, resource, identifier, and source with zero wasted words. It is as concise as possible while remaining informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with an output schema and readOnlyHint, the description is nearly complete. It lacks any pointer to related tools or return expectations, but those are reasonably covered by the sibling names and output schema, leaving only a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes category_id as a UUID string with 100% coverage. The description merely echoes 'by ID' without adding deeper meaning, so the schema carries the semantic weight and the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get'), resource ('category'), identifier ('by ID'), and source ('from Document360'), making the core operation clear. It does not explicitly differentiate from sibling get_category_page_content, but the resource and name distinction is sufficient for a 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like get_category_page_content or get_article. There are no conditions, exclusions, or supporting context, so usage is only implied by the action itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_category_page_contentB
Read-only

Get category page content by ID from Document360

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesDocument360 page ID (UUID string)
category_idYesDocument360 category ID (UUID string)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes that this is a safe read operation, and the description's 'Get' is consistent with it. The description adds no behavioral detail beyond that, but for a simple getter with an output schema the annotation covers the main behavioral concern.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence states action, resource, lookup key, and context with no filler or repetition. The structure is front-loaded and every word adds meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read-only tool with an output schema, the description is nearly complete. It could be stronger by explaining the relationship between category_id and page_id or when this content endpoint is appropriate, but an agent has enough to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both page_id and category_id documented as UUID strings, so the schema carries the parameter semantics. The description's singular 'by ID' is slightly ambiguous given two required IDs, but the schema resolves it; the description adds no parameter-level information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action ('Get'), the specific resource ('category page content'), the lookup mechanism ('by ID'), and the source system ('Document360'). It is clear, though it does not explicitly contrast with sibling tools like get_category, so differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to choose this tool over get_category, get_article, or search_in_project. There is no mention of use cases, prerequisites, or exclusions, leaving the agent to infer selection solely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_project_versionsA
Read-only

List all project versions from Document360

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, and the description's 'List' verb is consistent. The description adds the source context (Document360) but no additional behavioral details such as pagination or result format. Since annotations already declare the read-only nature, this is adequate but not extra rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It states the action and resource clearly and nothing else is needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only list tool with an output schema (not shown), the description is sufficient. It names what is listed (all project versions) and from where (Document360). No missing information that an agent would need to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema coverage is 100% (empty schema). The description adds no parameter-specific information, but with no parameters there is nothing to explain, so the baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb 'List' and resource 'project versions' with source 'Document360'. It clearly differentiates from sibling tools which target categories, articles, and search, not versions, so an agent can select it without confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is for listing versions, and none of the sibling tools handle versions, so the intended usage is obvious. However, it doesn't explicitly state when not to use it or name alternatives, so it lacks explicit exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_in_projectA
Read-only

Search inside a project version and return related articles/categories in Document360

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFree-text phrase searched across articles/categories via the Document360 backend
hits_per_pageNoMaximum number of ranked results to return (1-1000)
project_version_idYesDocument360 project version ID (UUID string)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint: true, so the read-only nature is already provided. The description adds that it returns articles/categories, which is a useful behavioral detail beyond annotations. It does not mention pagination or ranking behavior, but that is partially covered by the schema (hits_per_page) and the output schema. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with no fluff. The core action and resource are front-loaded, and it is appropriately concise for a simple search tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema and annotations, so the description does not need to explain return values or safety. It provides sufficient context for a search operation, given that the schema documents the parameters. It could mention ranking or ordering, but the output schema likely covers that. Overall, it is adequately complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, meaning all parameters (query, hits_per_page, project_version_id) already have descriptive text in the schema. The tool description adds no additional meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Search', the resource 'project version', and the outcome 'return related articles/categories'. This distinguishes it from siblings like get_article and get_category, which retrieve specific content. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: use this when you need to search across articles/categories rather than fetching a specific one. It does not explicitly name alternatives or exclusions, but the contrast with sibling tools (get_article, get_category) is clear from context. The guidance is adequate but could be more explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation4/5

Most tools target clearly distinct resources and actions. The only likely confusion is between get_category and get_category_page_content, since both retrieve category data by ID and the descriptions do not make the distinction explicit.

Naming Consistency5/5

Tool names consistently follow a clear verb_noun snake_case pattern: get_*, search_in_project, and list_project_versions. The naming style is uniform and predictable, making it easy for an agent to infer the purpose of each tool.

Tool Count5/5

Five tools is a well-scoped size for a read-oriented knowledge base server. Each tool covers a meaningful retrieval or search operation without unnecessary redundancy or bloat.

Completeness4/5

The set covers the core read/search workflows for articles, categories, category page content, and project versions. It lacks list-all endpoints and any mutation capabilities, but for a retrieval-focused Document360 assistant the coverage is workable.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/druellan/document360-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server