Skip to main content
Glama
mcpflow

Bitrefill MCP Server

by mcpflow

Bitrefill MCP Server

A TypeScript-based MCP server that provides access to Bitrefill services, allowing you to search for gift cards, mobile topups, and more. This server implements the Model Context Protocol to expose Bitrefill functionality to AI assistants.

How It Works

The server operates using the Model Context Protocol (MCP) to communicate with Claude and similar AI assistants. It:

  1. Runs as a standalone process using stdio for communication

  2. Registers resources and tools for accessing Bitrefill services

  3. Interfaces with the Bitrefill API to provide product search and details

  4. Returns structured JSON responses that can be processed by AI assistants

Architecture

The app server follows this architecture:

src/
├── index.ts                # Main entry point
├── constants/              # Static data
│   ├── categories.ts       # Product categories
│   └── payment_methods.ts  # Payment methods
├── handlers/               # MCP request handlers
│   ├── resources.ts        # Resource endpoints
│   └── tools.ts            # Tool implementations
├── schemas/                # Data validation schemas
│   ├── detail.ts           # Product detail response types
│   ├── invoice.ts          # Invoice schemas
│   ├── misc.ts             # Miscellaneous schemas
│   ├── order.ts            # Order schemas
│   └── search.ts           # Search parameters and response types
├── services/               # API services
│   ├── invoices.ts         # Invoice service
│   ├── misc.ts             # Miscellaneous services
│   ├── orders.ts           # Order services
│   ├── products.ts         # Product details service
│   └── search.ts           # Search functionality
└── utils/                  # Utility functions
    ├── index.ts            # Error logging, etc.
    └── api/                # API clients
        ├── authenticated.ts # Authenticated API client
        ├── base.ts         # Base API client
        └── public.ts       # Public API client

Related MCP server: MCP Bitnovo Pay

Features

Resources

  • bitrefill://product-types - List of available product types on Bitrefill

  • bitrefill://categories/{type} - List of available categories for a specific product type (e.g., bitrefill://categories/gift-cards)

Tools

  • search - Search for gift cards, esims, mobile topups and more

    • Required: query (e.g., 'Amazon', 'Netflix', 'AT&T' or '*' for all)

    • Optional: country, language, limit, skip, category

  • detail - Get detailed information about a product

    • Required: id (product identifier)

  • categories - Get the full product type/categories map

    • No required parameters

  • create_invoice - Create a new invoice for purchasing products (requires API key)

    • Required: products (array of products to include in the invoice)

      • Each product requires: product_id

      • Optional product fields: quantity, value, package_id, phone_number, email, send_email, send_sms

    • Required: payment_method (one of: "balance", "bitcoin", "lightning")

    • Optional: webhook_url, auto_pay

  • get_invoices - Retrieve a list of invoices with optional filtering

    • Optional: start, limit, after, before

  • get_invoice - Retrieve details for a specific invoice by ID

    • Required: id (invoice identifier)

  • pay_invoice - Pay an unpaid invoice (only works with 'balance' payment method)

    • Required: id (invoice identifier)

  • get_orders - Retrieve a list of orders with optional filtering

    • Optional: start, limit, after, before

  • get_order - Retrieve details for a specific order by ID

    • Required: id (order identifier)

  • unseal_order - Reveal codes and PINs for a specific order by ID

    • Required: id (order identifier)

  • get_account_balance - Retrieve your account balance

    • No required parameters

  • ping - Check if the Bitrefill API is available

    • No required parameters

Configuration

API Key Setup

To use the all the tools that rely on the Bitrefill API except for search, categories and detail, you need to set up Bitrefill API credentials:

  1. Create a Bitrefill account

  2. Ask for a developer API key by filing a request on this form

  3. Create a .env file in the root directory (you can copy from .env.example)

  4. Add your Bitrefill API credentials:

    BITREFILL_API_SECRET=your_api_key_here
    BITREFILL_API_ID=your_api_id_here

The create_invoice tool will only be available if the API credentials are set. If the API credentials are not set, the tool will not be registered and won't appear in the list of available tools.

Development

Install dependencies:

npm install

Build the server:

npm run build

For development with auto-rebuild:

npm run watch

Debugging

Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:

npm run inspector

The Inspector will provide a URL to access debugging tools in your browser.

Installation

Installing via Smithery

To install Bitrefill for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @bitrefill/bitrefill-mcp-server --client claude

Claude Desktop

Add the server config at:

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

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

{
  "mcpServers": {
    "bitrefill": {
      "command": "npx",
      "args": ["-y", "bitrefill-mcp-server"],
      "env": {
        "BITREFILL_API_SECRET": "your_api_key_here",
        "BITREFILL_API_ID": "your_api_id_here"
      }
    }
  }
}

Cline

  1. Open the Cline extension settings

  2. Open "MCP Servers" tab

  3. Click on "Configure MCP Servers"

  4. Add the server config:

{
  "mcpServers": {
    "github.com/bitrefill/bitrefill-mcp-server": {
      "command": "npx",
      "args": ["-y", "bitrefill-mcp-server"],
      "disabled": false,
      "autoApprove": ["search", "detail", "categories"],
      "env": {
        "BITREFILL_API_ID": "your_api_id_here",
        "BITREFILL_API_SECRET": "your_api_key_here"
      }
    }
  }
}

Additional Cline configuration options:

  • disabled: Set to false to enable the server

  • autoApprove: List of tools that don't require explicit approval for each use

Cursor

  1. Open the Cursor settings

  2. Open "Features" settings

  3. In the "MCP Servers" section, click on "Add new MCP Server"

  4. Choose a name, and select "command" as "Type"

  5. In the "Command" field, enter the following:

npx -y bitrefill-mcp-server
  1. (Optional) If you're using the create_invoice tool, add environment variables:

    • BITREFILL_API_SECRET: your_api_key_here

    • BITREFILL_API_ID: your_api_id_here

Docker

You can also run the server using Docker. First, build the image:

docker build -t bitrefill-mcp-server .

Then run the container:

docker run -e BITREFILL_API_SECRET=your_api_key_here -e BITREFILL_API_ID=your_api_id_here bitrefill-mcp-server

For development, you might want to mount your source code as a volume:

docker run -v $(pwd):/app --env-file .env bitrefill-mcp-server

Available Tools

12 tools
categoriesA

Get the full product type/categories map. It's suggested to use this tool to get the categories and then use the search tool to search for products in a specific category.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It states the tool returns a map but does not disclose any behavioral traits such as read-only, idempotency, or potential side effects. For a simple retrieval, this is minimal but could be improved.

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: two sentences. The first states purpose, the second gives usage guidance. 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 the tool has no parameters, no output schema, and no annotations, the description is fairly complete. It tells what it does and how to use it with a sibling tool. However, it could describe the structure of the returned map.

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 tool has zero parameters, and schema description coverage is 100%. According to guidelines, baseline for 0 parameters is 4. The description adds no parameter info (none needed), so it meets baseline.

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 retrieves the full product type/categories map, using a specific verb 'Get' and a specific resource. It also distinguishes from sibling tools by suggesting use with 'search' tool.

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 explicitly suggests using this tool first to get categories, then using 'search' for products in a specific category, providing clear context. However, it does not explicitly state when not to use this tool, but its purpose is clear enough.

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

create_invoiceB

Create a new invoice for purchasing products with various payment methods

ParametersJSON Schema
NameRequiredDescriptionDefault
auto_payNoOptional: Automatically pay with balance
productsYesArray of products to include in the invoice
webhook_urlNoOptional: URL for webhook notifications
payment_methodYesRequired payment method. Available methods: balance, lightning, bitcoin, eth_base, usdc_base

TDQS

B3.4/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. It only states 'Create a new invoice' but discloses no behavioral traits such as idempotency, side effects, auth needs, or what happens after creation (e.g., payment processing). The description is too sparse for a mutation 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 a single sentence with no wasted words. It is front-loaded and 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?

The tool has 4 parameters, no output schema, and no annotations. The description fails to explain return values, error handling, or example usage. For a creation tool with complex nested parameters, this is incomplete.

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 baseline is 3. The description does not add meaning beyond the schema; 'various payment methods' is already detailed in the enum. No additional parameter context provided.

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 'Create a new invoice for purchasing products', which is a specific verb+resource. It distinguishes from sibling tools like get_invoice and pay_invoice.

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 creating invoices but provides no explicit guidance on when to use this tool versus alternatives such as pay_invoice or get_invoice. No when-not or context provided.

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

detailB

Get detailed information about a product

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique identifier of the product

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden. It does not disclose behavior beyond the basic action—no mention of error handling, authentication requirements, or what 'detailed information' includes. Minimal 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 sentence with no wasted words. It is maximally concise and front-loaded with the essential 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?

With one required parameter and no output schema, the description is minimally adequate. However, it is vague about what 'detailed information' entails, leaving ambiguity for the 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?

Schema description coverage is 100%, so baseline is 3. The description adds no parameter-specific information beyond what the schema already provides. The schema already describes 'id' as a unique identifier.

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 ('Get') and resource ('product'), but does not differentiate from sibling tools like 'get_order' or 'get_invoice' which also retrieve details. The name 'detail' is generic, but the description specifies 'product', making it moderately clear.

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 vs alternatives. For example, it does not explain how 'detail' differs from 'search' or 'get_invoice' for retrieving product information.

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

get_account_balanceA

Retrieve your account balance

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, and the description only states the action without disclosing any behavioral traits such as side effects, authentication requirements, or rate limits. For a read operation, the description is minimal and does not add value beyond the name.

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 with no unnecessary words. It is front-loaded and to the point, earning its place without 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?

The description is minimal but adequate for a read-only tool with no parameters and no output schema. However, it could be improved by mentioning what is included in the balance (e.g., currency, pending transactions) to provide complete context.

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 tool has no parameters, so the schema provides all necessary information. According to the rules, 0 parameters yields a baseline of 4. The description does not need to add parameter meaning.

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 retrieves the account balance, using a specific verb ('Retrieve') and resource ('your account balance'). It distinguishes itself from sibling tools like 'get_invoice' and 'get_order' which deal with different resources.

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?

While no explicit when-to-use or alternatives are given, the description is sufficient for the simple task of retrieving a balance. It implicitly suggests usage when the user needs account balance information, and the sibling tools indicate other financial operations, so differentiation is clear.

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

get_invoiceA

Retrieve details for a specific invoice by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique invoice identifier

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided. Description only says 'Retrieve details', implying read-only, but lacks details on authorization, rate limits, or return structure. Without output schema, description should hint at returned fields.

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 unnecessary words, front-loaded with key action and resource.

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?

Simple retrieval tool with one parameter; description is adequate but lacks detail on what 'details' entail, especially with no output schema. Could be more complete for clarity.

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% with description for parameter 'id'. Description adds no extra meaning beyond schema; baseline 3 applies.

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 verb 'Retrieve', resource 'invoice', and method 'by ID'. Distinguished from sibling 'get_invoices' (plural) which implies a list.

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?

Implied usage: use when you have an invoice ID. No explicit when-to-use or alternatives mentioned, but name and sibling context provide indirect guidance.

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

get_invoicesC

Retrieve a list of invoices with optional filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoStart date for limiting results (Inclusive). Format: YYYY-MM-DD HH:MM:SS
limitNoMaximum number of records. Maximum/Default: 50
startNoStart index. Default: 0
beforeNoEnd date for limiting results (Non-Inclusive). Format: YYYY-MM-DD HH:MM:SS

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 full burden. It only states 'retrieve a list of invoices' without disclosing read-only nature, response format, or any side effects. The schema covers parameters but not 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 a single concise sentence, front-loading the core purpose. It is efficient but could benefit from slight expansion to include pagination context without becoming verbose.

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 and annotations, the description provides only the essential purpose. It implies a list of invoices but omits details on response format, pagination behavior, and safety considerations. The schema covers parameters, but overall completeness is adequate.

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 baseline is 3. The description adds no meaning beyond the schema, merely stating 'optional filtering' without explaining parameter usage or relationships (e.g., date range for after/before, pagination for limit/start).

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 retrieves a list of invoices with optional filtering. It distinguishes from sibling 'get_invoice' (singular) but does not explicitly mention other listing tools like 'get_orders'.

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 'get_invoice' for a single invoice. The description lacks context on prerequisites or filtering behavior.

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

get_orderB

Retrieve details for a specific order by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique order identifier

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description only states the operation. It does not disclose auth requirements, side effects, rate limits, or data freshness.

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?

Single sentence, no wasted words, but could be slightly more informative without losing conciseness.

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 simple retrieval, it lacks context about return values, included fields, or any limitations; no output schema to fill the gap.

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 already describes the 'id' parameter as 'Unique order identifier'; description adds no extra meaning beyond 'by ID'.

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 states the verb 'Retrieve', resource 'order details', and identifier 'by ID', distinguishing it from siblings like 'get_orders'.

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 vs alternatives like 'detail' or 'get_orders'; no prerequisites or context provided.

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

get_ordersB

Retrieve a list of orders with optional filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoStart date for limiting results (Inclusive). Format: YYYY-MM-DD HH:MM:SS
limitNoMaximum number of records. Maximum/Default: 50
startNoStart index. Default: 0
beforeNoEnd date for limiting results (Non-Inclusive). Format: YYYY-MM-DD HH:MM:SS

TDQS

B3.1/5.0
Behavior2/5

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

No annotations present, so the description must disclose behaviors. It only says 'retrieve', which implies read-only, but does not mention pagination, sorting, or any side effects. Schema provides some constraints but description adds no 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 sentence, no redundancy. All words are necessary.

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?

Minimal for a list tool with no output schema. Could specify default sort order or response format. Adequate but not complete given 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 coverage is 100% with clear descriptions for each parameter. The description's 'optional filtering' adds no new meaning. 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 the action and resource: 'Retrieve a list of orders'. It mentions optional filtering, which distinguishes it from 'get_order' (single order) but not from 'search' (which may offer more complex queries).

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 siblings like 'search' or 'get_order'. The description only states what it does, not when it's appropriate.

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

pay_invoiceA

Pay an unpaid invoice (only works with 'balance' payment method)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique invoice identifier

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description must disclose behavioral traits. It reveals that the tool is a mutating action (pay) and the payment method constraint, but lacks details on idempotency, error states, or 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently communicates the action and a critical constraint with no extraneous 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?

For a simple tool with one parameter and no output schema, the description covers the essential function and constraint. It lacks details on return value or side effects, but the context signals indicate low complexity, making it mostly 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 100% with a description for the 'id' parameter. The tool description adds no additional parameter information, so it meets the baseline without improvement.

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 specifies the action 'pay' on resource 'invoice', and adds the key constraint that it only works with 'balance' payment method, distinguishing from other invoice operations.

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 states a clear usage condition (only works with 'balance' method), but does not explicitly mention when not to use or suggest alternatives like other payment methods.

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

pingA

Check if the Bitrefill API is available

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

The description indicates a non-destructive health check, but with no annotations, it lacks details about the response format (e.g., boolean or status object). The behavioral intent is clear but not fully disclosed.

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, straightforward sentence with no unnecessary words. Perfectly concise for the tool's trivial scope.

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 health-check tool with no parameters or output schema, the description is nearly complete. It could mention the expected return type, but the current description is sufficient for most use cases.

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?

There are zero parameters, and the schema coverage is 100% by default. The description adds no parameter info, which is acceptable given no parameters exist. Baseline score of 4 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 uses a specific verb ('check') and resource ('Bitrefill API availability'), clearly distinguishing it from sibling tools that deal with categories, invoices, orders, etc.

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 search or get_order. The description does not mention prerequisites or the tool's role in a workflow.

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

unseal_orderB

Reveal codes and PINs for a specific order by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique order identifier

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 full burden. It states 'Reveal' but does not disclose potential side effects, access restrictions, logging implications, or whether this is a read-only operation. For a tool that exposes sensitive data, 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.

Conciseness4/5

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

The description is a single, clear sentence with no waste. It is appropriately front-loaded and efficient for a simple 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?

No output schema is provided, so the description should explain the return format. It only mentions 'codes and PINs' without structure or error handling. For a sensitive operation involving revealing data, more completeness 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 coverage is 100% for the single parameter 'id', which is described as 'Unique order identifier'. The description adds no additional meaning beyond the schema, so baseline score of 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 ('Reveal'), the resource ('codes and PINs for a specific order'), and the parameter ('by ID'). It distinguishes from siblings like get_order which likely returns general order info without sensitive codes.

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 vs alternatives like get_order or detail. No prerequisites, exclusions, or context about sensitivity are provided.

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 updatesv0.3.0
    • First observedcategories
    • First observedcreate_invoice
    • First observeddetail
    • First observedget_account_balance
    • First observedget_invoice
    • First observedget_invoices
    • First observedget_order
    • First observedget_orders
    • First observedpay_invoice
    • First observedping
    • First observedsearch
    • First observedunseal_order

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a distinct operation: browsing categories, searching products, getting details, managing invoices and orders, checking balance, and pinging. No two tools overlap in purpose.

Naming Consistency4/5

Most tools follow a verb_noun pattern (e.g., create_invoice, get_invoice, pay_invoice), but 'categories', 'detail', and 'ping' deviate slightly. Overall, names are understandable and predictable.

Tool Count5/5

12 tools cover the core workflow of a purchase platform without being excessive. Each tool serves a clear role, and the count is well-scoped for the domain.

Completeness4/5

The tool set covers the full purchase lifecycle: browsing, product details, account balance, invoicing, payment, order retrieval, and order fulfillment. Minor gaps like cancellation or refund are absent but not critical for typical use.

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

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/mcpflow/bitrefill-mcp-server'

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