create_client, list_projects,
add_data_widget — so an agent can guess the right one from the action.
Tool catalog
Account
| Tool | What it does |
|---|---|
get_account | Get account details for the authenticated user |
get_account_usage | Get current account usage stats (clients, projects, users, storage) |
Activity
| Tool | What it does |
|---|---|
list_activity | List the account activity / audit log (who changed what), paginated and filterable. |
API keys
| Tool | What it does |
|---|---|
list_api_keys | List the account’s API keys (prefixes + status only — the full key is never returned after creation). |
revoke_api_key 🔒 | Revoke an API key (soft — it stops working but stays listed as revoked). |
delete_api_key 🔒 | Permanently delete an API key record. |
Archive
| Tool | What it does |
|---|---|
list_archive | List soft-deleted (archived) items across clients, projects, media, automations and templates. |
get_archive_counts | Get the count of archived items per type. |
restore_from_archive | Restore archived items of one type back to active. |
Assets
| Tool | What it does |
|---|---|
list_assets | List saved widget-section assets for the account (with optional filters). |
get_asset | Get a single asset by ID. |
create_asset | Save widgets as a reusable section, the same way the editor does when you select widgets and save them: each widget is copied onto the section with a fresh id, and its type and datasources are… |
update_asset | Update asset metadata. Only include fields you want to change. |
archive_asset 🔒 | Archive a saved section and its widget rows. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back. |
duplicate_asset | Duplicate an asset (and its widgets) under a new name. |
list_asset_widgets | List the widgets that belong to an asset (useful for previewing what add_asset_to_page will instantiate). |
add_asset_to_page | Instantiate an asset’s widgets onto a project page. |
list_asset_tags | List every tag used across the account’s saved sections (useful for filtering list_assets by tag). |
Automations
| Tool | What it does |
|---|---|
list_automations | List automations with optional filtering by project or client |
get_automation_history | Get send history for an automation |
create_automation | Create a new automation. Pick an existing email template + sender by id (from email_templates / email_senders), or pass template_id:“custom” together with a custom payload to save a new named… |
update_automation | Update an existing automation — only include the fields you want to change |
archive_automation 🔒 | Archive an automation, stopping its scheduled deliveries. restore_from_archive brings it back, rescheduled. |
pause_automation | Pause an automation |
unpause_automation | Unpause an automation |
test_automation | Send a test email for an automation |
Billing
| Tool | What it does |
|---|---|
get_billing | Get the current billing summary for the account (plan, status, limits, trial). |
list_invoices | List the account’s invoices. |
Branding
| Tool | What it does |
|---|---|
get_branding | Get the account’s white-label branding (logo, favicon) |
update_branding | Update branding settings — only include the fields you want to change. |
refresh_account_favicon | Re-derive the account’s favicon from its website, cache-bust it, save it and return the new URL. |
remove_account_logo 🔒 | Remove the account’s full logo. It falls back to the default Oviond branding. |
remove_account_favicon 🔒 | Remove the account’s square logo (favicon). |
Calculated metrics
| Tool | What it does |
|---|---|
list_calculated_metrics | List calculated metrics for the account (custom KPI formulas). |
create_calculated_metric | Create a calculated metric — a custom KPI from a formula over other metrics. |
update_calculated_metric | Update a calculated metric. Full replacement — you must send name, formula AND symbol. |
archive_calculated_metric 🔒 | Archive a calculated metric by ID. Restorable from the archive. |
duplicate_calculated_metric | Duplicate a calculated metric, optionally with a new name. |
Clients
| Tool | What it does |
|---|---|
list_clients | List all clients with optional filtering and pagination |
count_clients | Get total count of clients for the account |
get_client | Get a single client by ID |
create_client | Create a new client |
update_client | Update an existing client — only include the fields you want to change |
archive_client 🔒 | Archive a client by ID, with its projects, exports and automations. Restorable from the archive. |
archive_clients 🔒 | Archive several clients by ID in one call. Restorable from the archive. |
remove_client_logo 🔒 | Remove a client’s full logo (logo_url). It falls back to the agency branding. |
remove_client_favicon 🔒 | Remove a client’s square logo/favicon (favicon_url). |
refresh_client_favicon | Re-derive a client’s square favicon from its stored website (Google favicon service), cache-bust it, save it, and return the new favicon URL. |
refresh_client_screenshot | Re-take the screenshot of a client’s website and save it, returning the new URL. |
move_client_to_folder | Move a client to one or more folders |
Company
| Tool | What it does |
|---|---|
get_company | Get company settings |
update_company | Update company settings |
generate_company_palette | Generate a color palette from a hex color (read-only — computes shades, changes nothing). |
Custom data
| Tool | What it does |
|---|---|
list_custom_data | List uploaded custom-data (CSV) datasets for the account — summaries without the row data. |
get_custom_data | Get a single custom-data dataset by ID, including its parsed rows. |
create_custom_data | Create a custom-data dataset from parsed CSV rows (max 10,000 rows). |
update_custom_data | Update a custom-data dataset — send only the fields you want to change (e.g. { raw_data, columns }). |
archive_custom_data 🔒 | Archive a custom-data dataset by ID. Restorable from the archive. |
duplicate_custom_data | Duplicate a custom-data dataset with a new name. |
Datasources
| Tool | What it does |
|---|---|
datasources | List every datasource Oviond supports, with the id (the datasource_id used everywhere else — e.g. ga4, gadw, fb-ads), name, category, and data views. |
describe_datasource | Describe a datasource the way the report builder sees it, in one call: its data views, the advanced settings each view requires, its default view and defaults, and its metric and dimension catalogs… |
connected_datasources | List the datasource connections this account has made. |
create_connection | Create a datasource connection from credentials — the connect panel’s credential form, as a tool. |
link_datasource | Point a client at one of the account’s datasource connections — the connect panel’s account picker, as a tool. |
test_connection | Test whether a client’s connected datasource is still working (e.g. the OAuth token is valid). |
rename_connection | Rename a datasource connection |
unlink_datasource 🔒 | Detach a connected datasource from a client so its widgets no longer pull from that connection. |
delete_connection 🔒 | Delete a datasource connection — every widget pulling data from it will break |
Domains
| Tool | What it does |
|---|---|
list_domains | List custom domains registered on the account, including DNS verification records |
add_domain | Add a custom domain. The backend detects the DNS provider and returns the DNS records the user needs to configure. |
remove_domain 🔒 | Remove a custom domain by its ID |
| Tool | What it does |
|---|---|
send_email | Send an email. Either pass template_id (a saved template) OR subject+html (free-form). Sends are queued and paced; poll email logs for delivery. |
list_email_logs | List sent-email history / delivery logs. |
list_email_senders | List configured “From” senders and the active provider. |
create_email_sender | Create a “From” sender. |
update_email_sender | Update a sender — only the fields you want to change. |
delete_email_sender 🔒 | Delete a sender by ID. |
set_default_email_sender | Make a sender the account default. |
list_email_templates | List reusable email templates. |
get_email_template | Get a single email template by ID. |
create_email_template | Create an email template. |
update_email_template | Update an email template — only the fields you want to change. |
delete_email_template 🔒 | Delete an email template by ID (refused if it is the default). |
set_default_email_template | Make an email template the account default. |
list_email_domains | List verified sending domains. |
add_email_domain | Add a sending domain (returns DNS records to configure). |
verify_email_domain | Re-check DNS and verify a sending domain. |
remove_email_domain 🔒 | Remove a sending domain by ID. |
get_email_provider | Get the account’s active email provider. |
set_email_provider | Set the account’s email provider. |
Exports
| Tool | What it does |
|---|---|
list_exports | List PDF export history for a project (one row per generation attempt). |
archive_export 🔒 | Archive a PDF export record by ID. Restorable from the archive. |
Folders
| Tool | What it does |
|---|---|
list_folders | List all client folders for the account |
create_folder | Create a new client folder |
update_folder | Rename a client folder |
delete_folder 🔒 | Delete a client folder |
Goals
| Tool | What it does |
|---|---|
list_goals | List goals for the account (targets tracked against a metric query). |
create_goal | Create a goal — a target value + comparison for a saved metric query. |
update_goal | Update a goal — only include the fields you want to change. |
archive_goal 🔒 | Archive a goal by ID. Restorable from the archive. |
duplicate_goal | Duplicate a goal, optionally with a new name. |
Media
| Tool | What it does |
|---|---|
list_media | List media files |
rename_media_file | Rename a media file |
archive_media_file 🔒 | Archive a media file. The file leaves storage only when it is permanently deleted from the archive. |
archive_media_files 🔒 | Archive several media files by ID in one call. Restorable from the archive. |
move_media_to_folder | Move one or more media files into a media folder. |
list_media_folders | List the account’s media folders. |
create_media_folder | Create a new media folder. |
update_media_folder | Rename a media folder. |
delete_media_folder 🔒 | Delete a media folder (its media are not deleted, just un-foldered). |
Notifications
| Tool | What it does |
|---|---|
list_notifications | List in-app notifications for the account (paginated). |
count_unread_notifications | Get the number of unread notifications. |
mark_notifications_read | Mark notifications as read — specific ids, or all of them. |
archive_notification 🔒 | Archive a single notification by ID. It leaves the inbox but is not erased. |
archive_notifications 🔒 | Archive several notifications by ID in one call. They leave the inbox but are not erased. |
clear_read_notifications 🔒 | Delete all notifications that have already been read. |
get_notification_preferences | Get the per-event notification delivery preferences (which channels fire for each event type). |
update_notification_preferences | Change how you are notified for specific events. |
list_notification_channels | List the account’s configured Slack/Discord notification channels (webhook + enabled state). |
set_notification_channel | Configure a Slack or Discord notification channel with an incoming-webhook URL. |
delete_notification_channel 🔒 | Remove a configured Slack or Discord notification channel. |
Pages
| Tool | What it does |
|---|---|
list_pages | List pages for a project or template, ordered by position |
create_page | Add a page to a project or template. Appended at the end by default. |
update_page | Update a page — only include the fields you want to change |
delete_page 🔒 | Delete a page by ID |
| Tool | What it does |
|---|---|
generate_pdf | Queue a PDF render of a project. Returns a job_id — poll get_pdf_status until it completes, then download the URL. |
get_pdf_status | Poll a PDF job. status is pending → processing → complete (with a url) or failed. |
Projects
| Tool | What it does |
|---|---|
list_projects | List report/dashboard projects for the account, optionally filtered by client. |
get_project | Get a single project by ID |
create_project | Create a new report/dashboard project for a client. |
update_project | Update a project — only include the fields you want to change |
archive_project 🔒 | Archive a project by ID. Its pages and widgets stay attached and come back with it. Restorable from the archive. |
archive_projects 🔒 | Archive several projects by ID in one call. Restorable from the archive. |
duplicate_project | Duplicate a project with a new name |
change_project_date_range | Set the period a project reports on. Every data widget on it is re-fetched for the new range and the results are saved — widgets on their own custom range keep it. A rolling preset (“Last 30 Days”)… |
refresh_project | Re-fetch every data widget on a project with its current config and the project date range, saving the results. |
Search
| Tool | What it does |
|---|---|
search | Search clients and projects by name (minimum 2 characters) |
Templates
| Tool | What it does |
|---|---|
list_templates | List project templates with optional filtering and pagination |
get_template | Get a single template by ID |
create_template | Create a template from an existing project. |
update_template | Update a template — only include the fields you want to change |
archive_template 🔒 | Archive a template by ID. Restorable from the archive. |
list_template_widgets | List the widgets that belong to a template (optionally filtered to a single page). |
Themes
| Tool | What it does |
|---|---|
list_themes | List all themes available to the account (own + shared) |
get_theme | Get a single theme by ID |
create_theme | Create a new visual theme. Supply the complete tokens map (primary, font, radius, shadow, canvas, surface, chart1-10, etc.) — tokens are the single source of truth for every visual property. A theme… |
update_theme | Update a theme — only include the fields you want to change. |
archive_theme 🔒 | Archive a theme by ID. Projects using it fall back to the default. Restorable from the archive. |
Users
| Tool | What it does |
|---|---|
get_current_user | Get the currently authenticated user profile |
list_users | List all team members on the account |
invite_user | Invite a new user to join the account. admin has full account access; clients gives read+write to assigned clients; readonly is view-only on assigned clients. |
update_user | Edit a team member — only include the fields you want to change |
remove_user 🔒 | Remove a team member from the account |
update_my_profile | Update the authenticated user’s profile — only include the fields you want to change |
update_my_avatar | Update the authenticated user’s profile picture |
change_my_email | Change the authenticated user’s email address |
Widgets
| Tool | What it does |
|---|---|
list_widgets | List all widgets for a source (project or template). |
get_widget | Get a single widget by ID. |
add_title_widget | Add a title widget to a page. Position, width, and height use sensible defaults. |
add_text_widget | Add a rich-text widget to a page. Position, width, and height use sensible defaults. |
add_image_widget | Add an image widget to a page. Position, width, and height use sensible defaults. |
add_button_widget | Add a button widget to a page. Position, width, and height use sensible defaults. |
add_embed_widget | Add an embed widget to a page. Position, width, and height use sensible defaults. |
add_data_widget | Add a DATA widget to a page and configure it, applying the same rules as the report builder: the datasource’s defaults, the generated name, sort and row limit, and validation of the… |
update_title_widget | Update a TITLE widget. |
update_text_widget | Update a TEXT widget. Replaces the entire text content. |
update_image_widget | Update an IMAGE widget. |
update_button_widget | Update a BUTTON widget. |
update_embed_widget | Update an EMBED widget. |
update_data_widget | Update a DATA widget — its name, datasource, data view, metrics, dimensions, filters, advanced settings, chart type, date range, sort and row limit. |
move_widget | Move or resize a widget. Works for any widget type. Pass only the dimensions you want to change. |
delete_widget 🔒 | Delete a widget by ID. |
delete_widgets 🔒 | Delete multiple widgets by ID in one call. |
refresh_widgets | Re-fetch specific widgets with their saved config and save the results. |
datasource_resources | List the selectable values behind a widget’s advanced settings and filters — campaigns, ad sets, forms, videos, alerts, and so on. |
Workflows
| Tool | What it does |
|---|---|
create_client_with_project | Create a new client and its first report/dashboard in one step. |
create_project_from_template | Create a report or dashboard for an existing client by cloning a template (its pages + widgets). |
add_project_section | Add a saved section (asset) to a project — works for both reports and dashboards. |
audit_project_health | Audit a report or dashboard: report its connected data sources and automation state, and flag likely issues (no data sources connected, paused automations). |
Conventions
- Identifiers — calls return IDs the agent chains into later calls. It is instructed to refer to records by name in chat, never by ID.
- Multi-tenancy — every call is scoped to the authenticated account. You never pass an
account_id. - Discovery first —
datasources, thendescribe_datasource, before configuring a data widget: the second returns that datasource’s data views, metrics, dimensions and required settings. - Metrics and dimensions are objects — pass
[{ "value": "clicks" }], not["clicks"]. Onlyvalueis required; Oviond fills in the rest from the catalog. The same shape is used by the widget, goal and calculated-metric tools. - Data is fetched server-side after a widget is written.
refresh_widgetsorrefresh_projectforce it.