Quickstart
From nothing to first call.
Call the endpoint the SDK wraps
Until the packages ship, this is the request the client makes for you. Pick your language.
POST /api/mcp
TypeScript
# @parcelops/sdk is not on npm yet.
# The TypeScript client is a wrapper over this request:
fetch("https://parcelops.ai/api/mcp", {
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "tools/list" }),
});Sign in
Sign in with the CLI, or create a personal access token. Pass any ParcelOps access token to the SDK as accessToken.
parcelops login
Terminal
# Browser OAuth, stores a refreshable session
parcelops login
# ...or use a personal access token
parcelops config set-token po_pat_xxxxxxxxCall connectors from your app
Both SDKs wrap the same MCP tools. List tools, run connector calls, and read back results, logs, and timing.
@parcelops/sdk
TypeScript
import { ParcelOpsMcpClient, ParcelOpsInvokeClient } from "@parcelops/sdk";
// Reuse the access token from your CLI session or OAuth flow.
const mcp = new ParcelOpsMcpClient({
baseUrl: "https://parcelops.ai",
accessToken,
});
await mcp.discover();
const { tools } = await mcp.listTools();
// Structured connector call: connector + method + args.
const invoke = new ParcelOpsInvokeClient({
baseUrl: "https://parcelops.ai",
accessToken,
});
const report = await invoke.invoke({
connector: "property-dossier",
method: "getPropertyDossier",
args: { address: "<street>, <city>, <state>" },
});
// Every section carries its own status and sources.
console.log(report.result);What you get
Typed clients
TypeScript and Python clients wrap the same MCP tools. No networking code to write.
Same tools as the CLI
List tools and run connector calls the same way in both languages.
Bring your own auth
Reuse the access token from your CLI session, or wire in your own OAuth flow.
