Quick start
Fire your first request, chain a token into a protected call, then drill into a large response - all within a small token budget.
1. Send a REST request
Ask the agent to call http_request. The tool returns a token-efficient summary by default; full payloads are referenced by a handle.
{
"tool": "http_request",
"input": {
"method": "POST",
"url": "https://api.example.com/login",
"headers": { "Content-Type": "application/json" },
"body": { "user": "a", "pass": "{{secret_pass}}" },
"assert": [{ "status": 200 }, { "jsonpath": "$.token", "exists": true }],
"extract": { "token": "$.token" }
}
}Response:
{
"status": 200,
"timeMs": 142,
"assertions": { "passed": 2, "failed": 0 },
"extracted": { "token": "***redacted***" },
"bodySummary": { "type": "object", "keys": ["token", "expiresIn"] },
"responseHandle": "resp_a1b2"
}2. Chain the token into a protected call
Extracted values become {{vars}} you can reuse in later calls. The agent does not need to copy-paste anything.
{
"tool": "http_request",
"input": {
"url": "https://api.example.com/me",
"auth": { "type": "bearer", "token": "{{token}}" }
}
}3. Inspect a large response
When a response is too large to inline, pass the handle toinspect_response with an RFC 9535 JSONPath. Filters andmaxItems truncation keep the output small.
{
"tool": "inspect_response",
"input": {
"handle": "resp_a1b2",
"jsonpath": "$.items[?@.id==1]",
"maxItems": 5
}
}4. Discover a GraphQL schema
graphql_introspect returns an enriched schema: field signatures, one-level nested fields, inline input types, and enum values - so the agent can pick operations without pasting docs.
{
"tool": "graphql_introspect",
"input": { "url": "https://api.example.com/graphql" }
}5. Open a WebSocket session
Bounded sessions connect, send messages, and collect frames until a stop condition - then return a summarized batch with assertion results.
{
"tool": "ws_session",
"input": {
"url": "wss://stream.example.com",
"send": [{ "json": { "type": "subscribe", "topic": "prices" } }],
"collect": { "maxMessages": 20, "maxDurationMs": 5000 },
"assert": [{ "anyFrame": { "jsonpath": "$.type", "equals": "ack" } }]
}
}Ready for the full surface? See MCP tools.