POST /v1/opportunities/search with a JSON body containing 'pipeline_id', 'pipeline_stage_id' filters, and date range conditions to retrieve filtered opportunities
Paginate using 'page_size' and 'page_number' parameters until no records are returned
For each opportunity, extract 'company_id' and GET /v1/companies/{id} to fetch the related company record including industry and employee count fields
Aggregate opportunities by stage and compute win rate (closed-won count / total closed count) grouped by company industry in application code
Cross-reference with GET /v1/pipeline_stages?pipeline_id={id} to map stage IDs to display names for reporting
Known gotchas
Copper's API uses X-PW-AccessToken and X-PW-Application (set to 'developer_api') and X-PW-UserEmail headers for authentication; omitting the X-PW-UserEmail header returns a 401 even with a valid token
The Copper search endpoint for opportunities does not support server-side aggregation — all grouping, summing, and win-rate calculations must be performed client-side after retrieving raw records
Copper rate limits are applied per user email (the X-PW-UserEmail header value); distributing requests across multiple user credentials is not a supported workaround and may violate terms of service
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