Skip to main content
Glama

topgg-mcp

A Model Context Protocol server for the Top.gg v1 API, letting AI assistants manage a Top.gg Discord bot, Discord server, or Roblox game listing directly.

Tools

Tool

Description

get_project

Retrieve the project associated with your token

update_project

Update headline and page content (per locale)

register_commands

Replace registered Discord slash commands (empty clears all)

get_votes

Fetch paginated vote history (cursor-based)

check_user_vote

Check whether a specific user has voted

post_metrics

Submit Discord bot/server or Roblox game metrics

post_metrics_batch

Submit up to 100 metrics entries in one request

create_announcement

Post a categorized project announcement (1 per 4 hours)

Related MCP server: StashDog MCP Server

Requirements

Setup

Single project

Set TOPGG_TOKEN to your API token. The project parameter on every tool is optional and can be omitted.

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "topgg": {
      "command": "npx",
      "args": ["-y", "topgg-mcp"],
      "env": {
        "TOPGG_TOKEN": "your-token-here"
      }
    }
  }
}

Claude Code:

claude mcp add topgg -e TOPGG_TOKEN=your-token-here -- npx -y topgg-mcp

Multiple projects

Use TOPGG_TOKEN_<NAME> for each project. The suffix becomes the name used in the project parameter (lowercased). When multiple tokens are configured, the project parameter is required on every tool call.

{
  "mcpServers": {
    "topgg": {
      "command": "npx",
      "args": ["-y", "topgg-mcp"],
      "env": {
        "TOPGG_TOKEN_MYBOT": "token-for-mybot",
        "TOPGG_TOKEN_OTHERBOT": "token-for-otherbot"
      }
    }
  }
}

With the above config, pass "project": "mybot" or "project": "otherbot" in every tool call.

You can also mix TOPGG_TOKEN (name: "default") with named tokens if needed.

API coverage

The server targets the Top.gg v1 REST API (https://top.gg/api/v1). All requests are authenticated with Authorization: Bearer <token>. API errors are surfaced as readable tool errors using the RFC 7807 problem details format returned by Top.gg.

Method

Endpoint

Tool

GET

/projects/@me

get_project

PATCH

/projects/@me

update_project

POST

/projects/@me/announcements

create_announcement

PATCH

/projects/@me/metrics

post_metrics

POST

/projects/@me/metrics/batch

post_metrics_batch

PUT

/projects/@me/commands

register_commands

GET

/projects/@me/votes

get_votes

GET

/projects/@me/votes/:user_id

check_user_vote

Rate limits (enforced by Top.gg, not this server):

  • 100 requests/second globally

  • 60 requests/minute for bot endpoints

  • Violations result in a 1-hour block

  • Announcement cooldown responses include the API's Retry-After value in the tool error

Development

pnpm install
pnpm build        # compile to dist/
pnpm typecheck    # TypeScript strict check
pnpm lint         # ESLint
pnpm format       # Prettier
pnpm test         # Vitest (no live API required)
pnpm test:coverage

Tests use fetch mocks — no TOPGG_TOKEN is needed to run them.

License

ISC

Available Tools

8 tools
check_user_voteB

Check the current vote status for a specific user on this Top.gg project.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoID namespace. Defaults to Top.gg.
userIdYesThe user ID to check.
projectNoName of the configured project to target (e.g. "mybot" for TOPGG_TOKEN_MYBOT). Required when multiple tokens are configured; omit when only one is configured.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided; description only states 'check current vote status'. Does not disclose whether it's read-only, authentication needs, or what 'vote status' entails (e.g., boolean, timestamp). Minimal behavioral detail.

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?

Single sentence, no waste. However, could be expanded slightly without losing conciseness to improve informativeness.

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?

No output schema; description omits return format, error handling, or what 'vote status' means. Sibling tools include 'get_votes' suggesting similar functionality, but lacks completeness for agent decision-making.

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% with descriptions for all 3 parameters. Description adds no extra meaning beyond the schema, so 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?

Clearly states verb 'check', resource 'vote status', and scope 'specific user on this Top.gg project'. Distinguishes from sibling 'get_votes' by targeting a single user.

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?

Implies use for checking a single user's vote, but no explicit guidance on when to use vs alternatives (e.g., 'get_votes' for batch). No exclusions or prerequisites mentioned.

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

create_announcementA

Create an announcement for the current Top.gg project. Rate-limited to one announcement per 4 hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesAnnouncement title.
contentYesAnnouncement body text.
projectNoName of the configured project to target (e.g. "mybot" for TOPGG_TOKEN_MYBOT). Required when multiple tokens are configured; omit when only one is configured.
categoryNoAnnouncement category. Defaults to "announcement".

TDQS

A3.8/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 the burden. It explicitly states the rate limit and that it applies to the current project, disclosing key behavioral constraints. However, it does not mention effects on existing announcements, idempotency, 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?

Two succinct sentences, no fluff. Front-loaded with the action verb and resource. Every sentence adds value.

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?

With no output schema, the description should provide some information about return values, success/error behavior, or other outcomes. It fails to do so. The description is too brief given the tool has 4 parameters and no output schema.

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%, so the baseline is 3. The description does not add additional meaning to the parameters beyond what the schema already provides (e.g., title, content, project, category). No extra value.

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 'Create' and the resource 'announcement for the current Top.gg project'. It is specific and distinguishes from sibling tools like get_project, get_votes, etc., which are clearly different operations.

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 mentions a rate limit ('one announcement per 4 hours'), which provides a usage constraint, but it does not give guidance on when to use this tool versus alternatives. It lacks explicit when-to-use or when-not-to-use context.

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

get_projectB

Retrieve the Top.gg project associated with the authenticated token.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoName of the configured project to target (e.g. "mybot" for TOPGG_TOKEN_MYBOT). Required when multiple tokens are configured; omit when only one is configured.

TDQS

B3.3/5.0
Behavior2/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 only says 'Retrieve', implying read-only, but does not disclose auth details, rate limits, or what happens if the token is invalid. Minimal behavioral disclosure.

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?

Single sentence, no wasted words, front-loaded with verb and resource.

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?

No output schema and no annotations. Description covers basic purpose but lacks details about return value, response structure, or prerequisites. Adequate but not 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 coverage is 100%, so baseline is 3. The description adds no extra meaning to the parameter; the schema already explains when the parameter is needed.

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 'Retrieve' and the resource 'Top.gg project', with context of the authenticated token. It distinguishes from sibling tools like get_votes and create_announcement.

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. The parameter description in the schema mentions when to include the project parameter, but the tool description itself lacks usage context.

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

get_votesA

Fetch a page of vote history for the current Top.gg project. For the first page, provide startDate (ISO 8601, max 1 year ago). For subsequent pages, pass the cursor returned by the previous response. An empty data array means there are no more votes.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from the previous response. Use this to fetch the next page. Takes precedence if startDate is also provided.
projectNoName of the configured project to target (e.g. "mybot" for TOPGG_TOKEN_MYBOT). Required when multiple tokens are configured; omit when only one is configured.
startDateNoISO 8601 datetime to start from (e.g. 2026-01-01T00:00:00Z). Required for the first page and must be within the last year.

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description reveals pagination behavior and cursor precedence but omits error handling, rate limits, or authentication requirements. Adequate but not comprehensive.

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?

Three sentences, front-loaded purpose, zero waste. Clear structure.

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 pagination and termination condition but lacks description of vote object structure. Given no output schema, more detail on return format would improve 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?

Schema coverage is 100%, baseline 3. Description adds value by explaining cursor precedence, startDate constraints (max 1 year ago), and project parameter condition (required for multiple tokens).

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 it 'Fetch a page of vote history for the current Top.gg project.' Differentiates from sibling tools like check_user_vote by specifying paginated history 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?

Provides explicit guidance for first page (startDate) and subsequent pages (cursor). Mentions empty data array indicates end. Implicitly distinguishes from other tools but lacks explicit 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.

post_metricsB

Submit a metrics payload for the current Top.gg project. Provide the fields relevant to your project type.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoName of the configured project to target (e.g. "mybot" for TOPGG_TOKEN_MYBOT). Required when multiple tokens are configured; omit when only one is configured.
shard_countNoDiscord bot: shards.
member_countNoDiscord server: members.
online_countNoDiscord server: online members.
player_countNoRoblox game: current players.
server_countNoDiscord bot: servers.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It only states that the tool submits metrics, but omits details about authorization, idempotency, rate limits, side effects, or error handling common to mutation 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?

Two sentences with no wasted words. The action is front-loaded, and the second sentence provides contextual guidance. Ideal conciseness for a straightforward tool.

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 absence of output schema and annotations, the description is adequate for a simple metric submission but lacks context on expected return values, confirmation messages, or how it relates to the batch sibling and other tools.

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%, so the schema already documents each parameter. The description adds a helpful directive to select relevant fields per project type, which provides some additional context beyond the schema, but does not explain parameter relationships or constraints.

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

Purpose4/5

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

The description states 'Submit a metrics payload for the current Top.gg project', clearly indicating the action (submit) and resource (metrics for a Top.gg project). The name 'post_metrics' and the sibling 'post_metrics_batch' imply differentiation, but the description does not explicitly distinguish between them.

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 says 'Provide the fields relevant to your project type,' which gives some guidance on parameter selection, but it does not explain when to use this tool versus alternatives like 'post_metrics_batch', nor does it include when-not or prerequisites.

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

post_metrics_batchB

Submit up to 100 metrics entries in a single batch request.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesArray of metrics entries (1-100).
projectNoName of the configured project to target (e.g. "mybot" for TOPGG_TOKEN_MYBOT). Required when multiple tokens are configured; omit when only one is configured.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description lacks details on behavioral aspects such as authentication needs, rate limits, idempotency, or what happens to existing data (e.g., append vs replace).

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 a single concise sentence that efficiently conveys the core functionality without extraneous words, though it could include slightly more useful detail without losing conciseness.

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?

Given the lack of output schema and annotations, the description does not explain return values, error handling, or operational context, making it insufficient for a complete understanding of the tool's behavior.

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 description adds little beyond what the schema already provides; it mentions 'up to 100' which is already in the schema's maxItems constraint.

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 submits up to 100 metrics entries in a batch, which distinguishes it from the sibling 'post_metrics' that likely handles single entries.

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?

While the purpose is clear, the description does not explicitly guide when to use this batch tool versus the singular 'post_metrics' or other alternatives, leaving usage context implied.

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

register_commandsA

Replace all registered Discord slash commands for the current Top.gg bot project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoName of the configured project to target (e.g. "mybot" for TOPGG_TOKEN_MYBOT). Required when multiple tokens are configured; omit when only one is configured.
commandsYesArray of slash command definitions.

TDQS

A3.9/5.0
Behavior4/5

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

The description explicitly states 'Replace all registered Discord slash commands' which is a clear behavioral trait indicating destructive overwrite. With no annotations provided, the description carries the burden and does so adequately by disclosing the full scope of the action.

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 sentence that is front-loaded and contains no wasted words. It efficiently conveys the tool's purpose without redundancy.

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 complexity (destructive replacement of commands) and absence of an output schema, the description is minimal. It does not mention side effects, error states, or authentication needs, which would be beneficial for complete understanding.

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% with both parameters (project, commands) described in the input schema. The description adds no extra meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool replaces all registered Discord slash commands for the current Top.gg bot project. The verb 'replace' and resource 'all registered Discord slash commands' are specific and distinguish it from sibling tools like get_project (read) or create_announcement (announcements).

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 replacing commands but provides no explicit guidance on when to use vs alternatives, nor any exclusions. It is implied that this is for bulk replacement, but no alternatives or conditions are mentioned.

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

update_projectB

Update the headline and/or page content of the current Top.gg project listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoName of the configured project to target (e.g. "mybot" for TOPGG_TOKEN_MYBOT). Required when multiple tokens are configured; omit when only one is configured.
headlineNoSupported locale codes mapped to headline text (3-140 characters).
pageContentNoSupported locale codes mapped to Markdown page content (300-50,000 characters).

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided. Description only states it updates, but lacks details on authorization, idempotency, rate limits, or side effects. For a mutation tool, this is insufficient.

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?

Single sentence that efficiently conveys the action. Front-loaded with verb and resource. Could be slightly structured more, but no excess words.

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?

Lacks details on output/return value. For a mutation with no output schema, description should indicate what the response contains. Also doesn't mention prerequisites or error conditions.

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 baseline 3. The description adds minimal value beyond the schema; it repeats 'headline and/or page content' but doesn't clarify format or constraints beyond what the schema provides.

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?

Clear verb ('Update') and resource ('Top.gg project listing'). Specifies what can be updated (headline and/or page content). Distinguishes from sibling tools like get_project.

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 vs alternatives (e.g., get_project). Only mentions a condition for the 'project' parameter, but no broader usage context.

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. 6 tool updatesv0.0.4
    • Changedcreate_announcement5 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Announcement category. Defaults to \"announcement\".",
        +  "enum": [
        +    "announcement",
        +    "event",
        +    "new_feature"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / content / maxLength
        Added value: +2000
      • addedInput schema / properties / content / minLength
        Added value: +10
      • addedInput schema / properties / title / maxLength
        Added value: +100
      • addedInput schema / properties / title / minLength
        Added value: +3
    • Changedget_votes2 fields changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Pagination cursor from the previous response. Use this to fetch the next page. Mutually exclusive with startDate."New value: +"Pagination cursor from the previous response. Use this to fetch the next page. Takes precedence if startDate is also provided."
      • changedInput schema / properties / startDate / description
        Previous value: -"ISO 8601 datetime to start from (e.g. 2026-01-01T00:00:00Z). Required for the first page. Must be within the last year. Mutually exclusive with cursor."New value: +"ISO 8601 datetime to start from (e.g. 2026-01-01T00:00:00Z). Required for the first page and must be within the last year."
    • Changedpost_metrics17 fields changed
      • changedInput schema / properties / member_count / description
        Previous value: -"Discord server: member count."New value: +"Discord server: members."
      • changedInput schema / properties / member_count / minimum
        Previous value: --9007199254740991New value: +0
      • changedInput schema / properties / online_count / description
        Previous value: -"Discord server: online member count."New value: +"Discord server: online members."
      • changedInput schema / properties / online_count / minimum
        Previous value: --9007199254740991New value: +0
      • changedInput schema / properties / player_count / description
        Previous value: -"Roblox game: player count."New value: +"Roblox game: current players."
      • changedInput schema / properties / player_count / minimum
        Previous value: --9007199254740991New value: +0
      • removedInput schema / properties / players_max
        Removed value: -{
        -  "description": "Minecraft: max player slots.",
        -  "maximum": 9007199254740991,
        -  "minimum": -9007199254740991,
        -  "type": "integer"
        -}
      • removedInput schema / properties / players_online
        Removed value: -{
        -  "description": "Minecraft: players online.",
        -  "maximum": 9007199254740991,
        -  "minimum": -9007199254740991,
        -  "type": "integer"
        -}
      • changedInput schema / properties / server_count / description
        Previous value: -"Discord bot: number of servers."New value: +"Discord bot: servers."
      • changedInput schema / properties / server_count / minimum
        Previous value: --9007199254740991New value: +0
      • changedInput schema / properties / shard_count / description
        Previous value: -"Discord bot: number of shards."New value: +"Discord bot: shards."
      • changedInput schema / properties / shard_count / minimum
        Previous value: --9007199254740991New value: +0
      • removedInput schema / properties / tick_duration_avg
        Removed value: -{
        -  "description": "Minecraft: average tick duration.",
        -  "type": "number"
        -}
      • removedInput schema / properties / tick_rate
        Removed value: -{
        -  "description": "Minecraft: tick rate.",
        -  "type": "number"
        -}
      • removedInput schema / properties / uptime_seconds
        Removed value: -{
        -  "description": "Minecraft: server uptime in seconds.",
        -  "type": "number"
        -}
      • removedInput schema / properties / world_size_x
        Removed value: -{
        -  "description": "Minecraft: world size X.",
        -  "type": "number"
        -}
      • removedInput schema / properties / world_size_y
        Removed value: -{
        -  "description": "Minecraft: world size Y.",
        -  "type": "number"
        -}
    • Changedpost_metrics_batch13 fields changed
      • changedInput schema / properties / data / description
        Previous value: -"Array of metrics entries (1–100)."New value: +"Array of metrics entries (1-100)."
      • changedInput schema / properties / data / items / properties / metrics / properties / member_count / minimum
        Previous value: --9007199254740991New value: +0
      • changedInput schema / properties / data / items / properties / metrics / properties / online_count / minimum
        Previous value: --9007199254740991New value: +0
      • changedInput schema / properties / data / items / properties / metrics / properties / player_count / minimum
        Previous value: --9007199254740991New value: +0
      • removedInput schema / properties / data / items / properties / metrics / properties / players_max
        Removed value: -{
        -  "maximum": 9007199254740991,
        -  "minimum": -9007199254740991,
        -  "type": "integer"
        -}
      • removedInput schema / properties / data / items / properties / metrics / properties / players_online
        Removed value: -{
        -  "maximum": 9007199254740991,
        -  "minimum": -9007199254740991,
        -  "type": "integer"
        -}
      • changedInput schema / properties / data / items / properties / metrics / properties / server_count / minimum
        Previous value: --9007199254740991New value: +0
      • changedInput schema / properties / data / items / properties / metrics / properties / shard_count / minimum
        Previous value: --9007199254740991New value: +0
      • removedInput schema / properties / data / items / properties / metrics / properties / tick_duration_avg
        Removed value: -{
        -  "type": "number"
        -}
      • removedInput schema / properties / data / items / properties / metrics / properties / tick_rate
        Removed value: -{
        -  "type": "number"
        -}
      • removedInput schema / properties / data / items / properties / metrics / properties / uptime_seconds
        Removed value: -{
        -  "type": "number"
        -}
      • removedInput schema / properties / data / items / properties / metrics / properties / world_size_x
        Removed value: -{
        -  "type": "number"
        -}
      • removedInput schema / properties / data / items / properties / metrics / properties / world_size_y
        Removed value: -{
        -  "type": "number"
        -}
    • Changedregister_commands39 fields changed
      • addedInput schema / definitions / __schema0 / properties / autocomplete
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / definitions / __schema0 / properties / channel_types
        Added value: +{
        +  "items": {
        +    "maximum": 9007199254740991,
        +    "minimum": -9007199254740991,
        +    "type": "integer"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / definitions / __schema0 / properties / choices / items / properties / name / maxLength
        Added value: +100
      • addedInput schema / definitions / __schema0 / properties / choices / items / properties / name / minLength
        Added value: +1
      • addedInput schema / definitions / __schema0 / properties / choices / items / properties / name_localizations
        Added value: +{
        +  "additionalProperties": {
        +    "maxLength": 100,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • changedInput schema / definitions / __schema0 / properties / choices / items / properties / value / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 100,
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  }
        +]
      • addedInput schema / definitions / __schema0 / properties / choices / maxItems
        Added value: +25
      • addedInput schema / definitions / __schema0 / properties / description / maxLength
        Added value: +100
      • addedInput schema / definitions / __schema0 / properties / description / minLength
        Added value: +1
      • addedInput schema / definitions / __schema0 / properties / description_localizations / additionalProperties / maxLength
        Added value: +100
      • addedInput schema / definitions / __schema0 / properties / description_localizations / additionalProperties / minLength
        Added value: +1
      • addedInput schema / definitions / __schema0 / properties / max_length
        Added value: +{
        +  "maximum": 6000,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / definitions / __schema0 / properties / max_value
        Added value: +{
        +  "type": "number"
        +}
      • addedInput schema / definitions / __schema0 / properties / min_length
        Added value: +{
        +  "maximum": 6000,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / definitions / __schema0 / properties / min_value
        Added value: +{
        +  "type": "number"
        +}
      • addedInput schema / definitions / __schema0 / properties / name / maxLength
        Added value: +32
      • addedInput schema / definitions / __schema0 / properties / name / minLength
        Added value: +1
      • addedInput schema / definitions / __schema0 / properties / name_localizations / additionalProperties / maxLength
        Added value: +32
      • addedInput schema / definitions / __schema0 / properties / name_localizations / additionalProperties / minLength
        Added value: +1
      • addedInput schema / definitions / __schema0 / properties / options / maxItems
        Added value: +25
      • changedInput schema / definitions / __schema0 / properties / type / maximum
        Previous value: -9007199254740991New value: +11
      • changedInput schema / definitions / __schema0 / properties / type / minimum
        Previous value: --9007199254740991New value: +1
      • addedInput schema / properties / commands / items / properties / contexts
        Added value: +{
        +  "items": {
        +    "maximum": 2,
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / commands / items / properties / default_member_permissions
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedInput schema / properties / commands / items / properties / default_permission
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / commands / items / properties / description / maxLength
        Added value: +100
      • addedInput schema / properties / commands / items / properties / description_localizations / additionalProperties / maxLength
        Added value: +100
      • addedInput schema / properties / commands / items / properties / dm_permission
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / commands / items / properties / handler
        Added value: +{
        +  "maximum": 2,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / commands / items / properties / integration_types
        Added value: +{
        +  "items": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / commands / items / properties / name / maxLength
        Added value: +32
      • addedInput schema / properties / commands / items / properties / name / minLength
        Added value: +1
      • addedInput schema / properties / commands / items / properties / name_localizations / additionalProperties / maxLength
        Added value: +32
      • addedInput schema / properties / commands / items / properties / name_localizations / additionalProperties / minLength
        Added value: +1
      • addedInput schema / properties / commands / items / properties / options / maxItems
        Added value: +25
      • removedInput schema / properties / commands / items / properties / type / description
        Removed value: -"ApplicationCommandType integer."
      • changedInput schema / properties / commands / items / properties / type / maximum
        Previous value: -9007199254740991New value: +4
      • changedInput schema / properties / commands / items / properties / type / minimum
        Previous value: --9007199254740991New value: +1
      • changedInput schema / properties / commands / items / required
        Previous value: -[
        -  "type",
        -  "name",
        -  "description"
        -]New value: +[
        +  "name",
        +  "description"
        +]
    • Changedupdate_project8 fields changed
      • addedInput schema / properties / headline / additionalProperties / maxLength
        Added value: +140
      • addedInput schema / properties / headline / additionalProperties / minLength
        Added value: +3
      • changedInput schema / properties / headline / description
        Previous value: -"Map of locale codes to headline text (e.g. {\"en\": \"My Bot\"})"New value: +"Supported locale codes mapped to headline text (3-140 characters)."
      • addedInput schema / properties / headline / propertyNames / enum
        Added value: +[
        +  "en",
        +  "de",
        +  "fr",
        +  "pt",
        +  "tr",
        +  "hi",
        +  "ja",
        +  "ar",
        +  "nl",
        +  "ko",
        +  "it",
        +  "es",
        +  "ru",
        +  "uk",
        +  "vi",
        +  "zh"
        +]
      • addedInput schema / properties / pageContent / additionalProperties / maxLength
        Added value: +50000
      • addedInput schema / properties / pageContent / additionalProperties / minLength
        Added value: +300
      • changedInput schema / properties / pageContent / description
        Previous value: -"Map of locale codes to page description text (e.g. {\"en\": \"A cool bot\"})"New value: +"Supported locale codes mapped to Markdown page content (300-50,000 characters)."
      • addedInput schema / properties / pageContent / propertyNames / enum
        Added value: +[
        +  "en",
        +  "de",
        +  "fr",
        +  "pt",
        +  "tr",
        +  "hi",
        +  "ja",
        +  "ar",
        +  "nl",
        +  "ko",
        +  "it",
        +  "es",
        +  "ru",
        +  "uk",
        +  "vi",
        +  "zh"
        +]
  2. 8 tool updatesv0.0.0
    • First observedcheck_user_vote
    • First observedcreate_announcement
    • First observedget_project
    • First observedget_votes
    • First observedpost_metrics
    • First observedpost_metrics_batch
    • First observedregister_commands
    • First observedupdate_project

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct action (project info, announcement, update, commands, votes, metrics). The vote and metrics tools are clearly differentiated by single vs. batch/list, so no ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with lowercase and underscores (e.g., get_project, post_metrics_batch), making them predictable and easy to understand.

Tool Count5/5

Eight tools cover the essential operations for managing a Top.gg project without being excessive. The count is well-scoped for the domain.

Completeness4/5

Core operations are covered, but there are minor gaps: no delete for project or announcement, no update for announcements or commands. The set is functional but not fully comprehensive.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive

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/Paillat-dev/topgg-mcp'

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