Build AI agents that access live, trusted product data.

TrustRails standardises messy retailer feeds into one predictable source: 26,000+ deduplicated UK electronics products across 7 retailers. Connect an agent over MCP, or query the REST API and SDK directly.

Connect via MCP

Why use TrustRails?

Without TrustRails → 20 feeds, 10 CSV formats, constant breakage
With TrustRails → 1 API, 1 schema, live structured data

Save weeks of integration time and focus on building your project, not babysitting product feeds.

MCP quickstart

Two ways to connect an agent, both live today. Use the hosted endpoint if your client supports remote MCP servers over HTTP; use the npm package if it only supports local (stdio) servers. That includes the free tier of Claude Desktop.

Option A: hosted endpoint (no install)

https://trustrails.app/api/mcp: MCP over JSON-RPC 2.0, no API key required, rate limited to 50 requests/hour per IP.

Claude Code:

claude mcp add --transport http trustrails https://trustrails.app/api/mcp

Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "trustrails": {
      "url": "https://trustrails.app/api/mcp"
    }
  }
}

Claude Desktop: remote HTTP servers are added under Settings → Connectors → Add custom connector, pasting the URL above (paid plans). On the free plan, or for any client without remote MCP support, use the npm package below instead.

Option B: npm package (stdio, works with every MCP client)

@trustrails/mcp-server calls the same public API over HTTP, run locally via npx. Add this block to Claude Desktop's claude_desktop_config.json or Cursor's .cursor/mcp.json:

{
  "mcpServers": {
    "trustrails": {
      "command": "npx",
      "args": ["-y", "@trustrails/mcp-server"],
      "env": {
        "TRUSTRAILS_API_KEY": "mcp-public-2026"
      }
    }
  }
}

Or for Claude Code:

claude mcp add trustrails -e TRUSTRAILS_API_KEY=mcp-public-2026 -- npx -y @trustrails/mcp-server
Env varDefault
TRUSTRAILS_API_KEYmcp-public-2026
TRUSTRAILS_BASE_URLhttps://trustrails.app

Tools (identical on both):

  • search_products filters by query, brand, category, and price range. Results include an offer count so agents can surface cross-retailer price comparisons.
  • get_product returns full specs, stock, delivery time, and every retailer's price for one product ID.

REST API & SDK quickstart

Install first:

npm install @trustrails/sdk
import TrustRails from "@trustrails/sdk";

const trustrails = new TrustRails(process.env.TRUSTRAILS_KEY);
// The SDK sets Authorization: Bearer <TRUSTRAILS_KEY> automatically

async function main() {
  // Use query to refine within brand + category (model lines, variants, series names)
  const res = await trustrails.search({
    brand: "Samsung",
    category: "TVs",
    query: "qled",   // narrows to Samsung QLED TVs specifically
    maxPrice: 1000,
  });
  console.log(res.products);
  // [{
  //   id: "samsung-qled-001",
  //   title: "Samsung 55\" QLED 4K Smart TV",
  //   brand: "Samsung",
  //   price: 799,
  //   availability: "in_stock",
  //   category: "TVs",
  //   product_type: "product",
  //   ...
  // }]
}

main();

Or use cURL:

curl -s "https://trustrails.app/api/search?brand=Samsung&category=TVs&query=qled&max_price=1000" \
  -H "Authorization: Bearer $TRUSTRAILS_KEY"

When to use query: Use it to refine within a brand and category - model lines, series names, variants, or model numbers. Examples: query="qled", query="neo", query="WH-1000XM5". Never put category names (query="tablet" → use category="Tablets"), brand names, product family names (MacBook, Galaxy, ThinkPad), or prices in query - use the brand, category, and min_price/max_price filters instead.

See Auth & rate limits below for keys, rate limits, and contact options. Or try the Live Explorer (no auth required).

API Endpoints

EndpointDescriptionExample
GET /api/searchSearch products. Returns summary data (title, price, availability). For full specs, use /api/product/[id]/api/search?brand=HP&category=Laptops&lite=true
GET /api/product/[id]Full details: complete specs, description, stock, delivery, and retailer source/api/product/usb001
POST /api/mcpMCP protocol endpoint (JSON-RPC 2.0). No auth required. Exposes search_products and get_product as tools.see MCP quickstart above
GET /api/healthCheck API status (no auth)/api/health

Auth & rate limits

  • REST endpoints (/api/search, /api/product/[id]) require an Authorization: Bearer <key> header. The public key mcp-public-2026 works out of the box.
  • MCP (/api/mcp) and Explorer endpoints need no key at all, but are still rate limited.
  • Rate limit: 50 requests/hour per IP on every key/endpoint above. Responses carry X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.
  • /api/health is open and not rate limited.
  • Need a higher limit? Contact us for a production key.

Errors

Errors return a flat JSON object with an error string:

401 Unauthorized

{
  "error": "Unauthorized"
}

429 Rate limited

{
  "error": "Rate limit exceeded",
  "resetAt": "2026-09-24T15:00:00.000Z"
}

400 Validation error

{
  "error": "Invalid min_price parameter"
}