Skip to main content
Glama
pmxt-dev

pmxt-mcp

Official
by pmxt-dev

Server Quality Checklist

58%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v2.46.14

  • Disambiguation3/5

    Many tools have distinct purposes but several pairs (e.g., fetchMatchedMarkets vs fetchMarketMatches, compareMarketPrices vs fetchMatchedPrices) are closely related and could confuse an agent. Descriptions help but the overlap introduces ambiguity.

    Naming Consistency4/5

    Tool names predominantly follow a 'fetch'+noun pattern for data retrieval and verb+noun for actions. Minor inconsistencies exist (e.g., 'getExecutionPrice' vs 'fetch...', 'compareMarketPrices' vs 'fetchMatchedPrices'), but the overall pattern is clear and predictable.

    Tool Count2/5

    With 32 tools, the server is overloaded. Many fetch variants (e.g., fetchEvents vs fetchEventsPaginated, fetchMarkets vs fetchMarketsPaginated) could be consolidated into fewer tools with optional parameters, reducing cognitive load.

    Completeness4/5

    The tool set covers core trading workflows: order management, market data, account info, and cross-venue matching/arbitrage. Missing an update order tool is a minor gap, but overall the surface supports the intended domain well.

  • Average 3.4/5 across 32 of 32 tools scored. Lowest: 1.2/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 80 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior2/5

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

    Annotations already indicate readOnlyHint=true, so the description adds no behavioral context. It does not contradict annotations but also does not disclose any traits beyond what is already known.

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

    Conciseness1/5

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

    Two words is under-specification, not conciseness. The description is severely lacking in content.

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

    Completeness1/5

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

    With no output schema and half the parameters undocumented in both schema and description, the tool definition is incomplete for an agent to use correctly.

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

    Parameters1/5

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

    Schema description coverage is 50%, but the description provides no parameter explanations. It fails to compensate for undocumented parameters like minDifference and category.

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

    Purpose1/5

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

    Description is only 'Matched Markets', which is a tautology of the tool name. It lacks a verb or specific action, so the agent cannot discern what the tool does.

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

    Usage Guidelines1/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 siblings like fetchMarkets, fetchRelatedMarkets, or fetchMarketMatches. The description provides no context for selection.

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

  • Behavior2/5

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

    Annotations already indicate readOnlyHint=true, but the description adds no behavioral context beyond that. It does not disclose pagination behavior, rate limits, or the need for credentials despite the 'credentials' parameter.

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

    Conciseness2/5

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

    The description is extremely short (one sentence), but it is under-specified rather than concise. It lacks informative content, failing to front-load key details.

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

    Completeness1/5

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

    With 9 parameters, no output schema, and a very brief description, the tool definition is completely inadequate. The agent lacks context on authentication, response format, and how 'my' trades are identified.

    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% (all 9 parameters have descriptions), so the schema itself provides adequate parameter meaning. The description adds no additional semantic value.

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

    Purpose1/5

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

    The description is a tautology: 'Fetch My Trades' merely restates the tool name. It does not specify what constitutes 'my' trades (e.g., authenticated user) or distinguish from sibling tools like 'fetchTrades'.

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

    Usage Guidelines2/5

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

    No guidance is provided on when to use this tool versus alternatives such as 'fetchTrades' (which may fetch all trades). The description does not mention prerequisites like authentication.

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

  • Behavior2/5

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

    Annotations already declare readOnlyHint=true, so the description adds no behavioral context. It does not describe response behavior (e.g., what happens with no closed orders, return format) or any side effects.

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

    Conciseness2/5

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

    Extremely concise (three words) but at the expense of informativeness. While not verbose, it fails to provide essential context, making it more under-specified than appropriately concise.

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

    Completeness1/5

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

    With 8 parameters, one required, nested objects, and no output schema, the description is severely incomplete. It omits explanations of closed order semantics, pagination behavior, and differences from sibling 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 baseline is 3. The description does not add any parameter semantics beyond what is in the schema; it remains silent on usage of credentials or pagination nuances.

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

    Purpose2/5

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

    Description is a tautology: 'Fetch Closed Orders' restates the tool name without clarifying what constitutes a closed order (e.g., filled, cancelled, expired). Sibling tools like fetchOpenOrders and fetchAllOrders indicate the need for distinction, but none is provided.

    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 such as fetchOpenOrders or fetchAllOrders. No mention of prerequisites, typical scenarios, or situations where this tool is not appropriate.

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

  • Behavior2/5

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

    The description adds no behavioral details beyond what annotations already provide (readOnlyHint=true). It does not disclose any traits like data freshness, pagination, or authentication requirements.

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

    Conciseness3/5

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

    The description is extremely concise but at the expense of substance. For a tool with 14 parameters, a one-phrase description is not appropriately sized; it should front-load key usage information.

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

    Completeness1/5

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

    Given the complexity (14 parameters, 31 sibling tools, no output schema), the description is severely incomplete. It fails to explain functionality, parameter roles, or expected outputs, leaving the agent with insufficient guidance.

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

    Parameters2/5

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

    With 57% schema description coverage, the description does not add any parameter-level explanations. It misses an opportunity to clarify parameters like 'relation', 'minConfidence', or 'minDifference' that are crucial for finding hedging opportunities.

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

    Purpose3/5

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

    The description 'Find Hedging Opportunities' is not a tautology and indicates a clear resource ('Hedging Opportunities'), but it is vague about what constitutes a hedging opportunity and how it differs from siblings like fetchArbitrage or fetchRelatedMarkets.

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

    Usage Guidelines2/5

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

    No guidance is provided on when to use this tool, when not to, or how it compares to alternatives. The single phrase offers no context for selection.

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

  • Behavior1/5

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

    The description states 'Calculate' implying a read-only operation, but annotations set readOnlyHint=false, suggesting potential state changes. This contradiction significantly undermines trust and transparency. Additionally, the description does not disclose behavioral traits beyond what annotations provide, such as side effects or permission requirements.

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

    Conciseness4/5

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

    The description is concise with two sentences, front-loading the main purpose. Each sentence provides distinct information, but some efficiency could be gained by integrating the return behavior earlier.

    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 tool's complexity (5 parameters, nested objects, no output schema), the description is incomplete. It does not explain how the order book is interpreted, the meaning of side/amount, or the full return behavior beyond the zero case. For a pricing tool, this is insufficient.

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

    Parameters2/5

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

    The description adds minimal parameter meaning beyond the schema. It mentions 'order size' but does not elaborate on critical parameters like 'side', 'amount', or the structure of 'orderBook'. With 60% schema description coverage, the description should compensate but fails to do so.

    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 states the tool calculates the volume-weighted average execution price for a given order size, which is a specific verb and resource. However, it does not differentiate from the sibling tool 'getExecutionPriceDetailed', leaving ambiguity about which to use.

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

    Usage Guidelines2/5

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

    No guidance is provided on when to use this tool versus alternatives or when not to use it. The description only states what it does, leaving the agent without context for selection.

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

  • Behavior3/5

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

    Annotations provide readOnlyHint=true, so the description does not need to reiterate read-only behavior. However, the description adds no additional behavioral context such as pagination or credential handling.

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

    Conciseness2/5

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

    At only three words, the description is under-specified rather than appropriately concise. It lacks structure and fails to convey essential context.

    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 8 parameters, nested objects, and many sibling tools, the single-sentence description is insufficient. It does not explain what 'all orders' means, pagination behavior, or credential requirements beyond what is in the 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 description does not need to explain parameters. Baseline score of 3 is appropriate as the description adds no value beyond the schema.

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

    Purpose3/5

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

    Description 'Fetch All Orders' is clear on verb and resource but lacks specificity on scope (all orders for a user? across all markets?). Does not distinguish from sibling tools like fetchOpenOrders or fetchClosedOrders.

    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. No explicit context or when-not-to-use conditions provided.

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

  • Behavior2/5

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

    The description adds no behavioral details beyond the readOnlyHint annotation. It does not explain that the operation is non-destructive or any other traits.

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

    Conciseness3/5

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

    The description is very concise (3 words) but lacks necessary details given the tool has 4 parameters and no output schema. It is not appropriately sized for the complexity.

    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?

    The tool has 4 parameters, nested objects, and no output schema, but the description does not explain return values or usage context. It is incomplete for an agent to invoke correctly.

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

    Parameters2/5

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

    The description does not add meaning to the parameters. For example, the 'address' parameter has no schema description and the tool description does not clarify it. Schema coverage is 75%, not enough to reach the high baseline.

    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 'Fetch account balances' clearly states the verb and resource. However, it does not distinguish from sibling tools like fetchPositions or fetchMyTrades, but those are different resources, so clarity is adequate.

    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 description does not mention context or prerequisites like when credentials are needed.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, so the description adds no extra behavioral context. It does not disclose what the comparison entails or what the output looks like.

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

    Conciseness3/5

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

    The description is extremely short, which is concise but at the expense of necessary detail. It could be longer to provide more value while remaining focused.

    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 6 parameters and no output schema, the description should elaborate on what 'matched market prices' are and how the tool works. It feels incomplete for a tool of this complexity.

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

    Parameters2/5

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

    Schema coverage is 50%, but the description adds no meaning to parameters like minDifference, category, and limit. It does not explain how parameters affect the comparison.

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

    Purpose3/5

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

    Description states 'Compare Matched Market Prices', indicating it fetches and compares prices from matched markets. However, it does not differentiate from sibling tool 'compareMarketPrices' which likely has a similar purpose.

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

    Usage Guidelines2/5

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

    No guidance on when to use this tool versus alternatives like compareMarketPrices or fetchMarketMatches. The description lacks context for appropriate usage.

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

  • Behavior2/5

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

    The annotations already mark this as read-only (readOnlyHint=true). The description adds no additional behavioral context (e.g., rate limits, data freshness, or permissions). It fails to build on what annotations 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 extremely concise at four words, avoiding unnecessary detail. It is front-loaded and to the point, though slightly underspecified for the complexity of the tool.

    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?

    Despite having 6 parameters and no output schema, the description gives no context about what constitutes an arbitrage opportunity, how results are structured, or how the 'exchange' parameter relates to cross-exchange analysis. The schema partially compensates, but the description is insufficient.

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

    Parameters2/5

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

    With 50% schema coverage, the description adds no parameter explanations. Parameters like minSpread and category lack descriptions in both schema and description. The description does not clarify the meaning or constraints of any parameter.

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

    Purpose4/5

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

    The description uses a clear verb ('Find') and resource ('Arbitrage Opportunities'), distinguishing it from many sibling fetch tools. However, it lacks specificity about whether opportunities are across markets or exchanges, leaving some ambiguity.

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

    Usage Guidelines2/5

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

    No guidance is provided on when to use this tool versus alternatives like compareMarketPrices or fetchOrderBooks. There is no mention of prerequisites or typical use cases.

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

  • Behavior2/5

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

    The description does not disclose behavioral traits beyond annotations. It is unclear if the operation is read-only or has side effects; idempotentHint true suggests safety but readOnlyHint false is inconsistent.

    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, but it lacks structure and could be more informative without additional length.

    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 complexity of the tool (nested orderBook, multiple enums, partial fill data), the description is too brief. No information about return values or examples is provided.

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

    Parameters2/5

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

    Schema description coverage is 60%, but the description adds no additional meaning to parameters. It fails to explain side, amount, or the nested orderBook structure beyond what the schema provides.

    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 states the tool calculates detailed execution price information including partial fill data, which differentiates it from the sibling tool getExecutionPrice. However, it could be more explicit about the distinction.

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

    Usage Guidelines2/5

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

    No guidance on when to use this tool versus alternatives like getExecutionPrice. The description lacks context for appropriate usage scenarios.

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

  • Behavior3/5

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

    The description aligns with the destructiveHint annotation (mutative action). However, it does not disclose additional behavioral traits such as authentication requirements, error handling, or response shape, beyond what annotations already convey.

    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 sentence with no unnecessary words. It is efficient, though it could be slightly expanded for clarity without becoming verbose.

    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 13 parameters (6 required, nested objects) and no output schema, the description is too minimal. It lacks guidance on credential handling, order type nuances, and response format, making it insufficient for a complex tool.

    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?

    All parameters have descriptions in the schema (100% coverage), so the description adds no extra meaning. Baseline 3 is appropriate as the schema does the heavy lifting.

    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 states it places a new order, which is a specific verb-resource action. However, sibling tools like 'buildOrder' and 'submitOrder' have overlapping purposes but no differentiation is provided.

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

    Usage Guidelines2/5

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

    No guidance on when to use this tool versus alternatives like 'buildOrder' or 'submitOrder'. No prerequisites or context for selecting this tool are mentioned.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, so the tool is read-only. The description adds minimal context beyond that (historical data). It does not disclose any additional behavioral traits like data granularity, pagination, or rate limits.

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

    Conciseness4/5

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

    The description is a single sentence that is concise and front-loaded. It could be slightly more structured, but it earns its place without waste.

    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 tool has 7 parameters and no output schema, the description is too minimal. It does not explain the return format, what OHLCV represents, or how the resolution parameter affects output. More context is needed for an agent to use this tool effectively.

    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 86%, so the baseline is 3. The description does not add meaning beyond what the schema provides; each parameter is already described in 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 states the tool fetches historical OHLCV (candlestick) data for a specific market outcome, using a specific verb and resource. It does not explicitly distinguish from sibling tools like fetchTrades or fetchOrderBook, but the OHLCV concept is distinct enough.

    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. With many sibling fetch tools, the description does not help the agent decide whether to use fetchOHLCV over fetchMarket or fetchTrades.

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

  • Behavior3/5

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

    The annotations include readOnlyHint=true, which already informs the agent that this is a safe, read-only operation. The description adds no further behavioral context such as error handling, rate limits, or authentication requirements. With annotations covering the safety profile, a score of 3 is appropriate.

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

    Conciseness4/5

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

    The description is a single concise sentence that is front-loaded with the verb. It is not verbose, but could be improved by adding just a few more words to differentiate from siblings. Given the minimal size, it scores well but not top marks due to missing context.

    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?

    The tool has 4 parameters (including a nested credentials object) and no output schema, yet the description does not explain the return format, what happens if an order is not found, or how to use the credentials parameter. For a tool that retrieves a specific resource, more contextual completeness is expected.

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

    Parameters2/5

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

    Schema description coverage is 75% (only orderId lacks a description). The description does not add any parameter-level information beyond what the schema already provides. In particular, the important orderId parameter remains undocumented anywhere except its type, leaving the agent to guess its format.

    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 'Fetch a specific order by ID' clearly states the action (fetch) and the resource (specific order by ID), effectively distinguishing it from sibling tools like fetchAllOrders, fetchOpenOrders, etc. It is specific and unambiguous.

    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. It does not mention that it should be used when a specific order ID is known, nor does it reference sibling tools for listing or comparing orders. An agent would have to infer usage from the tool name and parameters.

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

  • Behavior3/5

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

    Annotations declare readOnlyHint=true, so the read-only behavior is already indicated. The description adds no further details about response format, pagination, or the effect of the 'verbose' parameter (which is described only in the schema). This is adequate but not enriched.

    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 redundancy. Every word earns its place. Excellent front-loading of purpose.

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

    Completeness3/5

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

    Given no output schema and a moderate number of sibling tools, the description is minimal. It does not explain what the returned data looks like, or when credentials are required. Adequate for a simple fetch but not fully 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 75% with descriptions for exchange, credentials, and verbose. The description adds only 'optionally filtered by market' which maps to marketId. This is marginal added value; baseline 3 is appropriate.

    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 states it fetches open orders with optional market filtering. However, it does not explicitly differentiate this tool from siblings like fetchAllOrders or fetchClosedOrders, though the name helps.

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

    Usage Guidelines2/5

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

    No guidance on when to use this tool versus alternatives like fetchOrder or fetchAllOrders. The description does not mention prerequisites (e.g., when credentials are needed) or scenarios where a different tool would be more appropriate.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, so the agent knows it's safe. The description adds no additional behavioral details (e.g., pagination, data freshness, permission requirements). With annotations covering the safety profile, a 3 is appropriate.

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

    Conciseness5/5

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

    Single sentence, front-loaded with action and resource. No wasted words. Efficient and to the point.

    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 explain return format or behavior. It does not. Nested credentials are present but unaddressed. For a tool with 4 parameters including nested objects, the description is too minimal.

    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 75% (3 of 4 parameters have descriptions). The description does not add any parameter-level information beyond what the schema provides. The 'address' parameter is undocumented in both schema and description. Baseline 3 is fair.

    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 'fetch', the resource 'positions', and the scope 'across all markets'. It distinguishes from sibling tools like fetchBalance (positions vs balances) and fetchMarkets (list markets vs positions).

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

    Usage Guidelines2/5

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

    No guidance on when to use this tool versus alternatives like fetchBalance or fetchOpenOrders. No when-not-to-use or prerequisites mentioned. The description only states what it does, not when to use it.

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

  • Behavior2/5

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

    Annotations already indicate readOnlyHint=true, and the description confirms a read operation. However, it adds no further behavioral details such as pagination limits, rate limits, or the meaning of 'raw' versus a compact summary (referenced by the verbose parameter).

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

    Conciseness5/5

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

    A single, front-loaded sentence with no redundant words. Every word is necessary and the verb 'Fetch' immediately conveys the action.

    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?

    The description lacks an explanation of the return format (no output schema) and does not elaborate on the distinction between 'raw' and compact responses. With 6 parameters and many sibling tools, more context on common use cases or pagination is needed.

    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 83% (5 of 6 parameters have descriptions). The description itself does not add value beyond the schema; notably, outcomeId lacks a schema description, and the description does not clarify it. Baseline score of 3 is appropriate given high schema coverage but no additional semantic contribution.

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

    Purpose5/5

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

    The description clearly states the verb 'Fetch' and the resource 'raw trade history for a specific outcome', distinguishing it from siblings like fetchMyTrades (own trades) and fetchMarket (market info). It is specific and unambiguous.

    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 by stating 'raw trade history', but does not explicitly mention when to use this tool versus alternatives like fetchMarketMatches or fetchMyTrades. No when-not or alternative tool names are provided.

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

  • Behavior4/5

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

    Annotations already indicate destructiveHint=true. The description adds that it cancels only 'open orders', providing useful behavioral context beyond 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?

    Single sentence with no superfluous words. Concisely conveys the core action.

    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 presence of a destructive operation with 4 parameters and no output schema, the description is minimal. It does not cover error cases, return values, or usage context beyond the basic action.

    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 75% (3 of 4 params described). The description adds no parameter-specific info. The orderId parameter lacks description, but overall schema carries the burden adequately.

    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 cancels an existing open order, using a specific verb and resource. It distinguishes itself from sibling tools like createOrder or submitOrder.

    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. Missing context such as prerequisites (order must be open) or behavior when order is not found or already canceled.

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

  • Behavior4/5

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

    Annotations declare readOnlyHint=true, and the description adds behavioral context: 'Discovers subset/superset market relationships' and 'with live prices', providing value beyond annotations without contradiction.

    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 concise sentences with no filler, front-loaded with the core purpose, earning every word.

    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?

    Despite 14 parameters and no output schema, the description is too brief, omitting explanation of browse mode, key parameters like minDifference and sort, and expected return format.

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

    Parameters2/5

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

    With schema description coverage at 57%, the description fails to add meaningful parameter context beyond the schema, making it insufficient for agents to understand parameter usage.

    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 'Find related markets across venues' and specifies 'subset/superset market relationships' with live prices, which distinguishes it from sibling tools like fetchMarkets or fetchMatchedMarkets.

    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 discovering relational market ties (subset/superset) but does not explicitly state when to use this tool versus alternatives or provide exclusions.

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

  • Behavior4/5

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

    The readOnlyHint annotation already marks this as a safe read operation. The description adds useful context about events grouping markets and optional keyword search, going beyond the annotation. No contradictions 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 short, purposeful sentences. The first sentence delivers the core action, and the second provides essential context. No filler or redundant information.

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

    Completeness3/5

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

    The description provides a high-level understanding of events and keyword search, but for a tool with 14 parameters and no output schema, it lacks details on pagination behavior, sorting defaults, or return structure. It is adequate but not fully complete for complex use cases.

    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 descriptions in the schema already document all 14 parameters adequately. The description adds a bit of context (e.g., grouping markets) but does not significantly enhance understanding of individual parameters beyond what the schema 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 action ('Fetch events') and the resource ('events'), and provides a concrete example explaining what an event is (grouping related markets). This distinguishes it from sibling tools like 'fetchEvent' (singular) and 'fetchEventsPaginated' (paginated).

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

    Usage Guidelines3/5

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

    The description implicitly suggests use for keyword-based search and explains events' nature, but it does not explicitly specify when to use this tool over alternatives like 'fetchEvent' for a single event or 'fetchEventsPaginated' for pagination. No when-not-to-use or exclusion criteria are provided.

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

  • Behavior4/5

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

    The description adds behavioral context beyond the readOnlyHint annotation by stating that it always hits the exchange API for live state. This informs the agent of the dynamic nature of results. No contradictions.

    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. The first covers purpose and options, the second adds a key behavioral trait. No unnecessary words; every sentence 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?

    Given 14 parameters and no output schema, the description is minimal. It does not explain return structure, pagination nuances, or how to choose between this and fetchMarketsPaginated. The schema fills some gaps, but the description could be more 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?

    With 100% schema description coverage, the baseline is 3. The description does not add new meaning beyond the schema; it only summarizes the filtering options. The schema already describes each parameter, so no extra value from the description.

    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 'Fetch markets' with optional filtering, search, or slug lookup, providing a specific verb and resource. It distinguishes itself from siblings like fetchMarket and fetchMarketsPaginated by implying a general fetch with multiple lookup options.

    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 live data usage by saying 'Always hits the exchange API — results reflect the live state at the time of the call,' but it does not explicitly state when to use this tool versus siblings like fetchMarketsPaginated or fetchMarket. No exclusions or alternative suggestions are provided.

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

  • Behavior3/5

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

    The annotation already provides destructiveHint: true, indicating this tool modifies state. The description adds little beyond that, only mentioning submission. It does not detail what happens during submission (e.g., order placement on exchange, funds impact). Minimal additional value over 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 a single sentence that is concise and front-loaded. Every word is necessary; no redundant or extraneous information.

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

    Completeness3/5

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

    Given the absence of an output schema, the description should ideally explain what the tool returns after submission (e.g., confirmation, order ID). It does not. While the tool is simple and relies on buildOrder, the lack of return value description leaves some incompleteness.

    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%, and the description does not add parameter-specific meaning beyond what is in the schema. It references 'pre-built order' which aligns with the 'built' parameter, but no further elaboration. 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 purpose: 'Submit a pre-built order returned by buildOrder().' It uses a specific verb ('Submit') and resource ('pre-built order'), and distinguishes itself from sibling tools like buildOrder (which builds) and cancelOrder (which cancels).

    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 a workflow: first buildOrder, then submitOrder. It provides context for when to use the tool (submitting a pre-built order) but does not explicitly state when not to use it or mention alternatives. The guidance is clear but lacks exclusions.

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

  • Behavior3/5

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

    Annotations already provide readOnlyHint=true, consistent with the description. The description adds minimal extra behavioral context, such as the batch aspect, but lacks details on error handling or exchange-specific behavior.

    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 concise sentences, front-loaded with the key purpose and condition. No redundant information.

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

    Completeness4/5

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

    For a simple 3-parameter read-only tool, the description covers the core purpose and key condition. Missing details like response format, but annotations suffice for safety.

    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 67% (outcomeIds lacks description). The description mentions 'multiple outcomes', hinting at outcomeIds, but does not specify format or constraints beyond the schema.

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

    Purpose5/5

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

    The description clearly states it is a batch variant of fetchOrderBook, fetching order books for multiple outcomes in a single request. This distinguishes it from the sibling fetchOrderBook.

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

    Usage Guidelines4/5

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

    The description implies usage when multiple outcomes are needed and when the exchange supports batching. However, it does not explicitly state when not to use it or alternatives, but the sibling context provides differentiation.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, so the tool is safe. The description adds that it returns a single result or throws EventNotFound, which is behavioral insight beyond annotations. No contradictions.

    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 waste. The first sentence states purpose, the second adds behavioral detail and relationship to sibling. Front-loaded and efficient.

    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?

    With 14 parameters and no output schema, the description is minimal. It does not explain how to ensure a single result (e.g., use eventId or slug, avoid pagination params) or describe the return format. Schema descriptions fill some gaps but the description lacks guidance for effective 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?

    Schema coverage is 100%, so each parameter has a description. The description adds overall context but does not clarify which parameters are relevant for single-event lookup (e.g., eventId, slug vs. limit, cursor). 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 'Fetch a single event by lookup parameters', which is a specific verb+resource. It distinguishes from siblings like fetchEvents (multiple) and fetchEventsPaginated (paginated) by emphasizing single result and throws on not found.

    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 indicates this is a convenience wrapper for fetchEvents when expecting a single result, but does not explicitly state when not to use it or alternatives. The sibling list helps but guidance is implied rather than explicit.

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

  • Behavior4/5

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

    Annotations declare readOnlyHint=true, so the read-only nature is already known. The description adds behavioral details: two modes, compact vs verbose responses via the verbose parameter, and the ability to filter. No contradictions.

    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 very concise: two sentences with bullet points for modes. It is front-loaded with the main purpose and efficiently conveys the core functionality.

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

    Completeness3/5

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

    The tool has 11 parameters and no output schema. The description covers the two modes and filtering but omits details about return format, pagination (implied by 'limit'), or error behavior. For a complex tool, this leaves some gaps.

    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 55%—some parameters are not described in the schema. The description explains the eventId/slug mode distinction and the verbose parameter's effect, but does not elaborate on other parameters like relation, minConfidence, limit, or includePrices. It adds moderate value beyond the schema.

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

    Purpose5/5

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

    The description clearly states the tool's purpose: 'Find the same or related event on other venues' and distinguishes two modes (Lookup and Browse), which differentiates it from siblings like fetchEvents or fetchMarketMatches that operate on single venues or markets.

    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 clear guidance on when to use each mode (with eventId/slug for lookup, without for browse) and mentions query/category filtering. However, it does not explicitly state when not to use this tool or suggest alternatives, though the context of sibling tools makes it inferable.

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

  • Behavior4/5

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

    Annotations declare readOnlyHint: true, and the description aligns by describing read-only matching operations. The description adds value beyond annotations by detailing the two modes and filtering capabilities. No contradictions or negative side effects are disclosed, which is acceptable for a read-only tool.

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

    Conciseness5/5

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

    The description is concise and front-loaded: a single sentence stating purpose followed by bullet-like mode definitions. Every sentence adds value with no redundancy.

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

    Completeness3/5

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

    Given 14 parameters, moderate schema coverage, and no output schema, the description explains modes and key filters but omits details on output format, relation meanings, and confidence thresholds. It is adequate but not fully 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 description coverage is 57%. The description mentions a few key params (query, category, minDifference, sort) but does not add meaning for many others (e.g., market, marketId, relation, minConfidence). It does not compensate fully for the moderate 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 tool's purpose: 'Find the same or related market on other venues.' It defines two distinct modes (Lookup and Browse), making the specific verb+resource clear and differentiating it from sibling tools like fetchMarket or fetchMatchedMarkets.

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

    Usage Guidelines4/5

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

    The description explains when to use each mode (lookup vs browse) and notes supported filtering params. However, it does not explicitly exclude any scenarios or compare to alternatives like fetchMatchedMarkets or fetchRelatedMarkets, which are similar sibling tools.

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

  • Behavior4/5

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

    The description discloses that the tool does not submit the order, it just builds the payload. This aligns with annotations (readOnlyHint false, idempotentHint true) and adds context about the return value (signed order/request body). It is transparent about the behavior, though annotations already cover idempotency.

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

    Conciseness5/5

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

    The description is a single, well-structured sentence that instantly conveys the core purpose. It is concise with no wasted words, earning the maximum score.

    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 tool with 13 parameters and a nested object, the description is brief but sufficient given the detailed schema. It explains the return value (exchange-native signed order/request body) and typical use cases. It could mention that output format varies by exchange, but overall it is complete enough.

    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 each parameter has a description. The tool description adds overall context but does not significantly enhance parameter meaning beyond the schema. A score of 3 is appropriate given high 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 tool builds an order payload without submitting it, distinguishing it from submission siblings like submitOrder and createOrder. It specifies the purpose (inspection, forwarding, deferred submission) and the resource (order payload).

    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 tells when to use the tool (for inspection, forwarding, or deferred submission) and implies when not to use it (when actual submission is needed, use submitOrder). It references the sibling submitOrder explicitly. However, it could be more explicit about when to choose this over other order-related tools.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds behavioral context: it returns side-by-side best bid/ask prices and explains the verbose parameter behavior (compact vs. full response). 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, zero fluff, front-loaded with the primary action. Every sentence adds value without redundancy.

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

    Completeness4/5

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

    Given 3 parameters (one nested object), no output schema, and clear annotations, the description adequately covers the tool's core purpose and output behavior (compact vs. full). However, it lacks detail on the 'params' object structure and identity matching logic, which could be needed for complete agent 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 description coverage is 67% (exchange and verbose have descriptions, params does not). The description adds overall purpose but does not explain the 'params' nested object structure. It does not significantly compensate for the missing schema detail.

    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 specific verbs ('compare', 'finds', 'returns') and identifies the resource ('live prices for the same market across venues'). It clearly states the tool's function of spotting price differences via side-by-side bid/ask prices, distinguishing it from single-market fetch tools among siblings.

    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 for when to use the tool (comparing prices across venues for the same market), but does not explicitly exclude alternatives or mention specific conditions (e.g., not for single market data). It lacks explicit 'when not to use' guidance.

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

  • Behavior5/5

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

    Discloses caching behavior, snapshot invalidation after ttl, and error condition ('Cursor has expired'). Annotations (readOnlyHint) are consistent, and description adds significant value beyond annotations.

    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?

    Well-structured with logical flow, but slightly verbose. Could be more concise while retaining clarity.

    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 caching behavior, but lacks details on limit (page size?), filter criteria, and return structure. With 5 parameters and no output schema, the description is not fully 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 40% with descriptions only for exchange and verbose. The description adds meaning to the cursor parameter (explains pagination flow) but does not address limit or filter semantics. Partial compensation for low 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?

    Clearly identifies as a paginated variant of fetchEvents, describing the caching mechanism and cursor usage, distinguishing it from the non-paginated sibling.

    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 clear guidance on first call (no cursor) vs subsequent calls (with cursor). Does not explicitly mention when not to use or alternatives, but the context implies using fetchEvents for non-paginated needs.

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

  • Behavior4/5

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

    Annotations indicate readOnlyHint: true, and the description adds that it throws MarketNotFound on missing results. No contradictions, but no further behavioral details like rate limits.

    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 concise sentences with front-loaded verb and purpose. No 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?

    Given high schema coverage, the description is reasonably complete. However, for a complex tool with 14 parameters and no output schema, additional guidance on parameter priority would improve completeness.

    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 description adds no extra meaning. Baseline 3 is appropriate; the description does not explain parameter precedence or overlap.

    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 fetches a single market by lookup parameters, distinguishing it from fetchMarkets() as a convenience wrapper that returns a single result or throws MarketNotFound.

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

    Usage Guidelines4/5

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

    The description implies usage for single market lookup via convenience wrapper, but does not explicitly state when to avoid or list alternative tools beyond fetchMarkets().

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

  • Behavior5/5

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

    Goes beyond readOnlyHint annotation by detailing caching, snapshot invalidation after TTL, and the 'Cursor has expired' error. Provides full behavioral context.

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

    Conciseness5/5

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

    Single paragraph, front-loaded with purpose, each sentence adds value. No extraneous content.

    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 behavior well but lacks parameter details and return value description. With no output schema, more clarity on response format would help.

    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 only 40% (exchange and verbose have descriptions). Description clarifies cursor's role and expiration but does not explain limit, filter, or cursor format. Partial compensation.

    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 clearly states the verb (fetch), resource (markets), and pagination mode (cursor-based). It distinguishes from likely sibling `fetchMarkets` which is non-paginated.

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

    Usage Guidelines4/5

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

    Describes when to use (first call without cursor triggers fetch, subsequent calls use cursor) and warns about expiration. Lacks explicit mention of alternatives, but context is clear.

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

  • Behavior5/5

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

    The description discloses behavioral traits beyond annotations, such as support for live and historical queries, snapshot vs range behavior, and limit constraints. No contradiction with 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?

    Two sentences efficiently convey the main purpose and key parameter behaviors. Front-loaded with the core function, every sentence adds 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?

    Despite no output schema, the description explains return types (snapshot or array) and mentions compact vs verbose responses. It sufficiently covers what to expect for a fetch tool.

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

    Parameters4/5

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

    The description adds semantics for parameters like 'since', 'until', 'limit', and 'verbose', explaining their roles in historical queries. With 75% schema coverage, this exceeds the baseline of 3.

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

    Purpose5/5

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

    The description clearly states the tool fetches the order book for a specific outcome, distinguishing between live and historical queries. It is specific and differentiated from sibling tools like 'fetchOrderBooks'.

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

    Usage Guidelines4/5

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

    The description explains when to use historical vs live queries by detailing the 'since' and 'until' parameters. It does not explicitly contrast with sibling tools but implies context through parameter explanations.

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

  • Behavior5/5

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

    Discloses caching behavior (subsequent calls return cached result without API hit) and explains drift avoidance. Annotations (`idempotentHint: true`, `readOnlyHint: false`) are consistent; description adds context about internal state modification and idempotency.

    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?

    Multiple sentences, front-loaded with the core action. Every sentence contributes value, though could be slightly more concise. Well-structured with clear contrast to `fetchMarkets`.

    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 4 parameters and no output schema, the description covers caching, drift, usage pattern, and return compression. Lacks explicit mention of return object shape (though implied by caching), but the verbose flag detail fills part of the gap.

    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 75%, and the description adds context for the `reload` parameter implicitly by discussing caching behavior. However, no explicit param-level details beyond the schema; still adds value by explaining how the tool interacts with parameters like `verbose`.

    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 loads and caches all markets from the exchange into internal data structures. It uses specific verbs ('load and cache') and resource ('all markets'), and distinguishes from siblings like `fetchMarkets` which hits the API repeatedly.

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

    Usage Guidelines5/5

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

    Explicitly describes when to use (`loadMarkets` once for a stable snapshot) and contrasts with `fetchMarkets()` which can cause drift. It provides actionable guidance: paginate over `Object.values(exchange.markets)` locally.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

pmxt-mcp MCP server

Copy to your README.md:

Score Badge

pmxt-mcp MCP server

Copy to your README.md:

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

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