Skip to main content
Glama

GoCardless MCP Server

A Model Context Protocol (MCP) server for GoCardless API integration, enabling AI assistants to interact with GoCardless payment data.

Features

This MCP server provides tools to:

  • Customers: List, get, and create customers

  • Payments: List, get, and create payments

  • Mandates: List and get mandates

  • Subscriptions: List and get subscriptions (including combined details with customer/mandate)

  • Payouts: List payouts

  • Xero Integration: Automatic detection and parsing of Xero contact/invoice/payment IDs from metadata

Related MCP server: Xero MCP Server

Limitations

  • Read-only recommended: While customer and payment creation are supported, read-only API tokens are recommended for most use cases

  • No update operations: Existing records cannot be modified

  • No cancellation: Subscriptions, mandates, and payments cannot be cancelled through this server

Installation

No installation required - uvx will automatically fetch and run the package:

uvx --from git+https://github.com/jmceleney/gocardless-mcp.git gocardless-mcp

Configure in your MCP settings (see configuration examples below).

Using pipx

pipx install git+https://github.com/jmceleney/gocardless-mcp.git

Using pip

pip install git+https://github.com/jmceleney/gocardless-mcp.git

Local Development

# Clone the repository
git clone https://github.com/jmceleney/gocardless-mcp.git
cd gocardless-mcp

# Install in development mode
pip install -e .

Configuration

Environment Variables

You'll need to configure these environment variables:

  • GOCARDLESS_ACCESS_TOKEN (required): Your GoCardless API access token

  • GOCARDLESS_ENVIRONMENT (optional): Either sandbox or live (defaults to sandbox)

Get a GoCardless Access Token:

  1. Sign up for a GoCardless sandbox account

  2. Navigate to Developers > API tokens

  3. Create a new access token

  4. Copy the token for use in configuration

Setup for Different AI Tools

Claude Desktop

Claude Desktop is the easiest way to get started with MCP servers.

Configuration file location:

  • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%/Claude/claude_desktop_config.json

Add this configuration:

{
  "mcpServers": {
    "gocardless": {
      "command": "gocardless-mcp",
      "env": {
        "GOCARDLESS_ACCESS_TOKEN": "your_access_token_here",
        "GOCARDLESS_ENVIRONMENT": "sandbox"
      }
    }
  }
}

After configuration:

  1. Restart Claude Desktop

  2. Look for the πŸ”¨ (hammer) icon in the bottom-right corner

  3. Click it to verify the GoCardless server is connected

  4. Start asking questions like "Show me my recent GoCardless customers"

Claude Code

Claude Code works best with uvx for automatic package management.

Method 1: Using uvx (Recommended)

claude mcp add gocardless \
  --env GOCARDLESS_ACCESS_TOKEN=your_token_here \
  --env GOCARDLESS_ENVIRONMENT=sandbox \
  -- uvx --from git+https://github.com/jmceleney/gocardless-mcp.git gocardless-mcp

Method 2: Edit Configuration File Directly

Edit ~/.claude.json:

{
  "mcpServers": {
    "gocardless": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/jmceleney/gocardless-mcp.git", "gocardless-mcp"],
      "env": {
        "GOCARDLESS_ACCESS_TOKEN": "your_access_token_here",
        "GOCARDLESS_ENVIRONMENT": "sandbox"
      }
    }
  }
}

After configuration:

  1. Restart Claude Code

  2. Verify with: claude mcp list

  3. The GoCardless server should appear in the list

Cursor IDE

Cursor works best with uvx for automatic package management.

Project-specific configuration (recommended):

Create .cursor/mcp.json in your project root:

{
  "mcpServers": {
    "gocardless": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/jmceleney/gocardless-mcp.git", "gocardless-mcp"],
      "env": {
        "GOCARDLESS_ACCESS_TOKEN": "your_access_token_here",
        "GOCARDLESS_ENVIRONMENT": "sandbox"
      }
    }
  }
}

Global configuration (available in all projects):

Create ~/.cursor/mcp.json:

{
  "mcpServers": {
    "gocardless": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/jmceleney/gocardless-mcp.git", "gocardless-mcp"],
      "env": {
        "GOCARDLESS_ACCESS_TOKEN": "your_access_token_here",
        "GOCARDLESS_ENVIRONMENT": "sandbox"
      }
    }
  }
}

After configuration:

  1. Restart Cursor

  2. Open the MCP settings page to verify the server is connected

  3. The Composer Agent will automatically use GoCardless tools when relevant

Other MCP Clients

For any MCP client that supports stdio transport:

# Make sure environment variables are set
export GOCARDLESS_ACCESS_TOKEN="your_token_here"
export GOCARDLESS_ENVIRONMENT="sandbox"

# Run the server
gocardless-mcp

The server communicates via JSON-RPC over stdin/stdout, so it won't produce output when run directly.

Data Hierarchy

GoCardless data follows this hierarchy:

  • Customer (CU*) β†’ Mandate (MD*) β†’ Subscription (SB*) / Payment (PM*)

Mandates authorize recurring payments. Subscriptions generate recurring payments automatically.

Available Tools

Customer Tools

  • list_customers: List all customers (optional limit parameter)

  • get_customer: Get a specific customer by ID

  • create_customer: Create a new customer (requires email, optional given_name, family_name, company_name)

Payment Tools

  • list_payments: List payments (optional limit, status, subscription, mandate filters)

  • get_payment: Get a specific payment by ID (includes links to mandate/subscription)

  • create_payment: Create a new payment (requires amount, currency, mandate_id, optional description)

Mandate Tools

  • list_mandates: List mandates (optional limit and customer parameters)

  • get_mandate: Get a specific mandate by ID (includes link to customer)

Subscription Tools

  • list_subscriptions: List subscriptions (optional limit and status parameters)

  • get_subscription: Get a specific subscription by ID (includes link to mandate)

  • get_subscription_details: Get complete subscription info including mandate and customer in one call

Payout Tools

  • list_payouts: List payouts (optional limit parameter)

Usage Examples

Once configured in Claude Desktop, you can ask:

  • "Show me my recent GoCardless customers"

  • "Get details for customer CU123"

  • "Create a new customer with email test@example.com"

  • "List all pending payments"

  • "Show me the details of payment PM123"

Development & Testing

Testing with MCP Inspector

The MCP Inspector provides an interactive web interface to test your server:

# Run the inspector (requires Node.js)
npx @modelcontextprotocol/inspector gocardless-mcp

This will:

  1. Start the inspector on http://localhost:6274

  2. Open your browser automatically

  3. Allow you to set environment variables in the UI

  4. Interactively test all available tools

In the Inspector:

  1. Set your GOCARDLESS_ACCESS_TOKEN in the environment variables section

  2. Set GOCARDLESS_ENVIRONMENT to sandbox

  3. Browse available tools on the left sidebar

  4. Click any tool to see its schema

  5. Fill in parameters and click "Run" to test

Testing with a Python Client

Create a test script to programmatically test the server:

import asyncio
import os
from mcp.client.session import ClientSession
from mcp.client.stdio import StdioServerParameters, stdio_client

async def main():
    server_params = StdioServerParameters(
        command="gocardless-mcp",
        env={
            "GOCARDLESS_ACCESS_TOKEN": "your_sandbox_token",
            "GOCARDLESS_ENVIRONMENT": "sandbox"
        }
    )

    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # List available tools
            tools = await session.list_tools()
            print("Available tools:")
            for tool in tools.tools:
                print(f"  - {tool.name}: {tool.description}")

            # Test a tool
            result = await session.call_tool("list_customers", {"limit": 5})
            print("\nResult:", result)

asyncio.run(main())

Running Tests

# Install development dependencies
pip install -e ".[dev]"

# Run tests (when implemented)
pytest

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Available Tools

12 tools
create_customerC

Create a new customer in GoCardless

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesCustomer email address
given_nameNoCustomer first name
family_nameNoCustomer last name
company_nameNoCustomer company name (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Create' implies a write/mutation operation, the description doesn't specify whether this requires specific permissions, what happens on duplicate emails, what the response format is, or any rate limits. For a mutation tool with zero annotation coverage, this represents a significant gap in 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?

The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized for a straightforward creation tool and gets directly to the point, making it easy for an agent to parse quickly.

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 that this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't address what the tool returns, error conditions, authentication requirements, or how it fits into the broader workflow with sibling tools. For a tool that creates persistent data in a payment system, more contextual information would be helpful.

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 input schema has 100% description coverage, with all four parameters clearly documented in the schema itself. The description doesn't add any additional parameter information beyond what's already in the schema. According to the scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.

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 action ('Create a new customer') and the target system ('in GoCardless'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'get_customer' or 'list_customers' beyond the obvious creation vs retrieval distinction, which prevents a perfect score.

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 doesn't mention prerequisites (like authentication requirements), when not to use it (e.g., for updating existing customers), or how it relates to sibling tools like 'list_customers' for verification. This leaves the agent with minimal context for tool selection.

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

create_paymentC

Create a new payment in GoCardless

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount in minor currency unit (e.g., 1000 for Β£10.00)
currencyYesISO 4217 currency code (e.g., GBP, EUR)
mandate_idYesID of the mandate to use for this payment
descriptionNoPayment description

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a creation tool, implying a write operation, but doesn't mention critical behaviors like authentication requirements, potential side effects (e.g., charging a customer), error conditions, or what happens on success. For a payment creation tool with zero annotation coverage, this is a significant gap in transparency.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly. Every word earns its place by conveying essential information about the action and target system.

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 this is a payment creation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, what happens after creation (e.g., payment status), error handling, or integration with other tools like mandate management. For a financial transaction tool, more context about behavior and outcomes 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?

The input schema has 100% description coverage, providing clear documentation for all 4 parameters (amount, currency, mandate_id, description) including formats and examples. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting but doesn't compensate or enhance understanding.

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 verb ('Create') and resource ('payment in GoCardless'), making the purpose immediately understandable. It distinguishes from siblings like 'get_payment' or 'list_payments' by specifying creation rather than retrieval. However, it doesn't explicitly differentiate from other creation tools like 'create_customer', leaving some ambiguity about when to create a payment versus a customer.

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 doesn't mention prerequisites (e.g., needing a mandate first), compare to sibling tools like 'create_customer', or specify contexts where payment creation is appropriate versus other operations. This leaves the agent without explicit usage instructions.

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

get_customerB

Get a specific customer by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYesThe GoCardless customer ID (e.g., CU123)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention whether this is a read-only operation, requires authentication, has rate limits, returns error handling for invalid IDs, or what data format to expect. This leaves significant gaps for an agent to understand tool 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?

The description is a single, clear sentence with zero wasteβ€”it directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple retrieval tool and front-loaded with essential information, making it highly efficient.

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 simplicity (1 parameter, no output schema), the description is incomplete. It lacks details on return values, error conditions, or behavioral context, which are crucial for an agent to use it effectively. Without annotations or output schema, the description should compensate more to provide a complete picture.

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 description adds minimal meaning beyond the input schema, which has 100% coverage and documents the 'customer_id' parameter well. The description implies the ID is used for retrieval but doesn't provide additional context like ID format examples or validation rules. Baseline 3 is appropriate since 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 the verb ('Get') and resource ('a specific customer by ID'), making the purpose immediately understandable. It distinguishes from siblings like 'list_customers' by specifying retrieval of a single customer. However, it doesn't explicitly mention what 'get' entails (e.g., retrieving full details vs. basic info), keeping it from a perfect score.

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 when you have a customer ID, suggesting it's for retrieving known customers rather than listing or creating them. However, it lacks explicit guidance on when to use this vs. alternatives like 'list_customers' for browsing or 'get_subscription' for related data, and doesn't mention prerequisites or exclusions.

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

get_mandateC

Get a specific mandate by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
mandate_idYesThe GoCardless mandate ID (e.g., MD123)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves a mandate but doesn't cover aspects like authentication requirements, rate limits, error handling, or what data is returned (e.g., mandate details, status). For a read operation without annotations, this is a significant gap in transparency.

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, efficient sentence that directly states the tool's purpose with zero waste. It's appropriately sized and front-loaded, making it easy to parse quickly without unnecessary elaboration.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete for a tool that retrieves data. It doesn't explain what information is returned (e.g., mandate attributes, status), potential errors, or usage constraints. For a read operation with no structured output, more context is needed to guide the agent 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 100%, with the parameter 'mandate_id' documented in the schema as 'The GoCardless mandate ID (e.g., MD123)'. The description adds no additional meaning beyond this, such as format constraints or examples, so it meets the baseline for high schema coverage without compensating value.

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 verb ('Get') and resource ('a specific mandate by ID'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'list_mandates' or 'get_customer', which would require mentioning it retrieves a single mandate by unique identifier rather than listing multiple mandates or fetching other resource types.

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 doesn't mention using 'list_mandates' for multiple mandates or 'get_customer' for customer data, nor does it specify prerequisites like needing a valid mandate ID. This leaves the agent with minimal context for tool selection.

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

get_paymentB

Get a specific payment by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_idYesThe GoCardless payment ID (e.g., PM123)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves a payment by ID but doesn't describe what happens if the ID is invalid (e.g., error response), whether authentication is required, rate limits, or the format of the returned data. For a read operation with zero annotation coverage, this leaves significant gaps in understanding the tool's 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?

The description is a single, efficient sentence with zero waste: 'Get a specific payment by ID'. It is front-loaded with the core purpose, appropriately sized for a simple retrieval tool, and every word earns its place without redundancy or fluff.

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 low complexity (single parameter, no output schema, no annotations), the description is minimally adequate but incomplete. It covers the basic purpose but lacks context on usage guidelines, behavioral traits (e.g., error handling), and output details. For a simple read tool, this might suffice, but it doesn't provide enough information for optimal agent use without additional assumptions.

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 input schema has 100% description coverage, with the 'payment_id' parameter fully documented in the schema (type: string, description: 'The GoCardless payment ID (e.g., PM123)'). The description adds no additional meaning beyond what the schema provides, as it only mentions 'by ID' without elaborating on format or examples. Baseline score of 3 is appropriate since 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 the verb ('Get') and resource ('a specific payment by ID'), making the purpose immediately understandable. It distinguishes from sibling tools like 'list_payments' by specifying retrieval of a single payment rather than listing multiple. However, it doesn't explicitly differentiate from other get_* tools (e.g., 'get_customer', 'get_mandate') beyond the resource type.

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 doesn't mention when to use 'get_payment' instead of 'list_payments' (e.g., for a known payment ID), nor does it reference other sibling tools like 'get_customer' or 'get_subscription' for related data. There's no discussion of prerequisites, error conditions, 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.

get_subscriptionA

Get subscription by ID. Returns links.mandate - use get_mandate then get_customer for full details, or use get_subscription_details instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYesThe GoCardless subscription ID (e.g., SB123)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the return format ('Returns links.mandate') and hints at limitations (requiring additional steps for full details), which adds valuable context beyond basic functionality. However, it doesn't cover aspects like error handling 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 extremely concise and front-loaded, with two sentences that each serve a clear purpose: the first states the core functionality, and the second provides crucial usage guidance. There is zero wasted language, making it highly efficient and easy to parse.

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 low complexity (single parameter, no output schema, no annotations), the description is quite complete. It covers purpose, usage alternatives, and behavioral aspects like return data structure. The main gap is the lack of output schema, but the description compensates well by explaining what information is returned and how to obtain further details.

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 fully documents the 'subscription_id' parameter. The description doesn't add any additional semantic meaning or context about the parameter beyond what's in the schema, maintaining the baseline score of 3 for adequate but not enhanced parameter documentation.

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 ('Get subscription by ID') and resource ('subscription'), distinguishing it from sibling tools like 'get_subscription_details' by emphasizing the ID-based retrieval. It provides a precise verb+resource combination that leaves no ambiguity about its function.

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 provides usage guidance by stating when to use alternatives: it mentions that 'links.mandate' is returned and advises using 'get_mandate then get_customer for full details' or 'use get_subscription_details instead.' This clearly defines when this tool is appropriate versus other options.

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

get_subscription_detailsB

Get complete subscription info including mandate and customer in one call

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYesThe GoCardless subscription ID (e.g., SB123)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a read operation ('Get'), but doesn't mention any behavioral traits such as authentication requirements, rate limits, error conditions, or what 'complete' entails beyond mandate and customer info. This leaves significant gaps for a tool that likely interacts with payment/subscription data.

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, efficient sentence that front-loads the key information ('Get complete subscription info') and adds clarifying details ('including mandate and customer in one call') without any wasted words. It's appropriately sized for a simple tool with one parameter.

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 low complexity (1 parameter, no nested objects) and high schema coverage, the description is minimally adequate. However, with no annotations and no output schema, it fails to disclose important behavioral aspects like what data is returned or any operational constraints. This makes it incomplete for safe and effective use by an AI agent.

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 input schema has 100% description coverage, with the single parameter 'subscription_id' well-documented in the schema. The description doesn't add any parameter-specific details beyond what the schema provides, such as format examples or validation rules. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't need to.

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 with a specific verb ('Get') and resource ('subscription info'), and it specifies what information is included ('complete subscription info including mandate and customer'). However, it doesn't explicitly differentiate from the sibling 'get_subscription' tool, which appears to be a simpler version.

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 context by mentioning 'in one call,' suggesting this tool should be used when you need comprehensive subscription data. However, it doesn't provide explicit guidance on when to use this versus the simpler 'get_subscription' sibling tool or other related tools like 'get_mandate' or 'get_customer.'

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

list_customersC

List all customers from GoCardless

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of customers to retrieve (default: 50)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states it's a list operation but doesn't mention whether it's paginated, sorted, filtered, or has rate limits. For a list tool with zero annotation coverage, this leaves significant behavioral gaps about how the operation actually works.

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, efficient sentence with zero waste. It's appropriately sized for a simple list tool and front-loads the essential information without unnecessary elaboration.

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 no annotations, no output schema, and a simple parameter with full schema coverage, the description is incomplete. It doesn't explain what the return format looks like (e.g., array of customer objects), pagination behavior, or error conditions, which are important for a list operation.

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 the single 'limit' parameter with its type and default. The description adds no additional parameter information beyond what's in the schema, meeting the baseline for high schema coverage.

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 verb ('List') and resource ('all customers from GoCardless'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_customer' or other list tools, which would require explicit scope clarification to earn a 5.

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 like 'get_customer' for individual retrieval or other list tools for different resources. There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.

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

list_mandatesC

List mandates from GoCardless

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of mandates to retrieve (default: 50)
customerNoFilter by customer ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure but offers minimal information. It states it's a list operation but doesn't describe pagination behavior, rate limits, authentication requirements, or what happens when no mandates exist. For a list tool with zero annotation coverage, this leaves significant gaps in understanding 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple list operation and gets straight to the point without unnecessary elaboration.

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?

For a list tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what format the mandates are returned in, whether results are paginated, what authentication is required, or how errors are handled. The combination of missing structured data and minimal description leaves the agent with significant uncertainty about tool behavior.

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

Parameters3/5

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

The schema description coverage is 100%, so both parameters are fully documented in the schema itself. The description adds no additional parameter information beyond what's already in the structured fields. This meets the baseline expectation when the schema does the heavy lifting, but doesn't provide extra context about parameter interactions or usage patterns.

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 action ('List') and resource ('mandates from GoCardless'), making the tool's purpose immediately understandable. It doesn't differentiate from sibling tools like 'list_customers' or 'list_payments' beyond the resource name, but the verb+resource combination is specific enough for basic understanding.

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 like 'get_mandate' (for a single mandate) or other list tools. There's no mention of prerequisites, typical use cases, or contextual factors that would help an agent choose between this and sibling list operations.

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

list_paymentsC

List payments from GoCardless

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of payments to retrieve (default: 50)
statusNoFilter by payment status (pending_customer_approval, pending_submission, submitted, confirmed, paid_out, cancelled, customer_approval_denied, failed, charged_back)
subscriptionNoFilter by subscription ID (e.g., SB123)
mandateNoFilter by mandate ID (e.g., MD123)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('List payments') but doesn't describe how the tool behaves: whether it returns all payments or is paginated (implied by the 'limit' parameter but not explained), what the default ordering is, whether it requires authentication, or what the output format looks like. For a list operation with no annotation coverage, this leaves significant gaps.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse. Every part of the description earns its place by conveying essential information.

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 a list operation with filtering parameters, no annotations, and no output schema, the description is incomplete. It doesn't address key behavioral aspects like pagination, authentication needs, or output structure, which are critical for an agent to use the tool effectively. The high schema coverage helps with parameters but doesn't compensate for the lack of operational context.

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 input schema has 100% description coverage, with clear documentation for all four parameters (limit, status, subscription, mandate). The description doesn't add any parameter-specific information beyond what's in the schema, such as explaining how filters combine or providing examples beyond the enum values. Given the high schema coverage, a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resource 'payments from GoCardless', making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'get_payment' or 'list_payouts', which would require specifying this is for retrieving multiple payments with optional filtering rather than a single payment or other resource types.

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 doesn't mention that 'get_payment' is for retrieving a single payment by ID, 'list_payouts' is for a different resource, or that this tool is appropriate for filtered bulk retrieval. Without such context, the agent must infer usage from the tool name alone.

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

list_payoutsC

List payouts from GoCardless

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of payouts to retrieve (default: 50)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but only states what the tool does without any additional context. It doesn't mention whether this is a read-only operation, if it requires authentication, how results are returned (e.g., pagination), rate limits, or error conditions, which are critical for a list operation.

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 extremely conciseβ€”a single sentence that directly states the tool's purpose without any fluff or redundant information. It's front-loaded and wastes no words, making it efficient for an agent to parse.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete for a list operation. It doesn't explain what a 'payout' entails in GoCardless, the format of returned data, or any behavioral traits like ordering or filtering options, leaving significant gaps for the agent to operate 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?

The input schema has 100% description coverage, with the 'limit' parameter clearly documented in the schema itself. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline score of 3 where 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 the verb ('List') and resource ('payouts from GoCardless'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its siblings (like 'list_customers', 'list_payments'), which would require specifying what makes payouts unique versus other list operations.

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 doesn't mention prerequisites, context for listing payouts (e.g., after payments are processed), or how it differs from other list tools on the server, leaving the agent to infer usage from the tool name alone.

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

list_subscriptionsC

List subscriptions from GoCardless

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of subscriptions to retrieve (default: 50)
statusNoFilter by subscription status

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but only states the basic action. It doesn't mention whether this is a read-only operation, if it requires authentication, how results are returned (pagination, format), rate limits, or error conditions. For a listing tool with zero annotation coverage, this is insufficient.

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

Conciseness5/5

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

The description is extremely concise at just 4 words with zero wasted language. It's front-loaded with the essential information (list subscriptions) and doesn't include any unnecessary elaboration or redundant phrasing.

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?

For a listing tool with no annotations and no output schema, the description is incomplete. It doesn't explain what information is returned, how results are structured, whether pagination is supported, or any behavioral aspects. The agent would need to guess about the tool's behavior and output format based solely on the minimal description.

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 description provides no parameter information, but the input schema has 100% description coverage with clear documentation for both 'limit' and 'status' parameters. Since the schema does the heavy lifting, the baseline score of 3 is appropriate even though the description adds no value beyond what's already in the structured 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 action ('List') and resource ('subscriptions from GoCardless'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from its sibling 'get_subscription' or 'get_subscription_details', which likely retrieve individual subscriptions rather than listing multiple ones.

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 like 'get_subscription' or 'get_subscription_details'. There's no mention of use cases, prerequisites, or exclusions that would help an agent choose between these related subscription tools.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 12 tool updates
    • First observedcreate_customer
    • First observedcreate_payment
    • First observedget_customer
    • First observedget_mandate
    • First observedget_payment
    • First observedget_subscription
    • First observedget_subscription_details
    • First observedlist_customers
    • First observedlist_mandates
    • First observedlist_payments
    • First observedlist_payouts
    • First observedlist_subscriptions

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific resources and actions, but there is some ambiguity between get_subscription and get_subscription_details. The descriptions clarify that get_subscription returns limited data requiring follow-up calls, while get_subscription_details provides complete info, but an agent might still be confused about which to use in different scenarios.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern (e.g., create_customer, get_payment, list_subscriptions). The verbs are standardized (create, get, list) and nouns are clear, with no mixing of conventions like camelCase or snake_case deviations.

Tool Count5/5

With 12 tools, the count is well-scoped for a payment processing domain like GoCardless. It covers core resources (customers, payments, mandates, subscriptions, payouts) with appropriate CRUD operations, avoiding bloat while providing essential functionality.

Completeness4/5

The tool set offers strong coverage for key resources with create, get, and list operations, but lacks update and delete tools for most entities (e.g., no update_customer or delete_payment). This minor gap might require workarounds, but core workflows like creating and retrieving data are well-supported.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to interact with QuickFile UK accounting software, providing access to invoicing, client management, purchases, banking, and financial reporting through 40+ tools covering the complete QuickFile API.
    4
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables interaction with the Xero Accounting API to manage contacts, invoices, payments, accounts, and financial reports. It provides a suite of tools for natural language access to accounting records and business performance data.
    20
    1
    Apache 2.0
  • -
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Xero accounting API for financial reporting, sales analysis, grant tracking, and bill management using natural language.
    1
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to integrate the SIBS payment gateway, providing tools for creating checkouts, checking payment status, issuing refunds, and generating Multibanco references directly through natural language.
    -

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/jmceleney/gocardless-mcp'

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