Skip to content

Connectors · Observability & analytics

Matomo MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Matomo and the rest of your systems. It gives your agent 620 Matomo actions (458 reads, 126 writes and 36 that wait for a confirmation) and holds the Matomo credential itself, so the agent never does. It paces Matomo's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "matomo.users_manager.get_users",  intent: "check which Matomo account is connected"}# Users manager: get users · read · 1 upstream call
  • 620actionsin one signed file
  • 458readlook, never change
  • 126writecreate and update
  • 36wait for a yesdestructive, confirmed first

Set up

Connect Matomo in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Matomo.

    API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.

    • token_authMatomo personal auth token (token_auth)
    • hostWhere your Matomo lives: your host
    account { op: "connections.requirements", service: "matomo" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "matomo.users_manager.get_users" }# users manager: get users · read · 1 upstream callcheck { action: "matomo.users_manager.add_user", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Matomo at a glance

Sign-in
API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
You provide
token_auth
Setup fields
host
Limits we pace to
10 calls a second, per connection
API covered
Matomo Reporting API (HTTP index.php?module=API), Matomo 5.4+ for bearer-header auth, at your Matomo instance's API base URL, which you enter when connecting
Built from
Matomo's documentation, read 23 October 2026developer.matomo.orgdeveloper.matomo.org
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
457 of 458 reads, for up to 5 minutes; a write clears what it affects
Shared entities
2, so ask can line Matomo up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Matomo.

620 actions in 72 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 458readlook, never change
  • 126writecreate and update
  • 36destructivewait for a confirmation
  1. Sites manager

    53

    39 read · 13 write · 1 destructive

    Sites manager: add site · Sites manager: add site alias urls · Sites manager: get all sites · Sites manager: get javascript tag

  2. Tag manager

    47

    24 read · 18 write · 5 destructive

    Tag manager: add container · Tag manager: add container tag · Tag manager: add container trigger · Tag manager: add container variable

  3. Crash analytics

    32

    29 read · 3 write · 0 destructive

    Crash analytics: merge crashes · Crash analytics: get · Crash analytics: get all crash messages · Crash analytics: get all crashes

  4. Heatmap session recording

    32

    16 read · 11 write · 5 destructive

    Heatmap session recording: add heatmap · Heatmap session recording: add session recording · Heatmap session recording: duplicate heatmap · Heatmap session recording: get heatmaps

  5. Users manager

    32

    18 read · 12 write · 2 destructive

    Users manager: get users · Users manager: add user · Users manager: get user · Users manager: update user

  6. Form analytics

    26

    21 read · 4 write · 1 destructive

    Form analytics: add form · Form analytics: get forms · Form analytics: archive form · Form analytics: get

  7. Referrers

    23

    23 read · 0 write · 0 destructive

    Referrers: get · Referrers: get ai assistants · Referrers: get all · Referrers: get campaigns

  8. Custom reports

    19

    10 read · 7 write · 2 destructive

    Custom reports: add custom metric · Custom reports: add custom report · Custom reports: duplicate custom report · Custom reports: get configured reports

64 more areas · 356 actions
  • Funnels 19
  • Ab testing 18
  • Actions 18
  • API 17
  • Goals 15
  • Media analytics 15
  • Mobile messaging 12
  • Search engine keywords performance 12
  • Bot tracking 11
  • Marketing campaigns reporting 11
  • Visits summary 10
  • Events 9
  • Languages manager 9
  • Segment editor 9
  • Devices detection 8
  • Oauth2 8
  • User country 8
  • Annotations 7
  • Custom alerts 7
  • Custom dimensions 7
  • Advertising conversion export 6
  • Live 6
  • Login ldap 6
  • Privacy manager 6
  • Scheduled reports 6
  • Dashboard 5
  • Insights 5
  • Multi channel conversion attribution 5
  • Log viewer 4
  • Open API docs 4
  • Transitions 4
  • Users flow 4
  • Visitor interest 4
  • Activity log 3
  • API reference 3
  • Cohorts 3
  • Connect accounts 3
  • Core admin home 3
  • Custom translations 3
  • Custom variables 3
  • Feedback 3
  • Multi sites 3
  • Roll up reporting 3
  • Tour 3
  • Visit time 3
  • Contents 2
  • JS tracker install check 2
  • Marketplace 2
  • Overlay 2
  • Resolution 2
  • User language 2
  • AI agents 1
  • Bandwidth 1
  • Custom JS tracker 1
  • Device plugins 1
  • Github analytics 1
  • Login 1
  • Page performance 1
  • Provider 1
  • Seo 1
  • Treemap visualization 1
  • Two factor auth 1
  • User id 1
  • Visit frequency 1

Top actions

The Matomo API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 23 of Matomo's 25 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
matomo.users_manager.get_usersUsers manager: get usersReturns users visible to the current requester.readidentity.user.list474 connectors
matomo.users_manager.add_userUsers manager: add userCreates a new user account.writeidentity.user.create262 connectors
matomo.users_manager.delete_userUsers manager: delete userDeletes a user account and all of its access assignments.destructiveidentity.user.delete253 connectors
matomo.scheduled_reports.get_reportsScheduled reports: get reportsReturns scheduled reports that match the supplied filters.readanalytics.report.list37 connectors
matomo.scheduled_reports.add_reportScheduled reports: add reportCreates and schedules a new report.writeanalytics.report.create27 connectors
matomo.segment_editor.get_allSegment editor: get allReturns all stored segments.readanalytics.segment.list17 connectors
matomo.ab_testing.add_experimentAb testing: add experimentCreates a new experiment with variations, targeting rules, and success metrics.writeanalytics.experiment.create12 connectors
matomo.ab_testing.get_all_experimentsAb testing: get all experimentsReturns all experiments configured for a site.readanalytics.experiment.list12 connectors
matomo.segment_editor.addSegment editor: addAdds a new stored segment.writeanalytics.segment.create10 connectors
matomo.funnels.get_all_activated_funnels_for_siteFunnels: get all activated funnels for siteReturns all activated funnels for a site.readanalytics.funnel.list2 connectors
matomo.funnels.get_funnelFunnels: get funnelReturns a funnel definition by funnel ID.readthis connector
matomo.goals.add_goalGoals: add goalCreates a goal for a website.writethis connector

Try it

Prompts to paste into Claude.

Each one names the Matomo actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Who has access in Matomo? List every user and their role.

    callsmatomo.users_manager.get_users

  2. Writewrite

    Users manager: add user in Matomo. Show me exactly what you will send before you save it.

    callsmatomo.users_manager.add_user

Governance for Matomo

Destructive actions wait for a yes.

36 Matomo actions are destructive. The first 10:

  • Users manager: delete usermatomo.users_manager.delete_user
  • Scheduled reports: delete reportmatomo.scheduled_reports.delete_report
  • Segment editor: deletematomo.segment_editor.delete
  • Ab testing: delete experimentmatomo.ab_testing.delete_experiment
  • Funnels: delete non goal funnelmatomo.funnels.delete_non_goal_funnel
  • Goals: delete goalmatomo.goals.delete_goal
  • Annotations: deletematomo.annotations.delete
  • OAuth2: delete clientmatomo.oauth2.delete_client
  • OAuth2: rotate secretmatomo.oauth2.rotate_secret
  • Annotations: delete allmatomo.annotations.delete_all

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

domatomo.users_manager.delete_userconfirm_policy: human

Users manager: delete user?

intent: the user asked me to users manager: delete user

run suspended · waiting for a named person · key matomo-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "matomo-agent",  allowed_actions: ["matomo.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "matomo.users_manager.delete_user", approver: "[email protected]" },    { match: "matomo.scheduled_reports.delete_report", approver: "[email protected]" },    { match: "matomo.segment_editor.delete", approver: "[email protected]" }  ]}
Illustrative. Scoped to Matomo only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Matomo costs on actionlake.

Every Matomo action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Matomo refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 620 Matomo actions
  • 620actions pageeach page of a long list is one call
  • 457reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Matomo action.

620 actions by area: the id your agent calls, what it does, and its effect.

Sites manager53
  • matomo.sites_manager.add_siteSites manager: add sitewrite
  • matomo.sites_manager.add_site_alias_urlsSites manager: add site alias urlswrite
  • matomo.sites_manager.get_all_sitesSites manager: get all sitesread
  • matomo.sites_manager.get_javascript_tagSites manager: get javascript tagread
  • matomo.sites_manager.delete_siteSites manager: delete sitedestructive
  • matomo.sites_manager.get_all_sites_idSites manager: get all sites idread
  • and 47 more in this area
Tag manager47
  • matomo.tag_manager.add_containerTag manager: add containerwrite
  • matomo.tag_manager.add_container_tagTag manager: add container tagwrite
  • matomo.tag_manager.add_container_triggerTag manager: add container triggerwrite
  • matomo.tag_manager.add_container_variableTag manager: add container variablewrite
  • matomo.tag_manager.change_debug_urlTag manager: change debug urlwrite
  • matomo.tag_manager.create_container_versionTag manager: create container versionwrite
  • and 41 more in this area
Crash analytics32
  • matomo.crash_analytics.getCrash analytics: getread
  • matomo.crash_analytics.get_all_crash_messagesCrash analytics: get all crash messagesread
  • matomo.crash_analytics.get_all_crashesCrash analytics: get all crashesread
  • matomo.crash_analytics.merge_crashesCrash analytics: merge crasheswrite
  • matomo.crash_analytics.get_crash_groupsCrash analytics: get crash groupsread
  • matomo.crash_analytics.get_crash_messagesCrash analytics: get crash messagesread
  • and 26 more in this area
Heatmap session recording32
  • matomo.heatmap_session_recording.add_heatmapHeatmap session recording: add heatmapwrite
  • matomo.heatmap_session_recording.add_session_recordingHeatmap session recording: add session recordingwrite
  • matomo.heatmap_session_recording.duplicate_heatmapHeatmap session recording: duplicate heatmapwrite
  • matomo.heatmap_session_recording.get_heatmapsHeatmap session recording: get heatmapsread
  • matomo.heatmap_session_recording.delete_heatmapHeatmap session recording: delete heatmapdestructive
  • matomo.heatmap_session_recording.delete_heatmap_screenshotHeatmap session recording: delete heatmap screenshotdestructive
  • and 26 more in this area
Users manager32
  • matomo.users_manager.add_userUsers manager: add userwrite
  • matomo.users_manager.get_userUsers manager: get userread
  • matomo.users_manager.get_usersUsers manager: get usersread
  • matomo.users_manager.update_userUsers manager: update userwrite
  • matomo.users_manager.add_capabilitiesUsers manager: add capabilitieswrite
  • matomo.users_manager.create_app_specific_token_authUsers manager: create app specific token authwrite
  • and 26 more in this area
Form analytics26
  • matomo.form_analytics.add_formForm analytics: add formwrite
  • matomo.form_analytics.archive_formForm analytics: archive formwrite
  • matomo.form_analytics.getForm analytics: getread
  • matomo.form_analytics.get_formsForm analytics: get formsread
  • matomo.form_analytics.delete_formForm analytics: delete formdestructive
  • matomo.form_analytics.get_all_goalsForm analytics: get all goalsread
  • and 20 more in this area
Referrers23
  • matomo.referrers.getReferrers: getread
  • matomo.referrers.get_ai_assistantsReferrers: get ai assistantsread
  • matomo.referrers.get_allReferrers: get allread
  • matomo.referrers.get_campaignsReferrers: get campaignsread
  • matomo.referrers.get_entry_page_titles_for_ai_assistantReferrers: get entry page titles for ai assistantread
  • matomo.referrers.get_entry_page_urls_for_ai_assistantReferrers: get entry page urls for ai assistantread
  • and 17 more in this area
Custom reports19
  • matomo.custom_reports.add_custom_metricCustom reports: add custom metricwrite
  • matomo.custom_reports.add_custom_reportCustom reports: add custom reportwrite
  • matomo.custom_reports.duplicate_custom_reportCustom reports: duplicate custom reportwrite
  • matomo.custom_reports.get_configured_reportsCustom reports: get configured reportsread
  • matomo.custom_reports.delete_custom_metricCustom reports: delete custom metricdestructive
  • matomo.custom_reports.delete_custom_reportCustom reports: delete custom reportdestructive
  • and 13 more in this area
Funnels19
  • matomo.funnels.delete_non_goal_funnelFunnels: delete non goal funneldestructive
  • matomo.funnels.get_all_activated_funnels_for_siteFunnels: get all activated funnels for siteread
  • matomo.funnels.get_funnelFunnels: get funnelread
  • matomo.funnels.save_non_goal_funnelFunnels: save non goal funnelwrite
  • matomo.funnels.delete_goal_funnelFunnels: delete goal funneldestructive
  • matomo.funnels.get_available_pattern_matchesFunnels: get available pattern matchesread
  • and 13 more in this area
Ab testing18
  • matomo.ab_testing.add_experimentAb testing: add experimentwrite
  • matomo.ab_testing.get_all_experimentsAb testing: get all experimentsread
  • matomo.ab_testing.get_experimentAb testing: get experimentread
  • matomo.ab_testing.update_experimentAb testing: update experimentwrite
  • matomo.ab_testing.archive_experimentAb testing: archive experimentwrite
  • matomo.ab_testing.delete_experimentAb testing: delete experimentdestructive
  • and 12 more in this area
Actions18
  • matomo.actions.getActions: getread
  • matomo.actions.get_downloadActions: get downloadread
  • matomo.actions.get_downloadsActions: get downloadsread
  • matomo.actions.get_entry_page_titlesActions: get entry page titlesread
  • matomo.actions.get_entry_page_urlsActions: get entry page urlsread
  • matomo.actions.get_exit_page_titlesActions: get exit page titlesread
  • and 12 more in this area
API17
  • matomo.api.getAPI: getread
  • matomo.api.get_bulk_requestAPI: get bulk requestread
  • matomo.api.get_metadataAPI: get metadataread
  • matomo.api.get_processed_reportAPI: get processed reportread
  • matomo.api.get_glossary_metricsAPI: get glossary metricsread
  • matomo.api.get_glossary_reportsAPI: get glossary reportsread
  • and 11 more in this area
Goals15
  • matomo.goals.add_goalGoals: add goalwrite
  • matomo.goals.dismiss_recommended_goalGoals: dismiss recommended goalwrite
  • matomo.goals.get_goalsGoals: get goalsread
  • matomo.goals.run_goal_recommendation_scanGoals: run goal recommendation scanwrite
  • matomo.goals.delete_goalGoals: delete goaldestructive
  • matomo.goals.dismiss_recommended_goalsGoals: dismiss recommended goalswrite
  • and 9 more in this area
Media analytics15
  • matomo.media_analytics.getMedia analytics: getread
  • matomo.media_analytics.get_audio_hoursMedia analytics: get audio hoursread
  • matomo.media_analytics.get_audio_resourcesMedia analytics: get audio resourcesread
  • matomo.media_analytics.get_audio_titlesMedia analytics: get audio titlesread
  • matomo.media_analytics.get_current_most_playsMedia analytics: get current most playsread
  • matomo.media_analytics.get_current_num_playsMedia analytics: get current num playsread
  • and 9 more in this area
Mobile messaging12
  • matomo.mobile_messaging.add_phone_numberMobile messaging: add phone numberwrite
  • matomo.mobile_messaging.are_smsapi_credential_providedMobile messaging: are smsapi credential providedread
  • matomo.mobile_messaging.get_credit_leftMobile messaging: get credit leftread
  • matomo.mobile_messaging.resend_verification_codeMobile messaging: resend verification codewrite
  • matomo.mobile_messaging.delete_smsapi_credentialMobile messaging: delete smsapi credentialdestructive
  • matomo.mobile_messaging.get_delegated_managementMobile messaging: get delegated managementread
  • and 6 more in this area
Search engine keywords performance12
  • matomo.search_engine_keywords_performance.get_crawling_error_examples_bingSearch engine keywords performance: get crawling error examples bingread
  • matomo.search_engine_keywords_performance.get_crawling_overview_bingSearch engine keywords performance: get crawling overview bingread
  • matomo.search_engine_keywords_performance.get_crawling_overview_yandexSearch engine keywords performance: get crawling overview yandexread
  • matomo.search_engine_keywords_performance.get_keywordsSearch engine keywords performance: get keywordsread
  • matomo.search_engine_keywords_performance.get_keywords_bingSearch engine keywords performance: get keywords bingread
  • matomo.search_engine_keywords_performance.get_keywords_googleSearch engine keywords performance: get keywords googleread
  • and 6 more in this area
Bot tracking11
  • matomo.bot_tracking.getBot tracking: getread
  • matomo.bot_tracking.get_ai_chatbot_ai_favoured_pagesBot tracking: get ai chatbot ai favoured pagesread
  • matomo.bot_tracking.get_ai_chatbot_broken_contentBot tracking: get ai chatbot broken contentread
  • matomo.bot_tracking.get_ai_chatbot_content_documentsBot tracking: get ai chatbot content documentsread
  • matomo.bot_tracking.get_ai_chatbot_content_pagesBot tracking: get ai chatbot content pagesread
  • matomo.bot_tracking.get_ai_chatbot_human_favoured_pagesBot tracking: get ai chatbot human favoured pagesread
  • and 5 more in this area
Marketing campaigns reporting11
  • matomo.marketing_campaigns_reporting.get_contentMarketing campaigns reporting: get contentread
  • matomo.marketing_campaigns_reporting.get_groupMarketing campaigns reporting: get groupread
  • matomo.marketing_campaigns_reporting.get_idMarketing campaigns reporting: get idread
  • matomo.marketing_campaigns_reporting.get_keywordMarketing campaigns reporting: get keywordread
  • matomo.marketing_campaigns_reporting.get_keyword_content_from_name_idMarketing campaigns reporting: get keyword content from name idread
  • matomo.marketing_campaigns_reporting.get_mediumMarketing campaigns reporting: get mediumread
  • and 5 more in this area
Visits summary10
  • matomo.visits_summary.getVisits summary: getread
  • matomo.visits_summary.get_actionsVisits summary: get actionsread
  • matomo.visits_summary.get_bounce_countVisits summary: get bounce countread
  • matomo.visits_summary.get_max_actionsVisits summary: get max actionsread
  • matomo.visits_summary.get_sum_visits_lengthVisits summary: get sum visits lengthread
  • matomo.visits_summary.get_sum_visits_length_prettyVisits summary: get sum visits length prettyread
  • and 4 more in this area
Events9
  • matomo.events.get_actionEvents: get actionread
  • matomo.events.get_action_from_category_idEvents: get action from category idread
  • matomo.events.get_action_from_name_idEvents: get action from name idread
  • matomo.events.get_categoryEvents: get categoryread
  • matomo.events.get_category_from_action_idEvents: get category from action idread
  • matomo.events.get_category_from_name_idEvents: get category from name idread
  • and 3 more in this area
Languages manager9
  • matomo.languages_manager.get_available_language_namesLanguages manager: get available language namesread
  • matomo.languages_manager.get_available_languagesLanguages manager: get available languagesread
  • matomo.languages_manager.get_available_languages_infoLanguages manager: get available languages inforead
  • matomo.languages_manager.get_language_for_userLanguages manager: get language for userread
  • matomo.languages_manager.get_translations_for_languageLanguages manager: get translations for languageread
  • matomo.languages_manager.is_language_availableLanguages manager: is language availableread
  • and 3 more in this area
Segment editor9
  • matomo.segment_editor.addSegment editor: addwrite
  • matomo.segment_editor.getSegment editor: getread
  • matomo.segment_editor.get_allSegment editor: get allread
  • matomo.segment_editor.updateSegment editor: updatewrite
  • matomo.segment_editor.deleteSegment editor: deletedestructive
  • matomo.segment_editor.get_segment_dataSegment editor: get segment dataread
  • and 3 more in this area
Devices detection8
  • matomo.devices_detection.get_brandDevices detection: get brandread
  • matomo.devices_detection.get_browser_enginesDevices detection: get browser enginesread
  • matomo.devices_detection.get_browser_versionsDevices detection: get browser versionsread
  • matomo.devices_detection.get_browsersDevices detection: get browsersread
  • matomo.devices_detection.get_modelDevices detection: get modelread
  • matomo.devices_detection.get_os_familiesDevices detection: get os familiesread
  • and 2 more in this area
Oauth28
  • matomo.oauth2.create_clientOAuth2: create clientwrite
  • matomo.oauth2.get_clientOAuth2: get clientread
  • matomo.oauth2.get_clientsOAuth2: get clientsread
  • matomo.oauth2.get_scopesOAuth2: get scopesread
  • matomo.oauth2.delete_clientOAuth2: delete clientdestructive
  • matomo.oauth2.rotate_secretOAuth2: rotate secretdestructive
  • and 2 more in this area
User country8
  • matomo.user_country.get_cityUser country: get cityread
  • matomo.user_country.get_continentUser country: get continentread
  • matomo.user_country.get_countryUser country: get countryread
  • matomo.user_country.get_country_code_mappingUser country: get country code mappingread
  • matomo.user_country.get_location_from_ipUser country: get location from ipread
  • matomo.user_country.get_number_of_distinct_countriesUser country: get number of distinct countriesread
  • and 2 more in this area
Annotations7
  • matomo.annotations.addAnnotations: addwrite
  • matomo.annotations.getAnnotations: getread
  • matomo.annotations.get_allAnnotations: get allread
  • matomo.annotations.get_annotation_count_for_datesAnnotations: get annotation count for datesread
  • matomo.annotations.deleteAnnotations: deletedestructive
  • matomo.annotations.delete_allAnnotations: delete alldestructive
  • and 1 more in this area
Custom alerts7
  • matomo.custom_alerts.add_alertCustom alerts: add alertwrite
  • matomo.custom_alerts.edit_alertCustom alerts: edit alertwrite
  • matomo.custom_alerts.get_alertCustom alerts: get alertread
  • matomo.custom_alerts.get_alertsCustom alerts: get alertsread
  • matomo.custom_alerts.delete_alertCustom alerts: delete alertdestructive
  • matomo.custom_alerts.get_triggered_alertsCustom alerts: get triggered alertsread
  • and 1 more in this area
Custom dimensions7
  • matomo.custom_dimensions.configure_existing_custom_dimensionCustom dimensions: configure existing custom dimensionwrite
  • matomo.custom_dimensions.configure_new_custom_dimensionCustom dimensions: configure new custom dimensionwrite
  • matomo.custom_dimensions.get_available_extraction_dimensionsCustom dimensions: get available extraction dimensionsread
  • matomo.custom_dimensions.get_configured_custom_dimensionsCustom dimensions: get configured custom dimensionsread
  • matomo.custom_dimensions.get_available_scopesCustom dimensions: get available scopesread
  • matomo.custom_dimensions.get_configured_custom_dimensions_having_scopeCustom dimensions: get configured custom dimensions having scoperead
  • and 1 more in this area
Advertising conversion export6
  • matomo.advertising_conversion_export.add_conversion_exportAdvertising conversion export: add conversion exportwrite
  • matomo.advertising_conversion_export.get_conversion_exportAdvertising conversion export: get conversion exportread
  • matomo.advertising_conversion_export.get_conversion_exportsAdvertising conversion export: get conversion exportsread
  • matomo.advertising_conversion_export.regenerate_access_tokenAdvertising conversion export: regenerate access tokenwrite
  • matomo.advertising_conversion_export.delete_conversion_exportAdvertising conversion export: delete conversion exportdestructive
  • matomo.advertising_conversion_export.update_conversion_exportAdvertising conversion export: update conversion exportwrite
Live6
  • matomo.live.get_countersLive: get countersread
  • matomo.live.get_last_visits_detailsLive: get last visits detailsread
  • matomo.live.get_most_recent_visitor_idLive: get most recent visitor idread
  • matomo.live.get_most_recent_visits_date_timeLive: get most recent visits date timeread
  • matomo.live.get_visitor_profileLive: get visitor profileread
  • matomo.live.is_visitor_profile_enabledLive: is visitor profile enabledread

Login ldap 6Privacy manager 6Scheduled reports 6Dashboard 5Insights 5Multi channel conversion attribution 5Log viewer 4Open API docs 4Transitions 4Users flow 4Visitor interest 4Activity log 3API reference 3Cohorts 3Connect accounts 3Core admin home 3Custom translations 3Custom variables 3Feedback 3Multi sites 3Roll up reporting 3Tour 3Visit time 3Contents 2JS tracker install check 2Marketplace 2Overlay 2Resolution 2User language 2AI agents 1Bandwidth 1Custom JS tracker 1Device plugins 1Github analytics 1Login 1Page performance 1Provider 1Seo 1Treemap visualization 1Two factor auth 1User id 1Visit frequency 1

This index shows a sample of each area. All 620 actions, with their inputs and prices, are in the catalogue, which a free sandbox key can search.

Questions

The Matomo MCP server, answered.

Is there a Matomo MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 620 Matomo actions across sites manager, tag manager, crash analytics and heatmap session recording, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Matomo.

What do I need to connect Matomo?

Matomo personal auth token (token_auth). Plus your host. The free call account { op: "connections.requirements", service: "matomo" } lists exactly what to paste.

Can an AI agent delete or change things in Matomo?

Only if its key allows it, and only with an explicit confirmation. 36 Matomo actions are destructive, including users manager: delete user, scheduled reports: delete report and segment editor: delete. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Matomo API limit?

actionlake paces every call to the limits in the Matomo service file: 10 calls a second per connection. Repeated reads are answered from cache (457 Matomo actions can be), which never reaches Matomo.

What does a Matomo action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (620 Matomo actions page). Cache hits, searches, dry runs and calls Matomo refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Matomo API does it cover?

The Matomo Reporting API (HTTP index.php?module=API), Matomo 5.4+ for bearer-header auth at your Matomo instance's API base URL, which you enter when connecting. It is built from Matomo's documentation as read on 23 October 2026. 620 actions in 72 areas, each one in the signed service file (version 1.0.0).

Does actionlake keep my Matomo data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Matomo credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Matomo today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.