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
| Flag | Meaning |
|---|---|
--key=value | One 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'
Related
- Raw JSON-RPC — the same thing with
curl, any language - Pipeworx 101 — what the gateway is and how routing works