Deploy Parca server with a scrape configuration pointing to Parca Agent running as a DaemonSet; the agent collects eBPF-based CPU profiles from all processes on the node
Access the Parca gRPC API using the QueryService defined in the parca/query/v1alpha1 proto; connect with a gRPC client pointed at the Parca server address
Call QueryService.QueryRange to retrieve profile data over a time window; supply a matchers string using the Parca query language (similar to Prometheus label selectors) such as {job='my-service', __name__='process_cpu'}
Call QueryService.Query to retrieve a single merged profile for an instant or range; use ReportType REPORT_TYPE_FLAMEGRAPH_TABLE to get structured flamegraph data as a proto response
Parse the flamegraph response to extract function names, cumulative values, and flat values for rendering or aggregation in your tooling
Use the HTTP-based REST gateway (if enabled) as an alternative to gRPC for simpler integration: GET /api/query with query and start/end parameters
Known gotchas
Parca Agent requires CAP_BPF and CAP_PERFMON kernel capabilities (or running as privileged) to load eBPF programs; pods without these capabilities will fail to start the agent silently in restricted Kubernetes environments
The Parca query language uses label matchers similar to PromQL but the profile type is encoded in the __name__ label with a format like <job>:<profile_type>:<aggregation>; the exact format depends on how profiles were ingested
Parca stores profiles in object storage (S3 or local disk); querying very long time ranges triggers compaction reads that can be slow — restrict range queries to intervals with available block data
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp