Skip to main content
Glama
GaijinEntertainment

Pararam Nexus MCP

Pararam Nexus MCP

A Model Context Protocol (MCP) server for interacting with pararam.io - a modern communication and collaboration platform.

About pararam.io

Pararam.io is a communication platform that provides:

  • Messaging: Create groups and private chats

  • Team Organization: Organize people into teams

  • Communication: Group and private calls (audio and video)

  • Cross-platform: Available on mobile (iOS, Android, Huawei) and web

This MCP server uses the pararamio-aio library to provide asynchronous access to pararam.io features through the Model Context Protocol.

Related MCP server: Telegram MCP Server

Features

  • Asynchronous API client for pararam.io

  • Two-factor authentication support (TOTP)

  • Session persistence with cookie storage

  • Comprehensive chat and message management

  • File attachment handling (upload and download)

  • URL-based message retrieval

  • Conversation thread building

Available Tools

Message Operations

  • search_messages: Search for messages across all chats with advanced search syntax (Boolean operators, wildcards, filters)

  • get_chat_messages: Get recent messages from a specific chat

  • send_message: Send a message to a chat with optional reply and quote text

  • get_message_from_url: Extract and retrieve a message from pararam.io URL

Chat Operations

  • search_chats: Search for chats by name or description

  • build_conversation_thread: Build a conversation tree from a root message

File Operations

  • upload_file_to_chat: Upload files to a chat (from path or base64 content)

  • get_post_attachments: List all attachments in a post

  • download_post_attachment: Download attachments (to disk or as ImageContent)

    • 1MB size limit for downloads

    • Supported formats for direct display: images (JPEG, PNG, GIF, WEBP), documents (PDF, DOCX, DOC, TXT, RTF, ODT, HTML, EPUB), spreadsheets (XLSX, XLS, CSV), data (JSON, XML)

    • Returns ImageContent for supported types (displays natively in Claude Desktop/Code)

    • For unsupported types, requires output_path to save to disk

    • Saves to disk when output path is provided

User Operations

  • search_users: Search for users by name or unique name

  • get_user_info: Get detailed information about a specific user

  • get_user_team_status: Get user's status in teams (member, admin, guest)

Tool Details

send_message

Send a message to a chat with optional reply and quote functionality.

Parameters:

  • chat_id (required): ID of the chat to send message to

  • text (required): Message text to send

  • reply_to_message_id (optional): Post number to reply to

  • quote_text (optional): Text to quote from the replied message (only used with reply_to_message_id)

Message formatting: Pararam supports Markdown-like text, but does not support Markdown headings (#, ##, ###). Use **bold** section titles instead. Use colors as [#RRGGBB](text); colored bullet example: [#2E7D32](●). Keep tables simple because colors may not render inside table cells. Use @all, @online, @admin, and @groups only when the user explicitly asks for broad notification, and ask for explicit confirmation before sending such mentions. See docs/PARARAM_FORMATTING.md for the full syntax.

Examples:

# Simple message
send_message(chat_id="123", text="Hello!")

# Reply to a message
send_message(
    chat_id="123",
    text="I agree!",
    reply_to_message_id="456"
)

# Reply with quoted text
send_message(
    chat_id="123",
    text="That's a great idea!",
    reply_to_message_id="456",
    quote_text="We should implement this feature next week"
)

Installation

Use the published PyPI package by default:

uvx pararam-nexus-mcp

For unreleased development snapshots, you can run directly from GitHub:

uvx --from git+https://github.com/ivolnistov/pararam-nexus-mcp pararam-nexus-mcp

For local development, clone the repository and install dependencies:

git clone https://github.com/ivolnistov/pararam-nexus-mcp.git ~/.mcp/pararam-nexus-mcp
cd ~/.mcp/pararam-nexus-mcp
uv sync

Docker Installation

Pull from Docker Hub:

docker pull ivolnistov/pararam-nexus-mcp:latest

Or from GitHub Container Registry:

docker pull ghcr.io/ivolnistov/pararam-nexus-mcp:latest

Development Installation

For local development:

git clone https://github.com/ivolnistov/pararam-nexus-mcp.git
cd pararam-nexus-mcp
uv sync --dev

Configuration

The server runs in one of two modes depending on which env vars are set.

Full mode — login + password (+ optional 2FA)

All tools are registered. Cookies are persisted between runs.

PARARAM_LOGIN=your_login
PARARAM_PASSWORD=your_password
PARARAM_2FA_KEY=your_2fa_key  # optional

Limited mode — X-UserToken service token

Set PARARAM_USER_TOKEN (mutually exclusive with PARARAM_LOGIN/PARARAM_PASSWORD). Only the chat / message / post / replies / edit / delete tools are registered; user lookups, global search, and file ops are excluded.

PARARAM_USER_TOKEN=your_service_token

To get a service token in Pararam:

  1. Open the Pararam Info Chat bot documentation.

  2. In User Tokens, run Create new token (bot://cmd_create_user_token?title=Create+new+token&conf=True).

  3. InfoBot will reply with New user token - ....

  4. Copy that value into PARARAM_USER_TOKEN and store it as a secret.

Tools available in limited mode:

  • Chatsget_chat, create_private_chat, create_group_chat, create_thread_chat

  • Postsget_chat_messages, get_message_from_url, get_reply_thread, get_replies_to_post, send_message, edit_post, delete_post

MCP Client Configuration

Claude Code (CLI)

Add the server using the Claude Code CLI:

# Using uvx (recommended)
claude mcp add pararam-nexus \
  --env PARARAM_LOGIN=myuser@example.com \
  --env PARARAM_PASSWORD=mySecurePassword123 \
  --env PARARAM_2FA_KEY=JBSWY3DPEHPK3PXP \
  -- uvx pararam-nexus-mcp

# Using Docker
claude mcp add pararam-nexus \
  --env PARARAM_LOGIN=myuser@example.com \
  --env PARARAM_PASSWORD=mySecurePassword123 \
  --env PARARAM_2FA_KEY=JBSWY3DPEHPK3PXP \
  -- docker run -i --rm ivolnistov/pararam-nexus-mcp:latest

Claude Desktop

  1. Open Claude Desktop preferences

  2. Navigate to the MCP section

  3. Click Edit to open claude_desktop_config.json

  4. Add the server configuration:

{
  "mcpServers": {
    "pararam-nexus": {
      "command": "uvx",
      "args": ["pararam-nexus-mcp"],
      "env": {
        "PARARAM_LOGIN": "myuser@example.com",
        "PARARAM_PASSWORD": "mySecurePassword123",
        "PARARAM_2FA_KEY": "JBSWY3DPEHPK3PXP"
      }
    }
  }
}

Option 2: Using Docker

First, create a volume for session persistence:

docker volume create pararam-mcp-data

Then add to claude_desktop_config.json:

{
  "mcpServers": {
    "pararam-nexus": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "pararam-mcp-data:/app/.cookies",
        "-e",
        "PARARAM_LOGIN=myuser@example.com",
        "-e",
        "PARARAM_PASSWORD=mySecurePassword123",
        "-e",
        "PARARAM_2FA_KEY=JBSWY3DPEHPK3PXP",
        "ivolnistov/pararam-nexus-mcp:latest"
      ]
    }
  }
}

Cursor IDE

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "pararam-nexus": {
      "command": "uvx",
      "args": ["pararam-nexus-mcp"],
      "env": {
        "PARARAM_LOGIN": "myuser@example.com",
        "PARARAM_PASSWORD": "mySecurePassword123",
        "PARARAM_2FA_KEY": "JBSWY3DPEHPK3PXP"
      }
    }
  }
}

Or using Docker (with session persistence):

First, create a volume:

docker volume create pararam-mcp-data

Then add to .cursor/mcp.json:

{
  "mcpServers": {
    "pararam-nexus": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "pararam-mcp-data:/app/.cookies",
        "-e",
        "PARARAM_LOGIN=myuser@example.com",
        "-e",
        "PARARAM_PASSWORD=mySecurePassword123",
        "-e",
        "PARARAM_2FA_KEY=JBSWY3DPEHPK3PXP",
        "ivolnistov/pararam-nexus-mcp:latest"
      ]
    }
  }
}

Other MCP-Compatible Clients

For any MCP-compatible client that supports stdio transport:

Using uvx:

uvx pararam-nexus-mcp

Using Docker (with session persistence):

# Create volume for cookies
docker volume create pararam-mcp-data

# Run with volume mounted
docker run -i --rm \
  -v pararam-mcp-data:/app/.cookies \
  -e PARARAM_LOGIN=myuser@example.com \
  -e PARARAM_PASSWORD=mySecurePassword123 \
  -e PARARAM_2FA_KEY=JBSWY3DPEHPK3PXP \
  ivolnistov/pararam-nexus-mcp:latest

Environment variables:

  • PARARAM_LOGIN (full mode): Your pararam.io login

  • PARARAM_PASSWORD (full mode): Your pararam.io password

  • PARARAM_2FA_KEY (optional): Your 2FA secret key for TOTP authentication in full mode

  • PARARAM_USER_TOKEN (limited mode): Service token sent as X-UserToken

Set either PARARAM_LOGIN/PARARAM_PASSWORD or PARARAM_USER_TOKEN, not both.

Usage

If installed with uvx:

uvx pararam-nexus-mcp

If cloned locally:

cd ~/.mcp/pararam-nexus-mcp
uv run pararam-nexus-mcp

For development:

uv run pararam-nexus-mcp

Development

Install pre-commit hooks:

uv run pre-commit install

Run linting and formatting:

uv run ruff check --fix src/
uv run ruff format src/

Run type checking:

uv run mypy src/pararam_nexus_mcp

Run tests:

uv run pytest

Dependencies

  • FastMCP: Model Context Protocol server framework

  • pararamio-aio: Async Python client for pararam.io API

  • httpx: Modern HTTP client

  • Pydantic: Data validation using Python type annotations

License

MIT

Available Tools

20 tools
build_conversation_threadA

Build a conversation thread starting from a root message.

Returns all messages that are replies to the root message or replies to those replies, recursively.

Args: chat_id: ID of the chat root_message_id: Post number to use as root of the conversation limit: Maximum number of recent messages to load and search (default: 100)

Returns: ToolResponse with BuildConversationThreadPayload containing flat list of all posts in the thread, sorted by post_no. Each post contains reply_to_post_no to reconstruct the tree structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
chat_idYes
root_message_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4.7/5.0
Behavior5/5

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

Despite no annotations, the description fully discloses behavior: returns a flat list sorted by post_no, each post includes reply_to_post_no for tree reconstruction, and limits to recent messages via 'limit' parameter. No behavioral gaps remain.

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

Conciseness4/5

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

Description is well-structured with Args and Returns sections, front-loading the purpose. It is slightly verbose but every sentence adds value, earning a high score for clarity and organization.

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?

Given the tool has an output schema (context signal), the description explains the return payload structure adequately. No missing information for effective use; all aspects are covered including parameters, behavior, and output format.

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

Parameters5/5

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

Schema coverage is 0%, so the description carries the full burden. It explains all three parameters: chat_id, root_message_id, and limit with default. This adds meaning beyond the schema's type definitions.

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 'Build' and resource 'conversation thread', specifying it starts from a root message and recursively retrieves all replies. This distinguishes it from siblings like 'get_replies_to_post' which likely returns only direct replies.

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 explains that the tool returns all replies recursively, implying its use for full thread retrieval. It lacks explicit 'when not to use' or comparison to alternatives, but the sibling list provides context.

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

create_group_chatA

Create a group chat with the given title and member set.

Args: title: Group chat title (required). description: Optional chat description. users: List of user IDs to invite. Empty/None creates an empty chat. organization_id: Organization to scope the chat to (optional).

Returns: ToolResponse with the new chat's ID and title.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
usersNo
descriptionNo
organization_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description must cover behavior. It notes creation and that empty users gives an empty chat, but lacks details on permissions, side effects, or limits.

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

Conciseness4/5

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

Clear structure with Args and Returns sections, but could be slightly more concise. No unnecessary filler, effectively conveys necessary info.

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?

Covers all parameters and return values, given output schema exists. Missing usage guidelines but otherwise complete for a creation tool with moderate complexity.

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

Parameters5/5

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

Schema coverage is 0%, but description explains each parameter in detail (title required, users behavior, optional description and org ID), adding significant meaning beyond the schema.

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?

Clearly states 'Create a group chat with the given title and member set', specifying verb and resource. Distinguishes from siblings like create_private_chat and create_thread_chat.

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?

No explicit guidance on when to use this tool versus siblings like build_conversation_thread or create_private_chat. Usage is implied but not clarified.

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

create_private_chatA

Create a personal (PM) chat with another user.

Args: user_id: Numeric ID of the user to start a PM with.

Returns: ToolResponse with the new chat's ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4.3/5.0
Behavior4/5

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

Without annotations, the description discloses the operation (create) and return value (new chat ID). However, it does not mention potential side effects or required permissions.

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 extremely concise: two sentences plus structured Args/Returns. It is front-loaded with the purpose and contains no extraneous information.

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 create tool with one parameter and an output schema, the description provides sufficient context: what it creates, the parameter meaning, and the return value. Minor omission of error conditions.

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

Parameters5/5

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

The description explains that user_id is the 'Numeric ID of the user to start a PM with', adding meaningful semantics beyond the schema's type-only definition, which had 0% coverage.

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 it creates a personal (PM) chat with another user, using specific verb and resource. It distinguishes from sibling tools like create_group_chat and create_thread_chat.

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?

The description implies usage for one-on-one direct messaging via the term 'personal (PM) chat', but does not explicitly state when to use or avoid this tool compared to alternatives.

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

create_thread_chatA

Create a branch (thread) chat rooted at a specific post in another chat.

Requires the parent chat to have allow_branch=True. Errors otherwise.

Args: parent_chat_id: ID of the chat to branch from. post_no: Post number to root the branch at. title: Optional title for the branch chat.

Returns: ToolResponse with the new branch chat's ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
post_noYes
parent_chat_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the creation action, required condition, and return value. However, it does not detail error scenarios or auth requirements, which are common for such tools.

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 concise and well-structured: purpose first, then precondition, then parameter list, then return. Every sentence adds value with no redundancy.

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?

Given the tool has 3 parameters and an output schema, the description covers purpose, prerequisites, parameters, and return value. It lacks error handling details but is otherwise complete for a creation tool.

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

Parameters5/5

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

Schema description coverage is 0%, but the description explains each parameter in the Args section: parent_chat_id as 'ID of the chat to branch from,' post_no as 'Post number to root the branch at,' and title as 'Optional title.' This adds substantial meaning beyond the schema.

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 'Create a branch (thread) chat rooted at a specific post in another chat,' using a specific verb and resource. This distinguishes it from sibling tools like create_group_chat and create_private_chat.

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 provides a clear prerequisite: 'Requires the parent chat to have allow_branch=True.' It implies when to use (branching from a post) but does not explicitly mention alternatives or when not to use, leaving some ambiguity with sibling build_conversation_thread.

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

delete_postA

Delete a post.

Args: chat_id: Numeric chat ID. post_no: Post number to delete (must be authored by the token's user).

Returns: ToolResponse confirming the delete and the resulting is_deleted flag.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYes
post_noYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Describes destructive action and ownership constraint, and mentions return flag. However, lacks details on permanence, error conditions, or side effects.

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?

Extremely concise: one-line action, then short Args and Returns. No wasted words, front-loaded.

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?

Covers core aspects: action, required params, authorship constraint, return value. Could include error handling or permanence, but adequate for a delete tool with output schema.

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?

Schema has no descriptions (0% coverage). Description adds meaning: chat_id as numeric, post_no as post number with authorship constraint. This compensates for schema gaps, but chat_id explanation is minimal.

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?

Clearly states 'Delete a post' with verb and resource. Distinguishes from sibling 'edit_post' and others. The additional ownership constraint further clarifies scope.

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?

Description implies usage (delete a post) but does not explicitly state when to use vs alternatives like 'edit_post' or when not to use. No exclusion criteria or alternative tool mentioned.

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

download_post_attachmentA

Download a specific attachment from a post.

If output_path is provided, saves file to disk and returns DownloadAttachmentResponse. If output_path is None and file type is supported, returns ImageContent for direct display. If output_path is None and file type is not supported, returns DownloadAttachmentErrorResponse.

Supported file types for ImageContent:

  • Images: JPEG, PNG, GIF, WEBP

  • Documents: PDF, DOCX, DOC, TXT, RTF, ODT, HTML, EPUB

  • Spreadsheets: XLSX, XLS, CSV

  • Data: JSON, XML

Args: chat_id: ID of the chat post_no: Post number file_guid: GUID of the file to download (from get_post_attachments) output_path: Optional absolute path where to save the file. If None, only supported file types can be displayed

Returns: ImageContent for supported file types (direct display in Claude), DownloadAttachmentResponse model when saved to disk, DownloadAttachmentErrorResponse model for errors, or error string

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYes
post_noYes
file_guidYes
output_pathNo

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It clearly covers different behaviors (save to disk, return ImageContent for supported types, error for unsupported) and lists supported file types, but does not mention file overwrite policies or permissions.

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

Conciseness4/5

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

The description is well-structured with sections, bullet points for file types, and clear arg descriptions. It front-loads the core action, though could be slightly more concise.

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?

No output schema exists, but the description covers all return types (ImageContent, DownloadAttachmentResponse, DownloadAttachmentErrorResponse, error string). All parameters are explained, and supported file types are listed, making the tool self-contained.

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

Parameters5/5

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

The input schema has no parameter descriptions (0% coverage), but the description's Args section fully explains all 4 parameters, including the purpose of output_path and that file_guid comes from get_post_attachments.

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 tool downloads a specific attachment from a post, with a specific verb and resource. It differentiates from siblings by explicitly covering file download behavior.

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?

The description explains usage conditions based on output_path and file type, but does not explicitly state when not to use this tool or compare to sibling tools like get_post_attachments or upload_file_to_chat.

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

edit_postA

Edit an existing post.

Args: chat_id: Numeric chat ID. post_no: Post number to edit (must be authored by the token's user). text: New post text. quote: Optional quoted text override. reply_no: Optional change to which post this one replies to.

Returns: ToolResponse with the edited post's identity and new text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
quoteNo
chat_idYes
post_noYes
reply_noNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only mentions the edit action and a permission constraint, but does not reveal side effects like notification, timestamp updates, or attachment handling.

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

Conciseness4/5

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

The description is concise and well-structured with a clear intro and listed arguments. It is front-loaded and each sentence provides useful information.

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

Completeness3/5

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

Given no annotations and 5 parameters, the description explains parameters adequately but lacks detail on return values (though output schema exists) and error conditions or edge cases.

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?

Schema description coverage is 0%, so the description adds value by explaining each parameter's purpose (chat_id, post_no, text, quote, reply_no). This meaningfully supplements the bare schema types.

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 'Edit an existing post,' which is a specific verb and resource. It distinguishes from siblings like delete_post and send_message.

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?

The description implicitly indicates when to use the tool (to edit a post) but does not explicitly compare with alternatives or state when not to use it. The constraint 'must be authored by the token's user' provides some guidance.

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

get_chatA

Fetch a single chat's metadata by ID.

Args: chat_id: Numeric chat ID.

Returns: ToolResponse with the chat title, type, member counts, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description merely implies a read operation via 'Fetch' but does not explicitly state non-destructiveness, authorization needs, or response behavior beyond returning metadata.

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 extremely concise, with the core purpose in the first sentence and no wasted words. The structure is clear and directly informative.

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?

Given the tool's simplicity (one parameter, output schema exists), the description adequately covers input, output, and purpose. Nothing critical is missing for basic usage.

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 description explains that chat_id is numeric and identifies the chat, which compensates for the 0% schema description coverage. It adds meaningful context beyond the schema's type-only specification.

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 'Fetch' and resource 'a single chat's metadata by ID', making the tool's specific function unambiguous. It effectively distinguishes from sibling tools like search_chats or get_chat_messages.

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?

The description lacks any guidance on when to use this tool versus alternatives. No exclusions, prerequisites, or comparative context are provided.

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

get_chat_messagesA

Get messages from a specific chat.

Args: chat_id: ID of the chat to get messages from limit: Maximum number of messages to return (default: 50) before_message_id: Get messages before this message ID (for pagination). If provided, returns messages older than this ID.

Returns: ToolResponse with GetChatMessagesPayload containing chat messages including sender, text, and timestamp

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
chat_idYes
before_message_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses return type and pagination behavior (before_message_id). Could mention it's read-only and not destructive, but operation is clearly a fetch.

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

Conciseness4/5

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

Front-loaded with main purpose, then concise parameter list. Docstring format is slightly verbose but remains efficient with no redundant sentences.

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?

Given output schema exists, description appropriately focuses on input and behavior. Covers all 3 parameters, pagination, and return content (sender, text, timestamp). No gaps for a list-messages tool.

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

Parameters5/5

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

Schema coverage is 0%, yet description fully compensates by explaining each parameter (chat_id, limit default 50, before_message_id for pagination). Provides default values and behavior, exceeding schema information.

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?

Explicitly states 'Get messages from a specific chat,' which is a clear verb+resource combination. Distinguishes from siblings like search_messages (search across chats) and get_chat (chat info), establishing unique identity.

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?

Docstring explains parameters and pagination, implying usage when you have chat_id. Lacks explicit when-not-to-use or alternatives, but context from siblings and parameter descriptions guides selection effectively.

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

get_message_from_urlA

Get a specific message from a pararam.io URL.

Args: url: Pararam.io URL (e.g., https://app.pararam.io/#/organizations/1/threads/12345#post_no-6789)

Returns: ToolResponse with GetMessageFromUrlPayload containing message details including post_no, text, sender, and timestamp

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4.1/5.0
Behavior3/5

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

The description adds behavioral context by mentioning the return type and specific fields (post_no, text, sender, timestamp). However, there are no annotations, and the description does not disclose auth needs, rate limits, or side effects. It implies a read operation but doesn't state it explicitly.

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 concise, using a clear docstring format with only necessary information. No superfluous words.

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?

With only one parameter and an output schema, the description is fairly complete. It explains the tool's purpose, the input format, and the return structure. Minor gap: no mention of error handling or authentication requirements.

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

Parameters5/5

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

Schema coverage is 0%, but the description provides detailed semantics for the 'url' parameter, including an example and format, which adds significant value beyond the schema's type definition.

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 tool gets a specific message from a pararam.io URL, with a specific verb and resource. It distinguishes from sibling tools like get_chat_messages by the unique URL-based input.

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?

The description provides an example URL but does not explicitly state when to use this tool versus alternatives like get_chat_messages or search_messages. No when-not or alternative guidance is given.

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

get_post_attachmentsA

Get list of attachments (files, images, documents) from a specific post.

Args: chat_id: ID of the chat post_no: Post number

Returns: ToolResponse with GetPostAttachmentsPayload containing list of attachments including file ID, name, size, and download URL

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYes
post_noYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided; description implies a read operation but does not disclose permissions, rate limits, or other behavioral traits beyond the basic return payload.

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 concise with a clear structure: purpose, args, returns. No unnecessary words.

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 tool with 2 required params and an output schema, the description covers inputs and outputs adequately. Lacks usage guidelines but otherwise complete.

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?

Schema description coverage is 0%, but the description provides brief parameter descriptions ('ID of the chat', 'Post number') adding meaning over raw schema.

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 it retrieves a list of attachments from a specific post, with explicit differentiation from sibling tool download_post_attachment.

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 on when to use this tool vs alternatives like download_post_attachment or when not to use it.

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

get_replies_to_postA

Fetch direct replies to a post (one level deep, hydrated).

Args: chat_id: Numeric chat ID. post_no: Post number whose direct replies should be returned.

Returns: ToolResponse with PostInfo entries for each direct reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYes
post_noYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns 'hydrated' PostInfo entries but does not mention read-only status, side effects, or authentication requirements. Adequate but not thorough.

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

Conciseness4/5

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

The description is relatively concise with clear Args and Returns sections. However, it repeats the parameter names already in the schema, which adds slight redundancy. Overall well-structured and front-loaded.

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?

Given the low complexity, presence of an output schema (though not detailed here), and no missing critical information, the description adequately covers purpose, parameters, and return type. It is sufficient for an agent to use the tool 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?

Schema description coverage is 0%, but the description adds meaning by explaining chat_id as 'Numeric chat ID' and post_no as 'Post number whose direct replies should be returned.' This significantly aids correct parameter use beyond the raw schema.

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 specifies the action ('Fetch'), the resource ('direct replies to a post'), and important qualifiers ('one level deep, hydrated'). This differentiates it from siblings like get_reply_thread or build_conversation_thread.

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?

The description implies when to use the tool ('direct replies, one level deep') but does not explicitly state when not to use it or point to alternatives like build_conversation_thread for deeper threads. It provides some context but not enough to fully guide selection.

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

get_reply_threadA

Fetch the full reply thread rooted at a post (server-side rerere traversal).

Returns every post number in the thread in the order the server reports them — the root and every transitively-reachable reply.

Args: chat_id: Numeric chat ID. post_no: Post number to root the thread traversal at.

Returns: ToolResponse with the list of post numbers comprising the thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYes
post_noYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It discloses that it returns post numbers in server-reported order and performs a 'rerere traversal' (likely recursive). However, it does not mention potential errors, authentication needs, or side effects, leaving gaps.

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

Conciseness4/5

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

The description is front-loaded with a concise one-line summary followed by a clear explanation. The use of bullet points for parameters and return values improves readability, though the term 'rerere traversal' could be simplified.

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

Completeness3/5

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

The description adequately covers inputs and outputs, but lacks usage guidelines and context for when to invoke this tool. Given the presence of an output schema, return value explanation is sufficient, but missing error handling or prerequisite info limits completeness.

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?

Although the input schema has 0% description coverage, the description compensates by providing clear parameter definitions for 'chat_id' and 'post_no' in a docstring format, adding meaning beyond the schema's basic type information.

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 tool fetches the full reply thread rooted at a post, using server-side traversal. It distinguishes itself from sibling tool 'get_replies_to_post' by specifying it returns every transitively-reachable reply, indicating a recursive retrieval vs. direct replies.

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?

The description provides no contextual guidance on when to use this tool versus alternatives like 'build_conversation_thread' or 'get_replies_to_post'. It lacks any explicit conditions, prerequisites, or usage scenarios.

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

get_user_infoC

Get detailed information about a specific user.

Args: user_id: User ID

Returns: ToolResponse with GetUserInfoPayload containing user details including id, name, unique_name, and team memberships

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It mentions return type and fields but doesn't disclose behavior for invalid user IDs, error cases, or that it is a read-only operation. The description is minimal on behavioral context.

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

Conciseness4/5

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

Description is short and front-loaded with the main purpose. The docstring style is clear, and every sentence adds information about args and returns. No wasted words.

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

Completeness3/5

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

Given the tool's simplicity (1 param, no nesting, output schema exists), the description adequately covers the basic function and return fields. However, it lacks usage guidance and behavioral details, making it minimally viable but not thorough.

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

Parameters2/5

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

Schema has 1 parameter (user_id) with no description (0% coverage). The description adds only 'User ID' to the parameter, which is a minimal clarification but adds no meaningful semantics beyond the schema.

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?

Clearly states verb 'get' and resource 'detailed information about a specific user'. The description lists returned fields (id, name, unique_name, team memberships), making the purpose concrete. However, it does not explicitly distinguish from sibling 'get_user_team_status', which could also return user info.

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 on when to use this tool versus alternatives like 'search_users' or 'get_user_team_status'. No mentions of prerequisites, context, or when not to use.

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

get_user_team_statusA

Get user's status in teams (member, admin, guest, or not in team).

Args: user_id: User ID to check team_id: Optional team ID to check status in specific team. If not provided, returns status in all teams.

Returns: ToolResponse with GetUserTeamStatusPayload containing team membership status including is_member, is_admin, is_guest, and state

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNo
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses return payload includes is_member, is_admin, is_guest, and state. Implicitly a read operation with no side effects. Could be more explicit about permissions, but adequate.

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

Conciseness4/5

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

Description is concise with clear arg/returns sections. Could be slightly shorter but no unnecessary content. Well-structured for an AI agent to parse.

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?

With output schema present, return type is sufficiently described. No annotations, but description covers behavior and parameters. A mention that this is a read-only operation would improve completeness, but overall solid.

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?

Schema has 0% description coverage, but description adds meaning: user_id is the ID to check, team_id is optional and if null returns all teams. This compensates for the schema gap.

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?

Clearly states the tool retrieves a user's team status (member, admin, guest, or not in team). Verb 'Get' and resource 'user's status in teams' are explicit. Distinguishes from sibling tools that focus on chat/message operations.

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?

Describes the optional team_id parameter: if provided, checks status in specific team; if not, returns status in all teams. Provides clear context on when to use each variant. No explicit when-not-to-use but not needed for this straightforward tool.

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

search_chatsA

Search for chats by name or description.

Args: query: Search query string limit: Maximum number of results to return (default: 20, applied client-side)

Returns: ToolResponse with SearchChatsPayload containing chat list including chat ID, name, type, and member count

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It mentions that the 'limit' parameter is 'applied client-side', which is a useful behavioral detail. However, it does not disclose any other traits such as authentication requirements, rate limits, or the impact of the search (e.g., whether it triggers side effects). The disclosure is partial.

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 concise, using three well-structured sentences. The main purpose is front-loaded ('Search for chats by name or description'), followed by parameter descriptions and return summary. Every sentence adds value with no redundant information.

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?

Given the tool's simplicity (2 parameters, straightforward search), the description covers the essential aspects: purpose, parameters, and return structure. The presence of an output schema reduces the need to detail return fields, but the description still provides a useful summary of the payload contents. The description is complete for agent usage.

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

Parameters5/5

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

Schema coverage is 0%, so the description must fully explain parameters. It does: 'query' is described as a search query string, and 'limit' is explained with its default value and that it is applied client-side. This adds substantial meaning beyond the schema's bare type and default fields.

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 tool's action ('Search for chats') and the specific fields to search against ('by name or description'). This verb+resource specification differentiates it from sibling tools like 'search_messages' and 'search_users', which perform searches on different entities.

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?

The description implies the tool should be used when searching for chats, but it does not explicitly state when not to use it or provide alternative tools. The sibling tools are listed in context, but no guidance is given on when to prefer one over another. The description lacks explicit usage boundaries.

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

search_messagesA

Search for messages across all chats or in specific chats.

Args: query: Search query string. Supports search filters (see below) limit: Maximum number of results to return (default: 20) chat_ids: Optional list of chat IDs to search within. If None, search in all chats.

Search Syntax: Boolean Operators: By default, all terms are optional (OR), as long as one term matches. Search for "foo bar baz" finds any document containing foo OR bar OR baz.

    + (must be present) - Example: +fox (fox must be found)
    - (must not be present) - Example: -news (news must be excluded)
    Example: "quick brown +fox -news" (fox required, news excluded, quick/brown optional)

    AND, OR, NOT (also &&, ||, !) - Standard boolean operators
    NOTE: NOT takes precedence over AND, which takes precedence over OR
    Example: "(quick OR brown) AND fox"

Grouping:
    Use parentheses to group terms: "(quick OR brown) AND fox"

Wildcards:
    ? - Replace single character: "qu?ck"
    * - Replace zero or more characters: "bro*"

Strict Search:
    Use quotes for exact phrase match: "some search phrase"

Fuzziness:
    Use ~ for similar terms (Damerau-Levenshtein distance, max 2 changes):
    "quikc~ brwn~ foks~" or "quikc~1" (edit distance of 1)

Proximity Search:
    Use ~N after phrase to allow words to be N positions apart:
    "fox quick"~5 (allows up to 5 words distance, any order)

Search Filters: Format: search text /filter1 param1 param2 /filter2 param

/users or /from - Find posts by specific users
    Example: /users @user1 @user2 or /from @user1 @user2

/replyto or /reply - Find messages that are replies to specified users
    Example: /replyto @user1 @user2 or /reply @user1 @user2

/to - Find messages that mention users OR are replies to them
    Example: /to @user1 @user2

/file - Find files by name pattern
    Example: /file *filen?me*

/from_date or /after - Find posts created after a date (YYYY-MM-DD, YYYY-MM, or YYYY)
    Example: /from_date 2016-01-22 or /after 2016-01 or /after 2016

/to_date or /before - Find posts created before a date (YYYY-MM-DD, YYYY-MM, or YYYY)
    Example: /to_date 2016-01-22 or /before 2016-01 or /before 2016

/tags - Find posts containing specific tags (strict match)
    Example: /tags hey may day or /tags #hey #may #day or #hey #may #day

/has - Find posts based on content type:
    /has tag - Posts containing tags (e.g., #may)
    /has link - Posts containing URLs or markdown links
    /has email - Posts containing email addresses
    /has mention - Posts mentioning any user or user with role
    /has user - Posts containing user mentions or words starting with @
    /has group - Posts containing role mentions
    /has reply - Posts that are replies
    /has file - Posts with attached files
    /has block - Posts with text in blocks (>text or ```text)
    /has poll - Posts containing polls

Returns: ToolResponse with SearchMessagesPayload containing search results with message text, sender, chat info, and timestamp

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
chat_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It extensively details search behavior (operators, filters, etc.) and the return structure, but doesn't explicitly state it's read-only or mention auth/rate limits. The behavioral detail is strong.

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

Conciseness4/5

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

The description is lengthy but well-structured with sections for query syntax, operators, filters, and return. It is front-loaded with purpose, but some details (e.g., all operator examples) could be condensed. Still, it earns its place.

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?

Given the complexity of search with advanced syntax and filters, the description is highly complete. It covers all parameters, behavior, and return payload. No missing aspects for effective tool invocation.

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

Parameters5/5

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

Schema coverage is 0%, so the description must fully explain parameters. It does so: query syntax with examples, limit default, chat_ids optional. This adds significant value beyond the bare schema.

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 tool searches for messages across all chats or specific chats. The verb 'Search' and resource 'messages' are specific, and it distinguishes from siblings like search_chats and get_chat_messages.

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?

The description explains how to use the tool but does not explicitly guide when to use it versus alternatives like get_chat_messages. It implies usage for broad searches but lacks when-not guidance.

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

search_usersA

Search for users by name or unique name.

Args: query: Search query string (name or unique_name) limit: Maximum number of results to return (default: 20)

Returns: ToolResponse with SearchUsersPayload containing list of users including id, name, unique_name, and team memberships

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the search behavior, the two searchable fields, the limit parameter, and the return payload structure. It implies a read operation with no side effects, which is appropriate for a search tool.

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

Conciseness4/5

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

The description is well-structured with Args and Returns sections, making it easy to parse. It is not overly long, but slightly verbose for a simple search tool; however, it remains efficient.

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?

Given an output schema exists (from context signals), the description does not need to detail returns but does so anyway, aiding completeness. For a low-complexity search tool, it covers parameters, return fields, and default behavior, though it could mention sorting or case sensitivity.

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

Parameters5/5

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

The schema has 0% description coverage, so the description must compensate. It fully describes both parameters: query as 'Search query string (name or unique_name)' and limit as 'Maximum number of results to return (default: 20)', adding meaning beyond the type definitions.

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 tool searches for users by name or unique name, specifying the verb (search) and resource (users). It distinguishes from sibling tools like get_user_info, which likely retrieves by ID, and other search tools that target chats or messages.

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?

The description implies usage when needing to find users by name or unique_name, but lacks explicit guidance on when not to use it or how it compares to alternatives like get_user_info. Given the number of sibling tools, more context would help.

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

send_messageA

Send a message to a chat.

Args: chat_id: ID of the chat to send message to text: Message text to send reply_to_message_id: Post number to reply to (optional) quote_text: Text to quote from the replied message (optional, only used with reply_to_message_id)

Returns: ToolResponse with SendMessagePayload containing sent message details including message ID and timestamp

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
chat_idYes
quote_textNo
reply_to_message_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral context. It describes parameters and return type but omits behaviors like error handling, rate limits, permission requirements, or what happens if chat_id is invalid.

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?

Structured as a docstring with Args and Returns, no fluff. Every sentence provides necessary information. Front-loaded with purpose, parameter list, and return summary.

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

Completeness3/5

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

Covers essential parameters and return type given an output schema exists. Lacks situational context like error conditions, character limits on text, or idempotency guarantees. Adequate for a straightforward sending tool but not comprehensive.

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?

Schema coverage is 0%, so description compensates thoroughly. It details each parameter: chat_id, text, reply_to_message_id (optional), quote_text (only used with reply_to_message_id). Adds dependency constraint and optionality beyond the schema.

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 'Send a message to a chat' with a specific verb and resource. It distinguishes from sibling tools like create_group_chat or upload_file_to_chat by focusing on sending a plain text message to an existing chat.

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 on when to use this tool versus alternatives like build_conversation_thread or reply-oriented tools. It does not explain prerequisites (e.g., user must be a member of the chat) or when to prefer it over other messaging functions.

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

upload_file_to_chatA

Upload a file to a chat.

Args: chat_id: ID of the chat to upload file to file_path: Absolute path to the file on local filesystem (mutually exclusive with file_content) file_content: Base64-encoded file content (mutually exclusive with file_path) filename: Filename to use when file_content is provided (required if file_content is set) reply_to_message_id: Post number to reply to (optional)

Returns: ToolResponse with UploadFilePayload containing uploaded file details including file ID, name, size, and URL

ParametersJSON Schema
NameRequiredDescriptionDefault
chat_idYes
filenameNo
file_pathNo
file_contentNo
reply_to_message_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if operation failed
messageYesHuman-readable summary of the result
payloadNoThe actual response data
successYesWhether the operation was successful

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the uploading process and the two modes of providing file data, but does not mention any side effects, authentication needs, rate limits, or what happens if the chat is invalid or file already exists. The return type is mentioned, but deeper behavioral traits are absent.

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

Conciseness4/5

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

The description is structured with a brief opening sentence followed by a bulleted list of parameters and a returns note. It is clear and without extraneous text. Slightly more concise phrasing could be used, but overall it is efficient and front-loaded.

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?

Given the complexity (5 parameters, mutual exclusivity, optional reply-to), the description covers the essential behavior and return format. It does not discuss error cases, file size limits, or supported file types, but the presence of an output schema (per context signals) reduces the burden on the description for return value details. The description is largely complete for a file upload tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully explain each parameter. It does: chat_id, file_path, file_content, filename, and reply_to_message_id. It explains the mutual exclusivity of file_path and file_content, and the requirement for filename when file_content is set. This adds significant meaning beyond the bare schema.

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 'Upload a file to a chat,' which is a specific verb+resource combination. It distinguishes from sibling tools like send_message (for text) and download_post_attachment (for downloading). The title 'upload_file_to_chat' directly maps to the described action.

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 provides explicit guidance on when to use file_path vs file_content, noting their mutual exclusivity and the filename requirement when file_content is used. It does not explicitly mention when not to use this tool compared to siblings, but the parameter explanations help the agent decide. Missing context on file size limits or format constraints.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 20 tool updatesv0.3.0
    • Addedbuild_conversation_thread
    • Addedcreate_group_chat
    • Addedcreate_private_chat
    • Addedcreate_thread_chat
    • Addeddelete_post
    • Addeddownload_post_attachment
    • Addededit_post
    • Addedget_chat
    • Addedget_chat_messages
    • Addedget_message_from_url
    • Addedget_post_attachments
    • Addedget_replies_to_post
    • Addedget_reply_thread
    • Addedget_user_info
    • Addedget_user_team_status
    • Addedsearch_chats
    • Addedsearch_messages
    • Addedsearch_users
    • Addedsend_message
    • Addedupload_file_to_chat
  2. 12 tool updatesv0.1.3
    • Removedbuild_conversation_thread
    • Removeddownload_post_attachment
    • Removedget_chat_messages
    • Removedget_message_from_url
    • Removedget_post_attachments
    • Removedget_user_info
    • Removedget_user_team_status
    • Removedsearch_chats
    • Removedsearch_messages
    • Removedsearch_users
    • Removedsend_message
    • Removedupload_file_to_chat
  3. 12 tool updatesv1.0.0
    • First observedbuild_conversation_thread
    • First observeddownload_post_attachment
    • First observedget_chat_messages
    • First observedget_message_from_url
    • First observedget_post_attachments
    • First observedget_user_info
    • First observedget_user_team_status
    • First observedsearch_chats
    • First observedsearch_messages
    • First observedsearch_users
    • First observedsend_message
    • First observedupload_file_to_chat

TDQS

A3.8/5.0
Disambiguation4/5

Tools are mostly distinct, but build_conversation_thread and get_reply_thread both retrieve threads with different methods, potentially causing confusion. Other overlaps are minor and clarified by descriptions.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., create_group_chat, get_chat_messages). No mixing of conventions, making the surface predictable.

Tool Count5/5

20 tools is well-scoped for a messaging platform, covering creation, retrieval, editing, search, and file handling without unnecessary redundancy.

Completeness4/5

Core messaging workflows are covered, but missing update/delete chat, member management, and chat listing. Minor gaps that agents can work around.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/GaijinEntertainment/pararam-nexus-mcp'

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