Skip to main content
Glama
remuzel

Polarsteps MCP Server

by remuzel

get_user_stats

Retrieve travel statistics and analytics for a Polarsteps user, including countries visited, distance traveled, and trip details to analyze travel history.

Instructions

Get available travel statistics and metrics for a Polarsteps user, including countries visited, total distance traveled, trip counts, and detailed travel analytics. Perfect for getting a complete picture of someone's travel history and achievements.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
usernameYesThe username of the Polarstep user to look for.

Implementation Reference

  • The core handler function that implements the get_user_stats tool logic. It retrieves the user via _get_user helper and returns their stats as TextContent or an error message if none available.
    def get_user_stats(
        polarsteps_client: PolarstepsClient, input: GetUserStats
    ) -> list[TextContent]:
        user = _get_user(polarsteps_client, input.username)
        if user.stats is None:
            return single_text_content(
                f"No travel stats found for username={input.username}"
            )
        return single_text_content(user.stats)
  • Pydantic schema/model for the input parameters of the get_user_stats tool, defining the required 'username' field.
    class GetUserStats(BaseModel):
        username: str = Field(
            ...,
            description="The username of the Polarstep user to look for.",
        )
  • Registration of the 'get_user_stats' tool within the PolarstepsTool Enum, specifying the tool name, description, and input schema class.
    USER_STATS = (
        "get_user_stats",
        "Get available travel statistics and metrics for a Polarsteps user, including countries visited, total distance traveled, trip counts, and detailed travel analytics. Perfect for getting a complete picture of someone's travel history and achievements.",
        GetUserStats,
    )
  • Dispatch/handling case in the MCP server's call_tool method that invokes the get_user_stats implementation from tools.py.
    case PolarstepsTool.USER_STATS:
        input = GetUserStats(**args)
        return get_user_stats(client, input)
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions retrieving 'available travel statistics' but doesn't specify if this requires authentication, rate limits, data freshness, or error conditions. For a read operation with zero annotation coverage, this leaves significant gaps in understanding behavioral traits.

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

Conciseness4/5

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

The description is concise and front-loaded, with two sentences that efficiently convey purpose and value. The first sentence outlines the core functionality, and the second adds context without redundancy. It could be slightly more structured but avoids unnecessary elaboration.

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

Completeness3/5

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

Given the tool's complexity (read operation with one parameter) and no annotations or output schema, the description is adequate but incomplete. It covers the purpose and high-level output ('statistics and metrics') but lacks details on return format, error handling, or behavioral constraints, which are important for a tool without structured output documentation.

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

Parameters3/5

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

Schema description coverage is 100%, with the parameter 'username' documented as 'The username of the Polarstep user to look for.' The description adds context by specifying it's for 'a Polarsteps user' and relates to 'travel history,' but doesn't provide additional syntax or format details beyond what the schema offers. Baseline 3 is appropriate when the schema handles parameter documentation.

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's purpose: 'Get available travel statistics and metrics for a Polarsteps user' with specific details like 'countries visited, total distance traveled, trip counts, and detailed travel analytics.' It distinguishes from siblings by focusing on statistics/analytics rather than trips or profiles, though it doesn't explicitly name alternatives.

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 'getting a complete picture of someone's travel history and achievements,' suggesting it's for comprehensive analytics. However, it doesn't provide explicit guidance on when to use this versus sibling tools like get_user_profile or get_trips, nor does it mention any exclusions or prerequisites.

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

Install Server

Other Tools

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/remuzel/polarsteps-mcp'

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