Quickstart: Raw JSON-RPC

Pipeworx is an HTTP MCP gateway. Any client that can POST JSON-RPC 2.0 to a URL talks to it. No SDK required.

Endpoint

https://gateway.pipeworx.io/mcp

Or scoped variants:

https://gateway.pipeworx.io/<pack>/mcp        # one pack
https://gateway.pipeworx.io/mcp?task=...      # task-scoped
https://gateway.pipeworx.io/mcp?vertical=...  # vertical-scoped

List tools

curl -X POST https://gateway.pipeworx.io/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
  | jq '.result.tools[].name'

Call a tool

curl -X POST https://gateway.pipeworx.io/mcp \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "ask_pipeworx",
      "arguments": { "question": "What is the US trade deficit with China?" }
    }
  }'

The response shape:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{ "type": "text", "text": "<JSON-stringified tool output>" }],
    "_meta": {
      "tier": "anonymous",
      "rateLimit": { "limit": 50, "remaining": 49, "resetAt": "..." },
      "cost": { "total": 1, "components": [...] },
      "cache": { "hit": false, "ttl_seconds": 300, "fresh_until": "..." }
    }
  }
}

result.content[0].text is a JSON string — parse it.

Other MCP methods

MethodPurpose
initializeReturns server capabilities + instructions (read these — they tell agents how to use Pipeworx best)
tools/listList tools (with inputSchema.examples and outputSchema)
tools/callInvoke a tool
resources/templates/listList pipeworx:// URI patterns
resources/readFetch a pipeworx://... resource
prompts/listList server-side prompt playbooks
prompts/getGet a prompt with arguments substituted

Authentication

TierHow
Anonymous (50/day)No auth
BYO key (500/day)X-API-Key: your-key header
Free account (2,000/day)Authorization: Bearer <token> (GitHub OAuth signup at pipeworx.io)
Paid (unlimited)Authorization: Bearer <token> (Stripe subscription)

Pass tool-specific API keys

For paid data sources (FRED, ATTOM, Altos), pass keys in the call args:

{
  "name": "fred_get_series",
  "arguments": {
    "series_id": "MORTGAGE30US",
    "_apiKey": "your-fred-api-key"
  }
}

The _apiKey arg is stripped from analytics — it’s not logged.

TypeScript shortcut: @pipeworx/sdk

If you’re in JS/TS, the SDK wraps all of this:

import { Pipeworx } from '@pipeworx/sdk';
const pw = new Pipeworx();
const result = await pw.call('fred_get_series', { series_id: 'MORTGAGE30US' });
npm install @pipeworx/sdk

Last reviewed May 8, 2026