MCP v2.1.1
June 3, 2026
Dynamic Client Registration now accepts a partialredirect_uris array. Previously, if any single URI in the redirect_uris array failed the redirect URI policy, the entire registration was rejected with 400 invalid_redirect_uri. Now the endpoint registers only the valid subset and drops the rest — a 201 response’s redirect_uris field reflects the accepted URIs, which may be fewer than you submitted. The registration is only rejected outright when none of the supplied URIs are valid. The per-URI validation rules (loopback, allowlisted https host, approved custom scheme, reverse-DNS scheme) are unchanged. See Authentication for the full policy table.
v1.0.8
May 26, 2026
Bug fixes and behavioral improvements forcustom_field_filters on List Contacts and List Events:
- Age operators on date fields now work.
age_greater_than,age_equal_to, andage_less_thanwere documented but incorrectly rejected with a 422 when passed a whole-number day count. The validator now accepts numeric values for these operators on date fields (profile_field_26–profile_field_30). - Date filter comparisons are timezone-aware.
equal_to,greater_than,less_than, andbetweenon date fields now evaluate against your space’s configured timezone.equal_toexpands to a full midnight-to-midnight range for the given day;greater_thancompares against end-of-day. Previously these operators compared raw strings, which would miss column values with a stored time component. - Numeric
any/unknownsemantics. For numeric fields,anymatches contacts where the value is greater than0;unknownmatches contacts where the value is0or unset. not_equal_toandnot_containsno longer include unset values. Previously these operators could return contacts where the field was NULL or empty. If you need those contacts, add a separateunknowncondition ANDed alongside.- Text filter literals. The
_and\characters incontains,starts_with,ends_with, andcontains_wordfilter values are now treated as literal characters instead of LIKE wildcards.
MCP v2.1.0
May 21, 2026
Removed the four export tools —request_event_export, request_contact_export, request_company_export, and get_export_status. Bulk extraction is better handled by the Public API V1 export endpoints (programmatic) or the in-app CSV export buttons (interactive). Routing the rows through an MCP turn just consumed tool slots and added a polling round-trip without giving the agent any analytical leverage. Use query_events_aggregated, query_contacts_aggregated, or the various query_ad_metrics_* tools when the agent needs to reason about large datasets — not export them.
The MCP catalog is now 50 external tools across 14 toolsets (down from 54 / 15).
MCP v2.0.0
May 15, 2026
Major expansion of the Cometly MCP server — from 7 read-only tools to 54 external tools across 15 toolsets, plus the first MCP Resources and Prompts. Backwards compatible: every v1 tool kept its original input/output shape, withformat: "csv" | "json" | "yaml" added as an opt-in.
New toolsets (49 new tools):
- Workspace orientation —
get_workspace_context,list_custom_events,list_my_spaces,list_metric_catalog,list_filterable_fields,list_user_defined_metrics,resolve_date_range. - Search —
search_workspace. - Analytics depth —
query_ad_metrics_compare,query_attribution_models,query_metric_breakdown. - Event aggregations —
query_events_aggregated,list_event_types. - Journeys —
get_contact_journey,query_contacts_aggregated,get_company_journey. - Ads Manager hierarchy —
list_ad_accounts,list_campaigns,list_adsets,list_ads,get_ad_entity. - Reports & dashboards —
list_dashboards,get_dashboard,list_reports,get_report_definition,run_saved_report,analyze_report,list_subscriptions,get_subscription_last_run. - Segments —
list_segments,get_segment,query_segment_membership. - Integrations —
list_integrations,get_pixel_status,list_event_mappings. - Health & diagnostics —
get_space_health,debug_data_flow, plus the existinginspect_site/verify_pixel_events. - Webhook debugging —
list_recent_webhooks,get_webhook_event(payloads PII-redacted; prompt-injection patterns flagged in a warning footer). - Exports —
request_event_export,request_contact_export,request_company_export,get_export_status. (Removed in v2.1.0.) - AI helpers —
search_cometly_docs,get_chart_spec_template.
cometly://workspace/contextcometly://catalog/metricscometly://catalog/attribution-modelscometly://catalog/dimensionscometly://catalog/custom-events
analyze_performancecompare_attribution_modelsweekly_reviewfind_underperformers
- Custom event label resolution — analytics tools accept either
custom_event_2or the configured label (“Deal Created”) in their inputs. Output rewrites slot ids to labels with a# label_map:footer for round-tripping. - Empty-state hints — analytics tools annotate suspicious all-zero results with hints like “No facebook_ads account is connected to this space” or “Last google_ads sync was 3 days ago”.
- Token-budget pagination — responses cap around ~6,000 tokens with a
truncated_at_token_budget: truefooter + opaquenext_cursor. - CSV default for new tools — ~50% fewer tokens than JSON for tabular results. Legacy v1 tools keep JSON as default.
- DST caveat —
query_ad_metricsandresolve_date_rangesurface a DST advisory when the requested window crosses a transition. - Honest forecasting language — softened “anomaly detection” / “forecast” claims in tool descriptions to “directional reads” — we don’t run statistical models, the agent does threshold math.
external: falsefiltering — tools that only make sense in-app (chat history, file attachments) are hidden from external MCP clients via a server-levelshouldRegisterfilter.
v1.0.7
May 14, 2026
- Update Contact endpoint — Added PUT /contacts/ for updating an existing contact’s
emails,phones,names,locations, andcustom_fields. Uses sparse PUT semantics: any field you include replaces the existing collection in full; any field you omit is left untouched. Empty arrays ([]) wipe a collection; providingcustom_fieldsclears every key not in the object. - Update Company endpoint — Added PUT /companies/ for updating a company’s
domainandname. Uses sparse PUT semantics — only the fields you include are modified. namefield on Get Company — The Get Company response now includesnamealongsideidanddomain. This is an additive change; existing fields are unchanged.custom_field_filtersparameter on List Contacts — Addedcustom_field_filtersto the List Contacts endpoint. Accepts an array of AND-joined conditions (max 10) for filtering contacts by their custom profile field values. Each condition takes{ field, operator, value }(or{ field, operator, start, end }for thebetweenoperator). Thefieldmust reference aprofile_field_Nslot configured with a label in your space; operator vocabulary depends on the field’s type (text / number / date).custom_field_filtersparameter on List Events — Same parameter added to the List Events endpoint, narrowing results to events whose owning contact matches the conditions. Same shape and operator vocabulary as List Contacts.
v1.0.6
April 20, 2026
include_browsing_session_dataparameter on Get Contact — Addedinclude_browsing_session_datato the Get Contact endpoint. When set to1, the response includes abrowsing_session_hitsarray with up to the last 1000 raw browsing hits (page views) for the contact, ordered by most recent first. Each hit includesevent_url(full URL),referrer_host,source,country,device_type,browser,os,event_name, andevent_time_utc.
v1.0.5
April 7, 2026
include_eventsparameter on Get Contact — Addedinclude_eventsto the Get Contact endpoint. When set to1, the response includes aneventsarray containing the contact’s full journey — all conversions and touchpoints sorted by most recent first. Conversion events includeevent_name,amount,event_url,order_id,order_name,channel(browser/server), andintegration. Touchpoint events includesource,touchpoint_url,referrer_url, and the full ad hierarchy (ad_name,adset_name,campaign_name,account_name).hide_direct_touchpointsparameter on Get Contact — Addedhide_direct_touchpoints(default1) to the Get Contact endpoint. Wheninclude_events=1, direct touchpoints are excluded by default. Set to0to include them.
v1.0.4
March 19, 2026
use_custom_field_labelsparameter — Addeduse_custom_field_labelsto the List Contacts and Get Contact endpoints. When set to1, custom field keys use user-defined labels (e.g."Customer Age") instead of raw column names (e.g."profile_field_1"). Fields without a configured label retain their raw column name.
v1.0.3
February 27, 2026
- Ad hierarchy fields on List Events — Added
ad_name,adset_id,adset_name,campaign_id,campaign_name,account_id, andaccount_nameas requestable fields on the List Events endpoint. These fields requiresourcesto be provided and return the ad, ad set, campaign, and account data from the attributed touchpoint.
v1.0.2
February 19, 2026
include_all_emailsparameter — Addedinclude_all_emailsto the List Contacts and Create Contact Export endpoints. When set to1, returns all email addresses associated with a contact, including emails from merged profiles.
v1.0.1
February 17, 2026
- Custom fields on Create Event — The Create Event endpoint now accepts custom profile fields (
profile_field_1throughprofile_field_30) as root-level properties. Fields 1-15 accept text, 16-25 accept numbers (string or number), 26-30 accept dates. event_urlfield — Addedevent_urlas a requestable field on the List Events and Create Event Export endpoints. Returns the full URL where the event occurred.