MCP 2025-03-26 · Live

ConvertRails
MCP Server

Version 1.0 · Protocol: MCP 2025-03-26 · Last updated: 2026-03-24

The ConvertRails MCP server enables AI assistants — Claude, Claude Code, Claude Desktop, and any MCP-compatible client — to discover and purchase digital products (API keys, MCP server licenses, software subscriptions) from independent developers and SaaS merchants, entirely within the conversation.

Contents
  1. Server information
  2. Authentication
  3. Tools
  4. Resources
  5. Prompts
  6. Setup instructions
  7. Worked examples
  8. Error handling
  9. Privacy & compliance

Server information

FieldValue
Server URLhttps://mcp.convertrails.com (also: https://api.convertrails.com/mcp)
TransportStreamable HTTP — JSON-RPC 2.0 over POST /mcp
MCP protocol version2025-03-26
AuthenticationOAuth 2.0 (authorization_code + PKCE). Optional for read-only tools; required for create_checkout.
OAuth discoveryhttps://api.convertrails.com/.well-known/oauth-authorization-server

Authentication

Authentication is not required to browse and search products. Buyers only need to authenticate to create a checkout session. Authentication uses standard OAuth 2.0 authorization code flow with PKCE.

EndpointURL
Authorizationhttps://api.convertrails.com/oauth/authorize
Tokenhttps://api.convertrails.com/oauth/token
Revocationhttps://api.convertrails.com/oauth/revoke
Token lifetime90 days
Scopesproducts:read, checkout:create

During authorization the user provides their email address. This email is used to deliver the license key after payment. No password is required.

Tools

search_products readOnly

Search for digital products across all ConvertRails merchants. Returns up to 50 results per page with prices and purchase identifiers. Supports pagination.

ParameterTypeRequiredDescription
querystringYesKeywords, product name, or category (e.g. "markdown editor", "mcp server", "api key")
limitintegerNoResults per page — 1–50, default 10
pageintegerNoPage number (1-based), default 1

Returns: { results[], total, page, limit, query, hint } — each result includes merchant_id, sku, name, description, price, currency, type.

get_product readOnly

Retrieve full details for a specific product by merchant ID and SKU.

ParameterTypeRequiredDescription
merchant_idstringYesMerchant ID (from search_products)
skustringYesProduct SKU (from search_products)

Returns: Full product record including name, description, price, currency, type, fulfillment.

create_checkout destructive

Create a Stripe-hosted checkout session for a product. Returns a checkout_url — the assistant should direct the user to open this URL in their browser to complete payment. License keys are delivered by email immediately after payment.

ParameterTypeRequiredDescription
merchant_idstringYesMerchant ID (from search_products)
skustringYesProduct SKU (from search_products)
buyer_emailstringNoBuyer email for license delivery — strongly recommended so the key is pre-filled

Returns: { checkout_url, session_id, expires_at, instructions }

get_order_status readOnly

Check the status of an existing order by session ID or order ID.

ParameterTypeRequiredDescription
order_idstringYessession_id or order_id from create_checkout

Returns: { found, status, product_sku, buyer_email, completed_at, provisioned }

Resources

convertrails://catalog

The full product catalog as a JSON resource — all active merchants and their products. Returns up to 300 products. Response includes total, returned, and truncated flags.

{
  "products": [
    {
      "merchant_id": "acme-corp",
      "seller": "acme",
      "sku": "pro-license",
      "name": "Acme Pro License",
      "price_cents": 4900,
      "currency": "EUR",
      "type": "one_time"
    }
  ],
  "total": 42,
  "returned": 42,
  "truncated": false,
  "generated_at": "2026-03-24T10:00:00.000Z"
}

Prompts

NameDescriptionArguments
convertrails_buyHelp the user purchase a specific productproduct_name (optional)
convertrails_catalogBrowse available products in the marketplace

Setup instructions

Claude.ai

  1. Open claude.aiSettings → Integrations → MCP Servers
  2. Click Add server and enter: https://mcp.convertrails.com
  3. Claude will auto-discover tools. No further configuration needed.
  4. In any conversation: "search ConvertRails for [product type]"

Claude Code (CLI)

claude mcp add convertrails https://mcp.convertrails.com

Claude Desktop (JSON config)

{
  "mcpServers": {
    "convertrails": {
      "url": "https://mcp.convertrails.com/mcp"
    }
  }
}

GitHub Copilot (VS Code / JetBrains / Visual Studio)

Requires Copilot Business or Copilot Enterprise. Your organization must have "MCP servers in Copilot" policy enabled.

Add to your VS Code settings.json or repository .github/copilot/mcp.json:

{
  "servers": {
    "convertrails": {
      "url": "https://mcp.convertrails.com",
      "type": "http"
    }
  }
}

For the Copilot coding agent, use a repository-level config at .github/copilot/mcp.json. OAuth-based auth is supported for Copilot Chat; the coding agent requires no-auth or PAT configurations.

Microsoft 365 Copilot (Declarative Agent)

Use the ConvertRails plugin manifest to connect as a declarative agent extension:

https://convertrails.com/plugin-manifest.json

In your agent manifest, add a runtime entry:

{
  "runtimes": [{
    "type": "RemoteMCPServer",
    "spec": {
      "url": "https://mcp.convertrails.com"
    },
    "auth": { "type": "OAuthPluginVault" }
  }]
}

Note: Microsoft Security Copilot only imports read-only tools (search_products, get_product, get_order_status). The create_checkout tool is excluded from Security Copilot per Microsoft's policy for destructive tools.

npx bridge (for stdio-only clients)

npx @convertrails/mcp

Worked examples

Example 1 — Discovery: "Find me a markdown editor CLI tool"

Claude calls:

search_products({ "query": "markdown editor CLI", "limit": 5 })

Response:

{
  "results": [{
    "merchant_id": "indie-dev-42",
    "sku": "mdx-pro",
    "name": "MDX Pro — Markdown CLI",
    "description": "Fast terminal-based markdown editor with live preview",
    "price": "€12.00",
    "currency": "EUR",
    "type": "one_time"
  }],
  "total": 1,
  "hint": "Found 1 product(s). Use create_checkout with merchant_id and sku to purchase."
}

Claude: "I found MDX Pro — Markdown CLI for €12. Would you like to buy it?"

Example 2 — Purchase: "I want to buy that tool"

Claude calls:

create_checkout({
  "merchant_id": "indie-dev-42",
  "sku": "mdx-pro",
  "buyer_email": "user@example.com"
})

Response:

{
  "session_id": "cs_live_a1B2c3D4e5F6...",
  "checkout_url": "https://checkout.stripe.com/c/pay/cs_live_a1B2c3...",
  "expires_at": "2026-03-24T10:30:00.000Z",
  "instructions": "Open the checkout link to complete payment. Your license key will be emailed to user@example.com immediately after payment."
}

Claude: "Here's your checkout link — it expires in 30 minutes. Your license key will arrive at user@example.com as soon as payment is confirmed."

Example 3 — Browse: "What developer tools are available under €20?"

Claude calls:

search_products({ "query": "developer tools", "limit": 10 })

Claude filters client-side for price_cents <= 2000 and presents: "I found 2 developer tools under €20: Git Companion Pro (€9) and JSON Wizard CLI (€15)."

Error handling

All errors follow JSON-RPC 2.0 error format. Tool errors are returned as successful JSON-RPC responses with isError: true in the result so the assistant can read and relay the message to the user.

ErrorCause
query is requiredsearch_products called without query
Merchant not foundmerchant_id is inactive or doesn't exist
Product not found: {sku}sku not in merchant's catalog
Checkout service unavailableTransient upstream error — retry once
Order not foundOrder ID may still be pending or incorrect

Privacy & compliance

Full privacy policy: convertrails.com/datenschutz
Support & questions: steffen@convertrails.com