Skip to main content
Discover tools on demand instead of loading hundreds into context.
  1. Discovercapabilities_discover with a task description
  2. Installcapability_details with tool names (map to your model’s function-calling format)
  3. Invoketools/call on the server path
Both discovery tools live on /pinkfish-sidekick. For full parameter schemas, see the Pinkfish Workflow Building server reference.

End-to-End Example

Node.js 18+ or browser. Python: requests.post() with same JSON-RPC payload.

capabilities_discover

Describe the task; get matching tools and connections.
Parameters: Response:

capability_details

Pass tool names; get full parameter schemas.
Parameters:

Key Points

  • Embedded tools: no PCID required. Application tools: use PCID from discovery or see Connecting to MCPs.
  • Pass tool.name to capability_details, not serverName.
  • Install only what the user needs (typically 1–5 tools per task).

Custom Agents

Bootstrap with these two discovery tools. On user task: discover → fetch schemas → map to your model’s function-calling format → add to agent context. Route model tool calls through tools/call.

Fixed tool sets — invoke via gateway_invoke

The example above invokes a discovered tool by calling tools/call directly on its server path (/${serverName}). That works when your agent can issue arbitrary HTTP calls at runtime. Many agents can’t: no-code and low-code agent platforms have a fixed set of pre-registered tools and no way to add an endpoint per discovered tool. For these, register three fixed tools and route every discovered tool through gateway_invoke on /gateway, which dispatches internally by server + tool:
So the three tools you give the agent are: capabilities_discover and capability_details (both on /pinkfish-sidekick), and gateway_invoke (on /gateway). The agent never calls a discovered tool directly — it passes the discovered serverName/name into gateway_invoke. See Gateway for the full meta-tool set and the Bring Your Own Agent prompt variant.
If your platform’s tools are strongly typed and can’t express a nested arguments object, pass gateway_invoke’s arguments as a JSON string and have the tool inject it into the request body so it renders as real JSON.

Two invocation modes at a glance

Code Execution Shortcut

Code Execution chains tools without installing them. Discover tools, then pass tool calls into a single code-execution_execute invocation.