Skip to main content
Glama
PaddleHQ

Paddle MCP Server

Official
by PaddleHQ

get_report

Read-only

Retrieve report details from Paddle Billing by ID to check status and obtain information for CSV download.

Instructions

This tool will retrieve a report entity from Paddle by its ID. It only contains information about the report, like the ID, status, and the date it was created.

Use this tool to check the status of a generated report, or to get the ID of a report, to then use with the get_report_csv tool to download the CSV.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
reportIdYesPaddle ID of the report.

Implementation Reference

  • The main handler function that implements the core logic of the 'get_report' tool. It takes a Paddle instance and parameters, extracts the reportId, calls paddle.reports.get(reportId), and returns the report or error.
    export const getReport = async (paddle: Paddle, params: z.infer<typeof Parameters.getReportParameters>) => {
      try {
        const { reportId } = params;
        const report = await paddle.reports.get(reportId);
        return report;
      } catch (error) {
        return error;
      }
    };
  • The tool definition object which serves as the schema for the 'get_report' tool, including method name, human-readable name, description prompt reference, Zod parameters schema reference, and required permissions (read/get on reports).
      method: "get_report",
      name: "Get a report",
      description: prompts.getReportPrompt,
      parameters: params.getReportParameters,
      actions: {
        reports: {
          read: true,
          get: true,
        },
      },
    },
  • src/api.ts:87-87 (registration)
    Registration of the 'get_report' handler in the toolMap used by PaddleAPI to map tool methods to their handler functions.
    [TOOL_METHODS.GET_REPORT]: funcs.getReport,
  • src/toolkit.ts:69-86 (registration)
    Dynamic registration of all tools, including 'get_report', in the MCP server using the tool definitions from tools.ts, mapping to PaddleAPI.run which uses the api.ts toolMap.
    this.tool(
      tool.method,
      tool.description,
      tool.parameters.shape,
      annotations,
      async (arg: unknown, _extra: unknown) => {
        const result = await this._paddle.run(tool.method, arg);
        return {
          content: [
            {
              type: "text" as const,
              text: String(result),
            },
          ],
        };
      },
    );
  • Constant definition mapping GET_REPORT to the string 'get_report' used in toolMap keys and method names.
    GET_REPORT: "get_report",
Behavior4/5

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

The annotations already provide readOnlyHint=true, which covers the safety aspect. The description adds valuable context about what information is returned ('ID, status, and the date it was created') and clarifies that this is for retrieving existing reports rather than creating them. However, it doesn't mention potential limitations like error conditions 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.

Conciseness5/5

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

The description is perfectly concise with three sentences that each serve a distinct purpose: stating what the tool does, clarifying what information it returns, and providing usage guidance. There is no wasted language and the structure is logical and front-loaded.

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

Completeness4/5

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

For a simple read operation with one parameter and readOnlyHint annotation, the description provides excellent context about purpose, usage, and return information. The main gap is the lack of output schema, but the description partially compensates by describing what information is returned. It could be more complete by mentioning error cases or response format.

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

Parameters3/5

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

The schema description coverage is 100%, with the single parameter 'reportId' fully documented in the schema. The description mentions 'by its ID' which aligns with the schema but doesn't add additional semantic context beyond what's already in the structured data. This meets the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the specific action ('retrieve a report entity'), resource ('from Paddle by its ID'), and scope ('only contains information about the report, like the ID, status, and the date it was created'). It distinguishes from sibling tools by specifying this is for retrieving individual reports rather than listing or creating them.

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?

The description explicitly states when to use this tool ('Use this tool to check the status of a generated report, or to get the ID of a report') and provides a clear alternative ('to then use with the get_report_csv tool to download the CSV'). This gives the agent specific guidance on appropriate use cases and next steps.

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/PaddleHQ/paddle-mcp-server'

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