8 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.
Delete saved report
reports.delete_savedwriteconfirm
Permanently delete a saved report definition. If it was shared, it disappears for the whole account. The underlying data is untouched — only the saved definition is removed — but this cannot be undone. Only the report's creator or an account admin can delete one.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool reports_delete_saved at https://app.chirply.io/api/mcp, same bearer token, same input.
Browse report options
reports.describe_catalogread
List the report catalog: every dataset the report builder can query, with its available dimensions, metrics, and filters. Read this first to build a valid reports.run call.
Over MCP the same operation is the tool reports_describe_catalog at https://app.chirply.io/api/mcp, same bearer token, same input.
Saved reports
reports.list_savedread
List the saved report definitions this caller can see: reports shared with the account plus their own. Account admins (and API keys) see every saved report in the organization.
Over MCP the same operation is the tool reports_list_saved at https://app.chirply.io/api/mcp, same bearer token, same input.
Report email schedules
reports.list_schedulesread
List the standing email schedules for saved reports: which saved report, its daily/weekly/monthly cadence, the recipient emails, whether it's on, when it last sent, and any delivery error. Members see the schedules they created; account admins (and API keys) see every schedule. Read-only.
Over MCP the same operation is the tool reports_list_schedules at https://app.chirply.io/api/mcp, same bearer token, same input.
Run report
reports.runread
Run a custom report over one of the curated datasets — contacts (Contacts), deals (Deals), calls (Calls), messages (Messages), appointments (Appointments), revenue (Revenue) — bucketed by day/week/month or as totals, optionally split by one dimension, with 1–3 metrics and the dataset's filters. Returns table rows and a chart-ready series. Read-only; money figures are integer cents.
Which curated dataset to report on. One of: contacts (Contacts), deals (Deals), calls (Calls), messages (Messages), appointments (Appointments), revenue (Revenue). Each dataset declares its own dimensions, metrics, and filters — discover them with reports.describe_catalog.
time_bucket
"day" | "week" | "month" | "total"
optional
How to bucket time: day, week, month, or total for a single all-period rollup. Default: "day"
1–3 metric keys from the chosen dataset (e.g. deals: created/won/lost/value/won_value/avg_value).
filters
map of string → string
optional
Optional filters from the dataset's declared list (e.g. deals: date_basis/pipeline/owner/status). Unknown keys are rejected with the valid choices. Default: {}
The date range: last_7_days, last_30_days, last_90_days, this_month, last_month, this_year, all_time, or custom with range_from/range_to. Default: "last_30_days"
range_from
string
optional
Custom range start date, YYYY-MM-DD (inclusive). Only with range_preset=custom.
range_to
string
optional
Custom range end date, YYYY-MM-DD (inclusive). Only with range_preset=custom.
Over MCP the same operation is the tool reports_run at https://app.chirply.io/api/mcp, same bearer token, same input.
Save report
reports.savewrite
Save a report definition so it can be re-run later, or update an existing saved report when an id is given. Setting shared=true makes it visible to every member of the account. The definition is validated against the report catalog before it is stored. Only the report's creator or an account admin can update one.
Parameters
Field
Type
Required
Description
id
string (uuid)
optional
An existing saved report to update. Omit to create a new one.
name
string
required
The saved report's name, shown in the saved-reports list.
shared
boolean
optional
true = every account member sees it; false = only you (and admins). Default: false
Which curated dataset to report on. One of: contacts (Contacts), deals (Deals), calls (Calls), messages (Messages), appointments (Appointments), revenue (Revenue). Each dataset declares its own dimensions, metrics, and filters — discover them with reports.describe_catalog.
time_bucket
"day" | "week" | "month" | "total"
optional
How to bucket time: day, week, month, or total for a single all-period rollup. Default: "day"
1–3 metric keys from the chosen dataset (e.g. deals: created/won/lost/value/won_value/avg_value).
filters
map of string → string
optional
Optional filters from the dataset's declared list (e.g. deals: date_basis/pipeline/owner/status). Unknown keys are rejected with the valid choices. Default: {}
The date range: last_7_days, last_30_days, last_90_days, this_month, last_month, this_year, all_time, or custom with range_from/range_to. Default: "last_30_days"
range_from
string
optional
Custom range start date, YYYY-MM-DD (inclusive). Only with range_preset=custom.
range_to
string
optional
Custom range end date, YYYY-MM-DD (inclusive). Only with range_preset=custom.
Over MCP the same operation is the tool reports_save at https://app.chirply.io/api/mcp, same bearer token, same input.
Email report now
reports.send_scheduled_nowwriteconfirm
Immediately runs one saved report and emails its current results — a REAL email to the given addresses, sent through the workspace's own connected email account (Mailgun/Resend, on the org's bill). Up to 20 addresses per send. Only works on a saved report the caller can see: one shared with the workspace, one they saved themselves, or any of them for a workspace admin. Omit recipients to use the ones saved on the report's email schedule. Does not move the schedule's clock: the next scheduled send still happens on time.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
saved_report_id
string (uuid)
required
The saved report to run and email. Ids come from reports.list_saved.
recipients
string[]
optional
Where to send it. Omit to use the recipients saved on the report's email schedule.
Over MCP the same operation is the tool reports_send_scheduled_now at https://app.chirply.io/api/mcp, same bearer token, same input.
Email this report on a schedule
reports.set_schedulewrite
Create or update the ONE standing email schedule for a saved report: cadence ('daily' sends every day (UTC); 'weekly' sends every Monday (UTC); 'monthly' sends on the 1st of each month (UTC) — all UTC), the addresses it goes to, and whether it's on. Enabling it means the report's CURRENT results are emailed to those addresses automatically — real email through the workspace's own connected email account (Mailgun/Resend, on the org's bill) — until it is paused. No email is sent by this call itself. Only the schedule's creator or a workspace admin can change an existing one.
Parameters
Field
Type
Required
Description
saved_report_id
string (uuid)
required
The saved report to email. Ids come from reports.list_saved; the caller must be able to see the report.
cadence
"daily" | "weekly" | "monthly"
optional
How often it goes out: 'daily' sends every day (UTC); 'weekly' sends every Monday (UTC); 'monthly' sends on the 1st of each month (UTC). Periods are UTC. Default: "weekly"
recipients
string[]
required
The email addresses the report is delivered to (up to 20). Invalid or duplicate addresses are dropped; more than 20 is refused rather than truncated.
enabled
boolean
optional
true starts sending on schedule (needs at least one valid recipient); false pauses without losing the configuration. Default: true