Skip to main content
Glama
johnkeller101

Tapatalk MCP Server

Tapatalk MCP Server

An MCP (Model Context Protocol) server that connects AI assistants to any Tapatalk-enabled forum. This covers thousands of phpBB, vBulletin, XenForo, MyBB, and SMF forums that have the Tapatalk plugin installed.

Built specifically for use with Claude Code, but compatible with any MCP client.

What It Does

  • Browse forum structure and list topics

  • Read full thread content with posts, authors, and timestamps

  • Search topics and posts by keyword, user, forum, or date range

  • View user profiles and online status

  • Optionally create topics and post replies (disabled by default)

Related MCP server: Reddit MCP Server

Requirements

  • Node.js 18+

  • A Tapatalk-enabled forum (the forum must have the Tapatalk/mobiquo plugin installed)

Installation

# Clone the repo
git clone <repo-url> tapatalk-mcp
cd tapatalk-mcp

# Install dependencies
npm install

# Build
npm run build

Configuration

All configuration is through environment variables.

Required

Variable

Description

Example

TAPATALK_FORUM_URL

Base URL of the forum (no trailing slash)

https://forums.example.com

Optional — Authentication

Variable

Description

Default

TAPATALK_USERNAME

Forum username for authenticated access

(none — guest mode)

TAPATALK_PASSWORD

Forum password

(none — guest mode)

When credentials are provided, the server logs in once on startup and automatically re-authenticates if the session expires. No background requests are made — re-login only happens when you actually use a tool and the session has gone stale.

Without credentials, the server operates in guest mode with access to public forums only.

Optional — Cloudflare Bypass

Variable

Description

Default

TAPATALK_CHROME_CDP_URL

URL of a headless Chrome instance for Cloudflare-protected forums

(none — direct requests)

Some forums use Cloudflare which blocks server-side requests. When configured, the server first tries a direct request. If it gets a 403, it automatically connects to the headless Chrome instance via CDP, navigates to the forum to establish Cloudflare clearance, then executes XML-RPC calls from within the browser context using the browser's real TLS fingerprint. The browser page is cached for 10 minutes and automatically reconnects when stale.

Example: TAPATALK_CHROME_CDP_URL=http://chrome:9222 (when running alongside a chromedp/headless-shell container).

Optional — Safety

Variable

Description

Default

TAPATALK_READ_ONLY

When true, write tools are not registered at all

true

TAPATALK_ALLOW_HTTP

Must be true to allow non-HTTPS forum URLs

false

Read-only mode is on by default. The write tools (tapatalk_new_topic, tapatalk_reply_post) are not even available to the AI unless you explicitly set TAPATALK_READ_ONLY=false.

HTTPS is enforced by default. If your forum only supports HTTP, you must explicitly opt in with TAPATALK_ALLOW_HTTP=true. Be aware this transmits credentials in plaintext.

Adding to Claude Code

Add the server to your Claude Code MCP configuration:

{
  "mcpServers": {
    "tapatalk": {
      "command": "node",
      "args": ["/path/to/tapatalk-mcp/dist/index.js"],
      "env": {
        "TAPATALK_FORUM_URL": "https://forums.example.com"
      }
    }
  }
}

With authentication (read-only)

{
  "mcpServers": {
    "tapatalk": {
      "command": "node",
      "args": ["/path/to/tapatalk-mcp/dist/index.js"],
      "env": {
        "TAPATALK_FORUM_URL": "https://forums.example.com",
        "TAPATALK_USERNAME": "your_username",
        "TAPATALK_PASSWORD": "your_password"
      }
    }
  }
}

This gives you access to private forums and features like unread topics, while keeping write operations disabled.

With Cloudflare bypass (headless Chrome)

{
  "mcpServers": {
    "tapatalk": {
      "command": "node",
      "args": ["/path/to/tapatalk-mcp/dist/index.js"],
      "env": {
        "TAPATALK_FORUM_URL": "https://forums.example.com",
        "TAPATALK_CHROME_CDP_URL": "http://localhost:9222"
      }
    }
  }
}

Requires a headless Chrome instance running with remote debugging enabled (e.g. chromedp/headless-shell:stable).

With write access

{
  "mcpServers": {
    "tapatalk": {
      "command": "node",
      "args": ["/path/to/tapatalk-mcp/dist/index.js"],
      "env": {
        "TAPATALK_FORUM_URL": "https://forums.example.com",
        "TAPATALK_USERNAME": "your_username",
        "TAPATALK_PASSWORD": "your_password",
        "TAPATALK_READ_ONLY": "false"
      }
    }
  }
}

Available Tools

Forum Browsing

Tool

Description

tapatalk_get_config

Get forum capabilities and Tapatalk version. Good for verifying connectivity.

tapatalk_get_forum

List all forums/subforums in a tree structure. Returns forum IDs needed for other tools.

tapatalk_get_board_stats

Total threads, posts, members, and online visitors.

Topic Listing

Tool

Description

tapatalk_get_topics

List topics in a specific forum. Supports pagination and filtering by stickies/announcements.

tapatalk_get_latest_topics

Latest topics across all forums, ordered by date.

tapatalk_get_unread_topics

Unread topics for the logged-in user. Requires authentication.

tapatalk_get_participated_topics

Topics you've posted in. Requires authentication.

Reading Threads

Tool

Description

tapatalk_get_thread

Read posts in a topic. Returns post content, authors, timestamps, attachments. Paginated.

tapatalk_get_thread_by_unread

Jump to the first unread post in a topic. Requires authentication.

Tool

Description

tapatalk_search_topics

Search topics by keyword. Returns topic matches with short content previews.

tapatalk_search_posts

Search individual posts by keyword. Returns post-level matches.

tapatalk_search_advanced

Advanced search with filters: keywords, user, forum, date range, title-only mode.

User Info

Tool

Description

tapatalk_get_user_info

Get a user's profile by username or user ID.

tapatalk_get_online_users

List currently online users.

Write Operations (requires TAPATALK_READ_ONLY=false)

Tool

Description

tapatalk_new_topic

Create a new topic in a forum. Posts publicly to the forum.

tapatalk_reply_post

Reply to an existing topic. Posts publicly to the forum.

Usage Examples

Once configured, you can interact with the forum through Claude naturally:

  • "What forums are available?"

  • "Show me the latest topics in the General Discussion forum"

  • "Search for posts about 'firmware update'"

  • "Read the thread about the new release"

  • "Find all posts by user 'johndoe' in the last month"

  • "What's the total post count on this forum?"

Pagination

All list/search tools support pagination with page (1-based) and per_page (default 20, max 50) parameters. Responses include a meta object with:

{
  "meta": {
    "total": 142,
    "page": 1,
    "per_page": 20,
    "has_more": true
  }
}

Search results also include a search_id that can be passed back for efficient pagination through cached server-side results.

How It Works

The server communicates with the forum through Tapatalk's XML-RPC API, which is exposed at /mobiquo/mobiquo.php on any forum with the Tapatalk plugin installed. The MCP server:

  1. Translates MCP tool calls into XML-RPC method calls

  2. Handles Tapatalk's byte[] (base64-encoded string) parameter convention

  3. Manages session cookies for authentication

  4. Parses XML-RPC responses back into structured JSON

Checking if a forum supports Tapatalk

Visit https://your-forum.com/mobiquo/mobiquo.php in a browser. If you see a response (even an error page from the mobiquo script), Tapatalk is installed. If you get a 404, it's not.

Security

Credentials

  • Credentials are only accepted via environment variables, never CLI arguments

  • Passwords are never logged or included in tool responses

  • HTTPS is enforced by default

Read-Only Default

  • Write tools are not registered in read-only mode (the default) — they cannot be invoked at all

  • Write mode requires explicit opt-in via TAPATALK_READ_ONLY=false

Network

  • All requests go to a single fixed URL (the configured forum)

  • No redirects to other hosts are followed (SSRF prevention)

  • Response size is capped at 5MB

  • Request timeout is 15 seconds

Content Safety

  • Forum content (posts, titles, usernames) is returned as structured JSON data fields

  • No forum content is executed, interpreted, or used to construct API calls

  • All tool inputs are validated via Zod schemas before any API call is made

XML-RPC

  • Custom hand-written XML parser — no XXE vulnerability surface

  • All string inputs are XML-escaped before embedding in requests

  • Strict parsing that rejects malformed responses

Compatibility

This server works with any forum that has the Tapatalk plugin installed, including:

  • phpBB 3.x

  • vBulletin 4.x / 5.x

  • XenForo 1.x / 2.x

  • MyBB 1.8+

  • SMF 2.x

  • Kunena (Joomla)

  • WoltLab (WBB)

The Tapatalk API is standardized across all these platforms — the same MCP tools work regardless of the underlying forum software.

Development

# Watch mode (recompile on changes)
npm run dev

# Build once
npm run build

# Run directly
TAPATALK_FORUM_URL=https://your-forum.com node dist/index.js

License

MIT

Available Tools

14 tools
tapatalk_get_board_statsA
Read-only

Get board-wide statistics: total threads, posts, members, and online visitors.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint: true, and the description simply says 'Get', adding no extra behavioral context. There is no mention of data freshness, time range, or whether 'online visitors' is a current count, which could matter for interpretation.

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, concise sentence that front-loads the action ('Get board-wide statistics') followed by a clear list of contents. There is no redundancy or wasted 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 stats tool with no parameters and no output schema, the description adequately lists the key returned metrics. It lacks some nuance (e.g., whether stats are for all time or a range), but overall it's complete enough for an API with 0 complexity.

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 has zero parameters, so the input schema is trivially covered. The description adds no parameter info, but none is needed. This matches the 0-parameter baseline of 4.

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 purpose: 'Get board-wide statistics' and enumerates specific metrics (total threads, posts, members, online visitors). This distinguishes it from sibling tools like tapatalk_get_online_users or tapatalk_get_config by focusing on aggregate board-level data.

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 gives no guidance on when to use this tool versus alternatives. For example, it doesn't clarify whether to use this for online counts instead of tapatalk_get_online_users, nor does it mention any prerequisites or context.

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

tapatalk_get_configA
Read-only

Get forum configuration, capabilities, and Tapatalk plugin version. Use this to verify connectivity and discover what features the forum supports.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

The readOnlyHint annotation already indicates a safe read operation. The description adds the purpose of verifying connectivity and feature discovery, but doesn't disclose additional behavioral traits like response format or rate limits. 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 concise two-sentence structure, front-loaded with the action and resource. Every word earns its place, with no extraneous detail.

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 zero-parameter, read-only config tool with no output schema, the description is fully complete. It states what the tool does, what it returns, and a primary use case, making it sufficient for the agent 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.

Parameters4/5

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

There are zero parameters, so the baseline is 4. The description adds value by explaining what the tool returns (configuration, capabilities, version), which is helpful context for interpreting results.

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 'Get forum configuration, capabilities, and Tapatalk plugin version' with a specific verb and resource. It distinguishes itself from sibling tools like tapatalk_get_forum or tapatalk_get_board_stats by focusing on configuration and capabilities rather than content retrieval.

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?

It provides explicit context: 'Use this to verify connectivity and discover what features the forum supports.' This tells the agent when to invoke it, though it doesn't explicitly name alternatives or state 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.

tapatalk_get_forumA
Read-only

List forums and subforums in a tree structure. Returns forum IDs needed for browsing topics.

ParametersJSON Schema
NameRequiredDescriptionDefault
forum_idNoGet only children of this forum ID. Omit for all forums.
include_descriptionNoInclude forum descriptions

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description does not need to repeat safety. It adds the context of 'tree structure' and the purpose of returning forum IDs, but offers no additional behavioral details such as response format, pagination, or depth of the tree. 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 two sentences, front-loaded with the core purpose and followed by a relevant detail about the return value. Every word earns its place 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?

For a simple read-only list tool with two optional parameters and no output schema, the description is adequate. It conveys the tree structure and the importance of forum IDs. It could elaborate on the exact return format, but the minimal gap is acceptable given the schema covers parameters.

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 covers all parameters with descriptions (100% coverage), so the description adds no additional parameter meaning. Per rubric, baseline is 3 when schema coverage is high.

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 'List forums and subforums in a tree structure' with a specific verb and resource, and distinguishes it from sibling tools by noting it returns forum IDs needed for browsing topics. It is immediately clear this tool is about retrieving the forum hierarchy, not topics or threads.

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 when to use it by stating it returns forum IDs needed for browsing topics, suggesting a prerequisite for topic-listing tools. However, it does not explicitly name alternatives or state when not to use it, but the context is clear.

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

tapatalk_get_latest_topicsA
Read-only

Get the latest topics across all forums, ordered by date.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
per_pageNoTopics per page (max 50)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, covering safety. The description adds meaningful behavioral context by specifying that topics are ordered by date and span all forums, which goes beyond the basic read-only signal. No hidden side-effects are implied.

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 sentence that is front-loaded and directly states the purpose. There is no unnecessary verbosity or repetition. Every word contributes to the 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?

The tool is simple with only optional parameters, and annotations plus schema cover safety and parameter details. The description implies a list of topics as output, but without an output schema, a bit more detail (e.g., topic fields) could enhance completeness. Still, it is adequate for typical use.

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 provides full descriptions for both parameters (page, per_page) with defaults and constraints, so schema coverage is 100%. The description does not add extra parameter semantics, adhering to the baseline for high schema 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 the action ('Get') and the specific resource ('latest topics across all forums'), with an explicit ordering detail ('ordered by date'). This distinguishes it from sibling tools like get_topics, which likely lacks the global scope and date ordering.

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 a use case for retrieving global recent topics, but it does not explicitly mention when to choose this over siblings like get_topics, get_unread_topics, or get_participated_topics. No alternatives or exclusions are stated.

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

tapatalk_get_online_usersA
Read-only

List users currently online on the forum.

ParametersJSON Schema
NameRequiredDescriptionDefault

No 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 indicates a safe read operation. The description adds minimal behavioral context beyond the scope ('currently online'), but does not disclose response format, pagination, or whether the list includes guests or bots.

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, direct sentence with no filler or redundancy, earning a top score for conciseness and structure.

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 no parameters and no output schema, the description outlines the core functionality clearly. However, it omits details about the returned data structure, which could leave an agent uncertain, but for a simple list tool it is largely sufficient.

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?

There are zero parameters, so the schema requires no explanation. The description implies the tool takes no arguments, which is consistent. Baseline 4 applies for zero-parameter tools.

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 uses a clear verb 'List' and specifies the resource 'users currently online on the forum', distinguishing it from sibling tools focused on topics, threads, or individual 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?

The description provides no guidance on when to use this tool versus alternatives, nor any exclusions, prerequisites, or context about when it would be appropriate.

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

tapatalk_get_participated_topicsA
Read-only

Get topics the logged-in user has participated in (posted or created). Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
per_pageNoTopics per page (max 50)

TDQS

A4.2/5.0
Behavior4/5

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

The annotation readOnlyHint=true already signals a safe read operation. The description adds the critical behavioral detail that authentication is required, and clarifies that 'participated' means posted or created. This goes beyond the annotation without contradicting it.

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, highly informative sentence that covers purpose and authentication. No filler or redundant content, making it exceptionally concise and well-structured.

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 paginated list tool, the description adequately covers purpose, scope, and auth. There is no output schema, but the return type (topics) is self-evident from the name and description. Minor omission: does not explicitly state that pagination is supported, but the schema for page/per_page fills this 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?

Schema description coverage is 100%: both `page` and `per_page` are fully documented with defaults, minimums, and maximums. The description adds no additional parameter information, so the baseline of 3 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 clearly states the verb 'Get' and the resource 'topics the logged-in user has participated in', with additional clarification '(posted or created)'. This distinguishes it from sibling topic-list tools like tapatalk_get_topics, tapatalk_get_latest_topics, and tapatalk_get_unread_topics.

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 gives clear context: it is for retrieving topics the logged-in user has participated in, and it notes the authentication requirement. While it does not explicitly list alternatives or exclusions, the scope is unambiguous and appropriate for the tool's simple purpose.

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

tapatalk_get_threadA
Read-only

Get posts in a topic thread. Returns post content, authors, timestamps, and attachments. Content is returned as-is from the forum (may contain BBCode or HTML).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
per_pageNoPosts per page (max 50)
topic_idYesTopic ID to read

TDQS

A4/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses that content is returned as-is and may contain BBCode or HTML, which is a valuable behavioral detail. It also lists return fields (post content, authors, timestamps, attachments), adding context not present in 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 two sentences, front-loaded with the primary action ('Get posts in a topic thread'), followed by essential details about return fields and formatting behavior. Every sentence adds value with no filler or 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?

For a simple read-only tool with full schema coverage and no output schema, the description adequately covers purpose, return fields, and content format. Pagination is handled by the schema. Minor gap: it does not describe the exact output structure, but this is not critical given the schema coverage.

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 already provides 100% coverage with clear descriptions for all three parameters (topic_id, page, per_page). The description adds no further parameter-specific semantics beyond the term 'topic thread' which aligns with topic_id, so the baseline 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?

Description starts with a specific verb+resource: 'Get posts in a topic thread.' It clearly states the tool's function and differentiates from sibling tools like tapatalk_get_topics (which lists topics) by focusing on posts within a single 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?

Usage is implied by the description—this tool is for reading posts in a specific thread—but there is no explicit guidance on when to use it versus alternatives like tapatalk_get_thread_by_unread, which is a sibling tool specifically for unread threads. No exclusions or alternative checks are mentioned.

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

tapatalk_get_thread_by_unreadA
Read-only

Jump to the first unread post in a topic. Requires authentication for accurate unread tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
topic_idYesTopic ID to read

TDQS

A4.2/5.0
Behavior4/5

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

The annotation readOnlyHint=true already signals a safe read operation. The description adds valuable context about authentication dependency and its impact on unread tracking accuracy, which is not conveyed by annotations. It does not detail edge cases like no unread posts, but the burden is partially covered by the readOnlyHint.

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 highly concise: two short sentences, front-loaded with the core action, and no redundant information. Every word earns its place.

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 one parameter, a readOnlyHint, and no output schema, the description covers the essential functionality and the auth caveat. It lacks explicit mention of return format or behavior when there are no unread posts, but the tool's purpose is conveyed clearly enough for an agent to use 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%: topic_id is described as 'Topic ID to read'. The tool description does not add any additional parameter semantics beyond what the schema already provides, so the baseline score of 3 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 clearly states the action ('Jump to the first unread post in a topic') with a specific verb and resource. It distinguishes from siblings like tapatalk_get_thread (normal thread fetch) and tapatalk_get_unread_topics (list of unread topics) by focusing on the first unread post navigation.

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 clear context: it is for jumping to the first unread post, and mentions that authentication is required for accurate tracking. However, it does not explicitly state when to use this tool over alternatives or mention exclusions, so it stops short of a 5.

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

tapatalk_get_topicsA
Read-only

List topics in a specific forum. Returns topic IDs, titles, authors, reply counts, and short previews.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoFilter: TOP for stickies, ANN for announcements
pageNoPage number (1-based)
forum_idYesForum ID to list topics from
per_pageNoTopics per page (max 50)

TDQS

A4.2/5.0
Behavior4/5

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

The readOnlyHint annotation already communicates safety. The description adds value by disclosing the return fields (topic IDs, titles, authors, reply counts, previews), which is useful behavior context beyond the annotation. It does not overpromise or contradict the annotation.

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 two short, front-loaded sentences with no filler. Every word contributes: it states the action, scope, and return contents, making it highly 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 the schema covers parameters and annotations cover read-only safety, the description completes the picture by describing the output shape (returned fields). It does not mention pagination or mode filtering, but those are already explained in the schema and are not essential to the tool's core purpose.

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 already documents all four parameters completely (forum_id, page, per_page, mode) with descriptions, giving 100% coverage. The tool description does not add any extra parameter-specific meaning beyond the schema, so the baseline score of 3 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 uses a specific verb ('List') and resource ('topics in a specific forum'), clearly distinguishing it from siblings like tapatalk_get_latest_topics or tapatalk_search_topics. It also specifies the scope (specific forum) and what is returned.

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 phrase 'in a specific forum' provides clear context for when to use this tool: when the caller knows the target forum ID, as opposed to the latest/unread/participated topic tools. It does not explicitly list alternatives or exclusions, but the intended usage is evident from the description and sibling names.

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

tapatalk_get_unread_topicsA
Read-only

Get unread topics for the logged-in user. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
per_pageNoTopics per page (max 50)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds 'Requires authentication' and 'logged-in user' scope, which are behavioral traits beyond the annotation. This provides useful context about the tool's requirements and operation without contradicting the read-only hint.

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 two precise, front-loaded sentences: the first states the action and resource, the second states the authentication requirement. Every word earns its place with no redundancy.

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 simple listing tool with only two optional pagination parameters and a read-only annotation, the description fully covers the core purpose and auth prerequisite. The schema handles pagination details, and the sibling differentiation is sufficient, making the description complete for an agent's needs.

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 descriptions cover both parameters (page and per_page) with defaults and constraints, so the description adds no additional parameter-level meaning. With 100% schema coverage, baseline 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 uses the specific verb 'Get' and identifies the resource as 'unread topics' for the logged-in user, which clearly distinguishes it from sibling tools like tapatalk_get_topics or tapatalk_get_latest_topics. It also adds the authentication prerequisite, making the purpose 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 states the context as 'for the logged-in user' and mentions authentication, which implies when the tool should be used. However, it does not explicitly name alternatives or state exclusions, but the scope is clear enough for an agent to select it appropriately.

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

tapatalk_get_user_infoA
Read-only

Get a user's profile information including post count, registration date, last activity, online status, and avatar.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoUser ID to look up (provide either username or user_id)
usernameNoUsername to look up (provide either username or user_id)

TDQS

A4.1/5.0
Behavior3/5

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

The readOnlyHint annotation already declares this as a safe read operation. The description adds what fields are returned, but does not discuss behavior like parameter precedence, error cases, authentication needs, or rate limits. With annotations present, the description provides some added context but lacks depth.

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, clearly structured sentence that lists key return fields without fluff. Every word contributes value.

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 simple read-only user info lookup, the description covers the essential return fields. No output schema exists, but the listed fields are sufficient for an agent to understand what it will receive. The tool is low complexity and the annotations plus schema provide adequate context.

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 user_id and username documented. The description merely restates that either can be provided, adding no new semantics beyond what the schema already provides. Baseline 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 tool's action ('Get') and target ('user's profile information'), and enumerates specific data fields (post count, registration date, last activity, online status, avatar). This distinguishes it from sibling tools that focus on forums, topics, or searches.

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 the use case—retrieving user profile data—and the sibling list confirms this is the only tool for that purpose. However, it does not explicitly mention when not to use it or provide alternative tool recommendations, so it stops short of a full 5.

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

tapatalk_search_advancedB
Read-onlyIdempotent

Advanced search with multiple filters: keywords, user, forum, date range, title-only. More powerful than basic search.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
user_idNoFilter by user ID
forum_idNoRestrict search to this forum ID
keywordsNoSearch keywords
per_pageNoResults per page (max 50)
search_idNoSearch ID for paginating previous results
thread_idNoRestrict search to this thread/topic ID
show_postsNoReturn individual posts instead of topics
title_onlyNoSearch only in topic titles
search_timeNoTime window in seconds (e.g. 86400 for last 24 hours)
search_userNoFilter by username

TDQS

B3.1/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true and idempotentHint=true, covering safety characteristics. The description adds no additional behavioral context such as pagination behavior, default result type, or limitations. It does not add value beyond what annotations and schema already provide.

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 two sentences and front-loaded with the tool's purpose. The first sentence efficiently lists filters, but the second sentence ('More powerful than basic search') is a vague comparative claim that doesn't add concrete information and could be omitted.

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

Completeness2/5

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

For a tool with 11 parameters and no output schema, the description is insufficient. It doesn't clarify what the tool returns (topics vs posts), how pagination works, or any other behavioral expectations. An agent would have to rely heavily on parameter descriptions, but the overall search result behavior remains ambiguous.

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% for all 11 parameters, so the baseline is 3. The description provides a high-level summary of some filter categories (keywords, user, forum, date range, title-only) but omits others like pagination (page, per_page, search_id) and thread filtering. This summary adds limited value over 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?

The description clearly identifies the tool as an advanced search with multiple filters (keywords, user, forum, date range, title-only), distinguishing it from basic search. However, it doesn't explicitly state whether it searches topics or posts (though the schema's show_posts parameter implies topics by default), and it doesn't name a specific sibling tool for comparison.

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 this tool is for advanced searches requiring multiple filters, but it doesn't explicitly state when to use it over simpler alternatives like tapatalk_search_topics or tapatalk_search_posts. The phrase 'More powerful than basic search' gives a comparative hint but lacks concrete exclusions or alternatives.

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

tapatalk_search_postsA
Read-onlyIdempotent

Search for individual posts by keyword. Returns matching posts with content previews and their parent topic info.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
queryYesSearch query (minimum 3 characters)
per_pageNoResults per page (max 50)
search_idNoSearch ID from a previous search result, for paginating through cached results

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is established. The description adds that it returns matching posts with content previews and parent topic info, which provides useful context about the output without contradicting the 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?

A single, well-structured sentence containing the core action, resource, and key return details. No filler or redundant phrasing; it earns its place efficiently.

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 read-only search tool, the description adequately covers purpose and return values, and the schema and annotations handle parameter details and safety. It could mention pagination mechanics or search_id usage, but the schema already documents these, so the description remains sufficiently complete.

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 descriptions cover all four parameters (query, page, per_page, search_id) at 100%, so the description does not need to explain parameter syntax or formats. The description's 'keyword' loosely aligns with 'query' but adds no meaningful semantic 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 uses a specific verb 'Search' and a clear resource 'individual posts by keyword', distinguishing it from sibling tools like tapatalk_search_topics. It also specifies the return content (content previews and parent topic info), leaving no ambiguity about the tool's function.

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 states the scope (individual posts), providing a clear context for when to use this tool. However, it does not explicitly contrast with alternatives like tapatalk_search_topics or tapatalk_search_advanced, nor does it mention exclusions 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.

tapatalk_search_topicsA
Read-onlyIdempotent

Search for topics by keyword. Returns matching topics with titles, authors, and short content previews.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
queryYesSearch query (minimum 3 characters)
per_pageNoResults per page (max 50)
search_idNoSearch ID from a previous search result, for paginating through cached results

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so safety is covered. The description adds a useful return-format note (titles, authors, previews), but it does not disclose pagination behavior, the purpose of search_id for cached results, or any rate limits. This is adequate but not 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?

Two sentences, no fluff. The first sentence states the core purpose, and the second describes the return payload. Every word earns its place.

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?

Without an output schema, the description provides some return context, but it omits important operational details like how pagination works through page/per_page and search_id, and how this differs from tapatalk_search_advanced. The tool is simple enough that the description is minimally complete, but gaps remain.

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 coverage is 100%, so the schema already documents all four parameters. The description doesn't add parameter-specific semantics, but it does summarize the overall result content, which indirectly helps. Baseline 3 is appropriate given the schema's completeness.

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 ('topics'), and the method ('by keyword'). It also names the returned fields (titles, authors, previews), which distinguishes it from sibling tools like tapatalk_search_posts and tapatalk_search_advanced.

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 explicit guidance on when to use this tool versus alternatives. Sibling tools include tapatalk_search_posts and tapatalk_search_advanced, but the description does not clarify differences or mention exclusions, leaving the agent to infer use cases.

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 have clearly distinct purposes (config, forum tree, stats, thread content, etc.). The topic-list tools (get_topics, get_latest_topics, get_unread_topics, get_participated_topics) and search tools could cause slight confusion, but descriptions clarify their specific filters.

Naming Consistency5/5

All tools follow the consistent 'tapatalk_get_' or 'tapatalk_search_' prefix plus noun pattern. The naming is uniform and predictable.

Tool Count5/5

14 tools is well within the ideal range for a forum reader. Each tool covers a distinct aspect of forum browsing, search, and user information, without unnecessary redundancy.

Completeness4/5

The tool set provides thorough read-only coverage for forum browsing: config, structure, topics, threads, search, user info, and online users. It lacks write operations (e.g., posting/reply), but this appears to be a read-only server by design. Minor gaps like thread participant lists or forum-specific search filters exist but are not critical.

Maintenance

ActivityInactive
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

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to interact with Discourse forums through search, reading topics/posts, managing categories and users. Supports secure authentication and optional write operations with rate limiting.
    14
    3,156
    73
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants with read-only access to Reddit's API for browsing subreddits, reading posts and comments, searching Reddit, and retrieving user/subreddit information. Enables safe exploration of Reddit content without posting capabilities through natural language interactions.
  • A
    license
    A
    quality
    C
    maintenance
    Enables interaction with USCardForum, a Discourse-based community focused on US credit cards and points. Provides 22 tools for discovering topics, reading content, researching user profiles, and managing authenticated actions like notifications and bookmarks.
    22
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to interact with USCardForum, a Discourse-based community focused on US credit cards and points, providing access to topics, user profiles, search, and authenticated actions like notifications and bookmarks.
    22
    MIT

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/johnkeller101/tapatalk-mcp'

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