Skip to main content
Glama
PaddleHQ

Paddle MCP Server

Official
by PaddleHQ

list_adjustments

Read-only

Retrieve and filter transaction adjustments in Paddle Billing, including credits, refunds, and chargebacks, with pagination and sorting options.

Instructions

This tool will list adjustments in Paddle.

Use the maximum perPage by default (50) to ensure comprehensive results. Filter adjustments by action, customerId, status, subscriptionId, transactionId, and id as needed. Results are paginated - use the 'after' parameter with the last ID from previous results to get the next page. Sort and order results using the orderBy parameter.

Amounts are in the smallest currency unit (e.g., cents).

Adjustments have an action that determines how the adjustment impacts the related transaction:

  • credit: Credits some or all the related transaction. Can be created manually.

  • refund: Refunds some or all the related transaction. Must be approved by Paddle in most cases. Can be created manually.

  • chargeback: Chargeback for the related transaction. Automatically created by Paddle when a customer successfully disputes a charge.

  • chargeback_reverse: Reversal of a chargeback for the related transaction. Automatically created by Paddle when Paddle contests a chargeback successfully.

  • chargeback_warning: Warning of an upcoming chargeback for the related transaction. Automatically created by Paddle.

  • chargeback_warning_reverse: Reversal of a chargeback warning for the related transaction. Automatically created by Paddle.

  • credit_reverse: Reversal of a credit for the related transaction. Automatically created by Paddle.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actionNoReturn entities for the specified action.
afterNoReturn entities after the specified Paddle ID when working with paginated endpoints.
customerIdNoReturn entities related to the specified customer. Use a comma-separated list to specify multiple customer IDs.
orderByNoOrder returned entities by the specified field and direction.
perPageNoSet how many entities are returned per page. Returns the maximum number of results if a number greater than the maximum is requested.
statusNoReturn entities that match the specified status. Use a comma-separated list to specify multiple status values.
subscriptionIdNoReturn entities related to the specified subscription. Use a comma-separated list to specify multiple subscription IDs.
transactionIdNoReturn entities related to the specified transaction. Use a comma-separated list to specify multiple transaction IDs.
idNoReturn only the IDs specified. Use a comma-separated list to get multiple entities.

Implementation Reference

  • The main handler function that executes the list_adjustments tool. It calls paddle.adjustments.list(params), fetches the first page, adds pagination info, and handles errors.
    export const listAdjustments = async (paddle: Paddle, params: z.infer<typeof Parameters.listAdjustmentsParameters>) => {
      try {
        const collection = paddle.adjustments.list(params);
        const adjustments = await collection.next();
        const pagination = paginationData(collection);
        return { pagination, adjustments };
      } catch (error) {
        return error;
      }
    };
  • Defines the tool metadata including name, description, input parameters schema (via params.listAdjustmentsParameters), and required actions for the list_adjustments tool.
      method: "list_adjustments",
      name: "List adjustments",
      description: prompts.listAdjustmentsPrompt,
      parameters: params.listAdjustmentsParameters,
      actions: {
        adjustments: {
          read: true,
          list: true,
        },
      },
    },
  • src/api.ts:25-25 (registration)
    Registers the listAdjustments handler function in the toolMap under the LIST_ADJUSTMENTS key for execution via PaddleAPI.run().
    [TOOL_METHODS.LIST_ADJUSTMENTS]: funcs.listAdjustments,
  • src/constants.ts:17-17 (registration)
    Defines the constant string identifier for the list_adjustments tool method.
    LIST_ADJUSTMENTS: "list_adjustments",
Behavior4/5

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

Annotations declare readOnlyHint=true, which the description aligns with by describing a listing operation. The description adds valuable behavioral context beyond annotations: pagination mechanics ('after' parameter usage), default pagination behavior (maximum perPage=50), currency unit details (amounts in smallest unit like cents), and detailed explanations of adjustment actions including which are manual vs. automatic. This significantly enhances the agent's understanding of how the tool behaves.

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 appropriately sized and front-loaded with the core purpose and key usage guidelines. The detailed action explanations are necessary for behavioral transparency. While slightly lengthy, every section adds value and there's no redundant information. It could be slightly more concise but remains well-structured.

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

Completeness4/5

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

Given the tool's complexity (9 parameters, no output schema) and rich annotations (readOnlyHint), the description provides comprehensive context. It covers purpose, usage, behavioral details (pagination, currency, action types), and parameter guidance. The main gap is the lack of output schema, but the description compensates well with behavioral explanations. For a listing tool with good annotations, this is nearly 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 100%, so the schema already documents all 9 parameters thoroughly. The description adds some context about parameter usage (e.g., 'after' parameter with last ID for pagination, filtering 'as needed'), but doesn't provide significant additional semantic meaning beyond what's in the schema. This meets the baseline expectation when schema coverage is complete.

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 starts with a clear verb+resource statement: 'This tool will list adjustments in Paddle.' It distinguishes from siblings like 'get_adjustment_credit_note' (specific adjustment detail) and 'create_adjustment' (write operation), establishing its role as a comprehensive listing tool for adjustments.

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 this tool: for listing adjustments with filtering, pagination, and sorting capabilities. It doesn't explicitly state when NOT to use it or name alternatives, but the context is sufficient for an agent to infer this is the primary listing tool for adjustments among the siblings.

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