Formo

Product and onchain analytics for AI agents: query KPIs, funnels, retention, revenue, users, and wallet profiles.

Documentation

MCP overview

Connect AI agents, coding tools, and third-party apps to Formo with MCP.

Overview

The Formo MCP Server lets AI assistants, code editors, and custom integrations query your analytics data in natural language, using MCP, an open standard for connecting AI assistants to external data. For example:

  • "How many daily active users did we have last week?"
  • "What are the top acquisition sources this month?"
  • "Show me user retention by cohort"
MCP requires a **Scale or Enterprise** plan. [Upgrade your workspace](https://app.formo.so) to get access.

Getting started

Supported clients: OAuth-capable MCP clients such as ChatGPT, Claude Desktop, Cursor, Claude Code, Windsurf, VS Code, or any client that supports HTTP or stdio MCP transports.

Formo supports two authentication methods for MCP:

  • OAuth (Recommended) for clients that manage user sign-in. Users sign in to Formo, select a project on the consent page, and choose which permissions to approve.
  • Workspace API Keys for clients that let you configure an Authorization header manually.
Connect OAuth-capable MCP clients to Formo. Configure local clients, editors, and tools with an API Key.

Example questions

Product analytics

  • "What are my KPIs for the last 7 days?"
  • "Show me daily active users for the past month"
  • "Which lifecycle stage are most of my users in?"
  • "What's the conversion rate from page view to wallet connection?"

Marketing attribution

  • "What are my top traffic sources?"
  • "Show me conversion by UTM source"
  • "Which countries are my users coming from?"

Wallet intelligence

  • "Look up the profile for this wallet address, including its net worth"
  • "What are my top wallets and chains?"

Available tools

Query API

SQL, exploration, and pre-built analytics endpoints. Permission: query:read.

ToolDescription
explore_dataNatural language data exploration with Formo-specific context
execute_queryRun SQL queries against your analytics data
text_to_sqlConvert natural language to SQL
list_endpointsList available API endpoints
list_datasourcesList available data sources
kpisGet key performance indicators
distinct_valuesGet unique values for filtering
top_eventsView most common events
event_timeseriesEvent counts over time
lifecycleLifecycle stage breakdown (new, returning, power, resurrected, at risk, churned)
retentionUser retention by cohort
frequencyHow often users return
project_usersRow-level user list, filterable by lifecycle stage, token holdings, and more
top_pagesAnalyze page performance
top_sourcesAttribution and traffic sources
top_locationsGeographic distribution
top_walletsMost active wallets
top_chainsActivity by blockchain
revenue_overviewRevenue analytics
revenue_timeseriesRevenue over time
revenue_by_metricRevenue broken down by a dimension
volume_by_metricTransaction volume broken down by a dimension
cohort_analysisCohort-based behavioral analysis
funnelMulti-step conversion funnels
flowUser journey and path analysis

Profiles API

Wallet enrichment. Permission: profiles:read.

ToolDescription
search_profileLook up enrichment for a single wallet address (net worth, tokens, labels)

Alerts

ToolDescriptionPermission
list_alerts, get_alertRead alertsalerts:read
create_alert, update_alert, toggle_alert, delete_alertManage alertsalerts:write

Charts

ToolDescriptionPermission
list_boards, get_board, list_charts, get_chartRead boards and chartsboards:read
create_board, update_board, delete_boardManage boardsboards:write
create_chart, update_chart, delete_chart, duplicate_chart, move_chartManage chartsboards:write
preview_chartRun a chart's SQL without savingquery:read

Contracts

ToolDescriptionPermission
list_contracts, get_contractRead tracked contractscontracts:read
create_contract, update_contract, toggle_contract_pipeline, delete_contractManage tracked contractscontracts:write

Segments

ToolDescriptionPermission
list_segmentsRead segmentssegments:read
create_segment, delete_segmentManage segmentssegments:write
The `delete_*` tools permanently remove data. They will not run unless the call passes `"confirm": true`, so an assistant has to ask you first rather than delete on its own. Grant write permissions only to clients you trust.

Docs

ToolDescription
search_formo_docsSearch the Formo documentation
query_docs_filesystem_formo_docsQuery the Formo docs filesystem

Troubleshooting

  • 403 MCP access requires a Scale or Enterprise plan: MCP is available only on Scale and Enterprise plans.
  • Tools not appearing: Check that the URL ends with a trailing slash: https://api.formo.so/v0/mcp/. Restart or refresh your AI assistant after configuration changes.
  • OAuth issues: See MCP OAuth for OAuth setup, metadata, and troubleshooting.
  • API key issues: See MCP API Key for API key setup and troubleshooting.

Security

  • Project-scoped: each connection is limited to one project, either selected on the OAuth consent page or attached to the API key.
  • Permission-scoped: every tool call requires the matching permission (e.g. query:read to read analytics, alerts:write to change alerts); deletes additionally require "confirm": true.
  • Owner/admin only: only a workspace owner or admin can create a connection.
  • Nothing retained: the MCP server itself stores no data.
  • Manage anytime: review, change, or revoke access under SettingsConnected apps. Disconnects apply immediately; permission changes apply on reconnect. Sessions expire after 1 hour of inactivity.

FAQ

Any OAuth-capable or HTTP/stdio MCP client. See [Getting started](#getting-started) for the supported client list and setup instructions. Anything in the [Available tools](#available-tools) table: KPIs, traffic sources, pages, events, geography, revenue, lifecycle, retention, cohorts, funnels, and wallet enrichment. Yes, access is scoped to one project and the permissions you grant. See [Security](#security) for details. Yes. OAuth is additive. Existing Workspace API Key configurations continue to work with `Authorization: Bearer YOUR_API_KEY`.