Tools & Connectors
Analytics & BI
Amplitude, Mixpanel, Segment, PostHog, Looker, Tableau, and other analytics toolsets.
#Analytics & BI
Product analytics, customer data platforms, and BI dashboards. Every
connector follows the standard @toolset / @toolify shape.
#Agent-ready behavior (overview)
List / search tools across this category return compact summaries with
stable display refs (cohort_ref, user_ref, event_ref,insight_ref, person_ref, source_ref, destination_ref,warehouse_ref, look_ref, dashboard_ref, card_ref,project_ref, workbook_ref, view_ref, datasource_ref,dataset_ref, member_ref). Raw provider IDs (numeric IDs, UUIDs,
slugs) are hidden by default and exposed via include_ids=True when
a follow-up tool (get_*, delete_*, cancel_*) needs them. Default
page size is 25 unless otherwise noted.
Write tools that take an identifier (Hex get_project, run_project,get_run_status, list_project_runs, cancel_run; Sigmaget_workbook, export_workbook; Tableau get_workbook,refresh_workbook, delete_workbook; Metabase get_card,run_card_query, get_dashboard; Looker get_look, run_look,get_dashboard) accept a raw ID string or the dict returned by the
matching list tool.
Mixpanel and the ingest-only paths (Amplitude upload_events,
Segment track/identify/group/page/batch, PostHogcapture, Mixpanel track/import_events/engage/group_update)
are write tools that take inline payloads rather than identifiers --
no summary treatment is needed.
Destructive tools across this group (require user confirmation):cancel_run (Hex), delete_workbook (Tableau).
#AmplitudeToolSet
from maivn_tools import AmplitudeToolSet connector = AmplitudeToolSet( api_key=secrets["AMPLITUDE_API_KEY"], secret_key=secrets["AMPLITUDE_SECRET_KEY"], region="US",)Tools: upload_events, identify, event_segmentation,funnel_analysis, retention_analysis, get_user_activity,get_user_search, list_cohorts, get_cohort, export_raw_events.
Agent-ready behavior
get_user_search: summary withuser_ref, plus user name / email /
device fields. Passinclude_ids=Truefor the rawuser_id(needed
byget_user_activity).list_cohorts: summary withcohort_ref, name, count, type,last_computed. Opt in forcohort_id(needed byget_cohort).
#MixpanelToolSet
from maivn_tools import MixpanelToolSet connector = MixpanelToolSet( project_token=secrets["MIXPANEL_PROJECT_TOKEN"], service_account_user=secrets["MIXPANEL_SA_USER"], service_account_secret=secrets["MIXPANEL_SA_SECRET"], project_id=int(secrets["MIXPANEL_PROJECT_ID"]), region="US",)Tools: track, import_events, engage, group_update,events_query, segmentation, funnels, retention,export_events, query_jql.
Agent-ready behavior
- Mixpanel's surface is ingest + query rather than list/get -- no
resource-listing tools, so no_refsummaries. Read tools
(events_query,segmentation,funnels,retention,export_events,query_jql) return the raw provider responses
unchanged because the agent typically wants the raw rows / counts.
#SegmentToolSet
from maivn_tools import SegmentToolSet connector = SegmentToolSet( write_key=secrets.get("SEGMENT_WRITE_KEY"), # for Tracking API public_api_token=secrets.get("SEGMENT_PUBLIC_TOKEN"), # for source/destination management)Either credential works on its own; supply both for full coverage.
Tools: track, identify, group, page, batch, list_workspaces,list_sources, get_source, list_destinations, list_warehouses.
Agent-ready behavior
list_sources: summary withsource_ref, name, slug,
source-config preview. Rawsource_idhidden; opt in withinclude_ids=True(needed byget_source).list_destinations: summary withdestination_ref, name, slug,
enabled state, parent source name. Opt in fordestination_id.list_warehouses: summary withwarehouse_ref, name, slug, enabled
state. Opt in forwarehouse_id.
#PostHogToolSet
from maivn_tools import PostHogToolSet connector = PostHogToolSet( personal_api_key=secrets["POSTHOG_PERSONAL_KEY"], project_api_key=secrets.get("POSTHOG_PROJECT_KEY"), # needed for /capture/ project_id=int(secrets["POSTHOG_PROJECT_ID"]), host="app.posthog.com",)Tools: capture, list_events, list_insights, get_insight,query_hogql, list_feature_flags, create_feature_flag,update_feature_flag, list_persons, list_cohorts.
Agent-ready behavior
list_events: summary withevent_ref, event name, distinct ID,
timestamp, properties preview. Raw event UUIDs hidden; opt in withinclude_ids=True.list_insights: summary withinsight_ref, name, description,
type, dashboard count. Opt in for the numericinsight_id(needed
byget_insight).list_persons: summary withperson_ref, name, email, properties
preview,created_at. Opt in for the personid/distinct_id.
#LookerToolSet
from maivn_tools import LookerToolSet connector = LookerToolSet( base_url="https://acme.cloud.looker.com:19999", access_token=token,)Looker login (POST /login to exchange client-id/secret for an access
token) is left to the caller. Tools: me, list_looks, get_look,run_look, list_dashboards, get_dashboard, create_query,run_query, list_users, search_content.
Agent-ready behavior
list_looks: summary withlook_ref, title, description, view
count,updated_at. Rawlook_idhidden; opt in withinclude_ids=True(needed byget_look,run_look).list_dashboards: summary withdashboard_ref, title, description,
view count,updated_at. Opt in fordashboard_id(needed byget_dashboard).list_users: summary withuser_ref, display name, email, role
count. Opt in foruser_id.
looks = connector.list_looks(include_ids=True)data = connector.run_look(looks["looks"][0], result_format="json")#TableauToolSet
from maivn_tools import TableauToolSet connector = TableauToolSet( server_url="https://us-east-1.online.tableau.com", site_id=session["site_id"], auth_token=session["token"],)Sign-in (personal access token / username+password) is left to the
caller -- supply auth_token + site_id already exchanged. Tools:get_server_info, list_sites, list_projects, list_workbooks,get_workbook, list_views_for_workbook, query_view_data,list_datasources, refresh_datasource, refresh_workbook,get_job, delete_workbook (destructive).
Agent-ready behavior
list_projects: summary withproject_ref, name, description,
parent project name. Opt in forproject_id.list_workbooks: summary withworkbook_ref, name, description,
owner name, project name,updated_at. Raw workbook UUID hidden;
opt in withinclude_ids=True(needed byget_workbook,refresh_workbook,delete_workbook).list_views_for_workbook: summary withview_ref, name,content_url, view count. Opt in forview_id(needed byquery_view_data).list_datasources: summary withdatasource_ref, name, type,
owner, project. Opt in fordatasource_id.- Tolerant inputs:
get_workbook,refresh_workbook,delete_workbookaccept a raw UUID or a workbook dict fromlist_workbooks(include_ids=True). - Destructive:
delete_workbook. Confirm before invoking.
#MetabaseToolSet
from maivn_tools import MetabaseToolSet connector = MetabaseToolSet( base_url="https://metabase.example", api_key=secrets["METABASE_API_KEY"],)For session-based auth use key_kind="session". Tools:get_current_user, list_databases, list_cards, get_card,run_card_query, list_dashboards, get_dashboard,list_collections, query_dataset, search.
Agent-ready behavior
list_cards: summary withcard_ref, name, description, display
type, collection name. Raw numericcard_idhidden; opt in withinclude_ids=True(needed byget_card,run_card_query).list_dashboards: summary withdashboard_ref, name, description,
collection name. Opt in fordashboard_id.
#HexToolSet
from maivn_tools import HexToolSet connector = HexToolSet(api_token=secrets["HEX_TOKEN"])Tools: list_projects, get_project, run_project, get_run_status,list_project_runs, cancel_run (destructive).
Agent-ready behavior
list_projects: summary withproject_ref, title, description,
state. Raw Hex project IDs hidden; opt in withinclude_ids=True
(needed byget_project,run_project,get_run_status,list_project_runs,cancel_run).- Destructive:
cancel_run. Confirm before invoking (in-progress
runs cannot be resumed).
#SigmaToolSet
from maivn_tools import SigmaToolSet connector = SigmaToolSet(access_token=token)Defaults to the AWS-US region. Tools: list_workbooks, get_workbook,export_workbook, list_datasets, get_dataset, list_members,list_schedules, create_embed.
Agent-ready behavior
list_workbooks: summary withworkbook_ref, name, description,
owner email,updated_at. Raw workbook IDs hidden; opt in withinclude_ids=True(needed byget_workbook,export_workbook).list_datasets: summary withdataset_ref, name, description,updated_at. Opt in fordataset_id.list_members: summary withmember_ref, full name, email,
member type. Opt in formember_id.