Quickstart: the command line

Not every workflow runs inside an MCP client. If you live in a terminal — shell scripts, cron jobs, a coding agent that shells out — you can call any Pipeworx tool directly and get JSON back.

npx pipeworx@latest call adzuna_search --country=us --what="solutions engineer" | jq .count

No install, no account, no key. Most tools answer anonymously.

Find a tool

The catalog is large, so start by narrowing it:

npx pipeworx@latest tools --grep "job postings"

Every name it prints can be passed straight to call. That matters more than it sounds: a pack’s internal tool name is not always the name the gateway accepts — Adzuna publishes its search tool as search, but because that name collides across packs the gateway exposes it as adzuna_search. pipeworx tools always prints the name that works.

Call it

# Arguments as flags — numbers and booleans are coerced
npx pipeworx@latest call adzuna_search --country=us --what=engineer --results_per_page=5

# Or as JSON, when a value must stay a string (zip codes, IDs with leading zeros)
npx pipeworx@latest call adzuna_search --json '{"country":"us","what":"engineer"}'

Ask a question in plain language instead of picking a tool, and let the router choose:

npx pipeworx@latest call ask_pipeworx --question="What is the US trade deficit with China?"

It composes

call writes the tool’s JSON to stdout and everything else — errors, warnings, counts — to stderr, so it behaves in a pipeline:

# Pipe to jq
npx pipeworx@latest call adzuna_search --country=us --what=nurse | jq -r '.results[].title'

# Fail loudly in a script: a tool error exits non-zero
if ! npx pipeworx@latest call adzuna_search --country=us --what=nurse > jobs.json; then
  echo "lookup failed" >&2
  exit 1
fi

Authentication

Anonymous calls are rate-limited by IP. To lift that, pass a key from your account:

export PIPEWORX_API_KEY=your_key_here
npx pipeworx@latest call adzuna_search --country=us --what=engineer

# or per-call
npx pipeworx@latest call adzuna_search --api-key your_key_here --country=us --what=engineer

The CLI deliberately does not store your key on disk — set it in your environment like any other credential.

Options

FlagMeaning
--key=valueOne tool argument. Numbers and booleans are coerced.
--json '<object>'All arguments as JSON. Individual --key=value flags override it.
--pack <slug>Call a pack’s own endpoint instead of the router.
--api-key <key>Send a key for this call (or set PIPEWORX_API_KEY).
--timeout <secs>Client timeout, default 90.

If you would rather not use the CLI

Everything above is one HTTP POST. The CLI is a convenience, not a requirement — see Raw JSON-RPC for the same calls as plain curl, which is what you want for a language with no Node.js in the picture.

curl -sX POST https://gateway.pipeworx.io/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"adzuna_search","arguments":{"country":"us","what":"engineer"}}}' \
  | jq -r '.result.structuredContent.count'

Last reviewed August 26, 2026