Skip to main content

MCP Server: Information Security Overview

Learn more about how the Measure Studio MCP works behind the scenes for your infosec review.

Written by Thomas Kramer

Feature: Model Context Protocol (MCP) server exposing Measure Studio analytics to third-party AI clients (Claude, ChatGPT, etc.)

AI Provider: None — Measure Studio is the data source; the AI model is operated by the customer's chosen client

Last updated: May 2026


1. Feature overview

The MCP server lets a customer connect their Measure Studio workspace to any MCP-compliant AI client. Once connected, the client can call a curated set of read-and-light-write tools (search posts, fetch analytics, build report slides, tag posts, etc.) on behalf of the authenticated user. The AI runs on the customer's side — Measure Studio is the data source, not the model provider.

The feature is opt-in per company via a feature flag. No data leaves Measure Studio to any third-party AI provider through this surface unless a customer explicitly connects a client and that client issues a tool call.

2. Data sent to the MCP client

The MCP server only returns data scoped to the authenticated user's workspace and permission level (see §5). What flows out depends on which tool the client invokes.

What can be sent

Data type

Details

Purpose

Account metadata

Display name, platform, follower count, public/owned status, scope tag

Letting the AI describe the workspace

Post metadata

Title, description, caption, post type, published date, tags (hashtags, user tags, AI tags), thumbnail URL

Search and content

analysis

Post analytics

Engagement, reach, impressions, video views, demographics on owned accounts

Performance Q&A and reporting

Group /

dashboard info

Names and IDs of groups, dashboards, reports the user can access

Navigation between

resources

Report slide

payloads

Slide content produced by visual tools

Building a report from a chat session

Static

documentation

Three reference docs (data model, query reference, visual tools guide)

Helps the client form

valid tool calls

What is NOT sent

User credentials, OAuth tokens, refresh tokens, or session cookies

Other workspaces' or other companies' data (multi-tenant isolation is enforced per request — see §5)

Internal system fields (audit log entries, billing data, internal IDs of unrelated records) System prompts or internal AI configuration used by the in-product chatbot

Historical performance data or analytics data from accounts without the feature enabled

3. Available tools

The MCP server exposes the following tools. All tools operate within the authenticated user's workspace and permissions.

Data tools (read-only)

Tool

Description

list_accounts

Lists all social media accounts in the workspace with platform, type, and status

list_account_groups

Lists account groups (collections of accounts) in the workspace

list_dashboards

Lists all custom dashboards the user has access to

list_reports

Lists available reports in the workspace

list_post_groups

Lists all post groups in the workspace

list_user_tags

Lists all user-created tags in the workspace

list_post_collaborators

Lists all post collaborators (e.g. Instagram Collabs) in the workspace

list_post_partners

Lists all branded content / paid partnership partners in the workspace

list_available_metrics

Lists available metrics with keys, labels, scope, and post type support

search_posts

Searches posts with filters (keywords, dates, types, accounts, groups, performance)

get_post_details

Gets detailed metadata for a specific post

get_post_analytics

Gets analytics (engagement, reach, views, etc.) for a single post

get_post_audience

Gets audience demographic and geographic data for a specific post

get_post_content

Gets computer vision data, transcript, and AI-generated categories for a post

Tool

Description

get_account_stats

Gets account analytics for a time period

get_account_demographics

Gets audience demographics (age/gender) for an account

get_account_geography

Gets audience geography (country/city breakdown) for an account

get_account_group_stats

Gets analytics for a platform within an account group

get_group_stats

Gets analytics for a post group at platform or account level

get_platform_stats

Gets aggregated stats across all accounts for a platform

get_dashboard_widgets

Lists all widgets on a custom dashboard with their configurations

get_dashboard_widget_data

Fetches analytics data for a specific dashboard widget

get_dashboard_targets

Fetches targets configured on custom dashboards

get_target_progress

Fetches current progress for a specific dashboard target

Write tools (limited actions)

Tool

Description

add_tags_to_posts

Adds one or more user tags to one or more posts

remove_tags_from_posts

Removes one or more user tags from one or more posts

create_post_group

Creates a new post group with filters

create_report

Creates a new empty report

create_report_from_template

Creates a new report based on an existing template

add_slide_to_report

Adds a previously created slide to an existing report

update_slide

Updates the title, subtitle, or footer of an existing slide

set_targets_dashboard

Sets the targets dashboard for the session

Visual tools (create report slides)

Tool

Description

visual_compare_accounts

Creates a slide comparing 2–9 accounts side by side

Tool

Description

visual_compare_posts

Creates a slide comparing 2–4 posts side by side with metrics

visual_create_text_slide

Creates a text-only slide with title and body

visual_get_account_demographics

Creates a slide showing audience demographics for an account

visual_get_account_geography

Creates a slide showing audience geography for an account

visual_get_account_group_metric

Creates a slide with a single metric chart for an account group

visual_get_account_group_stats

Creates a slide with multiple metrics for an account group

visual_get_account_metric

Creates a slide with a single metric chart for an account

visual_get_account_stats

Creates a slide with multiple metrics for an account

visual_get_group_metric

Creates a slide with a single metric chart for a post group

visual_get_group_stats

Creates a slide with multiple metrics for a post group

visual_get_platform_metric

Creates a slide with a single metric chart for a platform

visual_get_platform_stats

Creates a slide with multiple metrics for a platform

visual_get_post_analytics

Creates a slide with multiple metrics for a post

visual_get_post_details

Creates a slide showing a single post with thumbnail and key metrics

visual_get_post_metric

Creates a slide with a single metric chart for a post

visual_search_posts

Creates a slide displaying multiple posts (max 8)

4. Third-party AI handling

Measure Studio is not the AI provider here. The model running on the client side (Claude, GPT, Gemini, etc.) is operated by whichever vendor the customer chose. Their data handling, training opt outs, and retention policies apply to anything the customer's client sends to that model — including the tool responses Measure Studio returns.

Customers are responsible for configuring their MCP client against a model tier that meets their own data residency and training requirements. Measure Studio does not send data to any AI provider through this surface; it only responds to authenticated tool calls from the client.

Recommended client configurations:

Claude / ChatGPT: use enterprise or team plans where the provider does not train on customer data

Gemini CLI: use the paid API tier where Google explicitly does not use input/output data for model training

5. Data storage and retention

The MCP server is stateless beyond standard request logging. Tool calls are not persisted as conversations

Request/response bodies are not stored — only access logs (path, status, duration, OAuth client ID) are kept under the same retention policy as the rest of the application

A short-lived session header is minted at connection time for client-server correlation; it lives only in the client's memory and server logs

OAuth access tokens, refresh tokens, and user bindings are stored encrypted at rest in the database, following the same practices as the rest of the platform

Errors are reported to the application's exception monitoring service with tool name tagged but without raw arguments or response data

6. Access controls

Control

Details

Feature gating

Disabled by default. Each company must have the MCP feature flag enabled. Without it, all MCP requests are rejected regardless of token validity.

Workspace

status

The workspace must be active. Inactive or suspended workspaces are rejected even with a valid token.

OAuth scope

All requests must present a bearer token issued with the dedicated MCP scope. Tokens without this scope are rejected.

Per-user binding

Each MCP access token is bound to the specific user who authorized it, captured server-side during the OAuth flow — never trusted from the client request.

Per-user

permissions

Every tool resolves data through the same permission policies used by the web application. The MCP user only sees what they would see logged in.

Tool-level

permissions

Individual tools can require specific permissions; these are checked before execution.

Authentication

OAuth 2.1 with PKCE (S256). Supports Dynamic Client Registration (RFC 7591) and Client ID Metadata Documents so third-party clients can self-register.

Redirect URIs

Client registration only accepts HTTPS, URN, or loopback HTTP redirect URIs. Non loopback HTTP is rejected.

Control

Details

Rate limiting

Per-company per-minute request limit (configurable, default 60). Client registration is additionally limited to 5 requests per IP per hour to prevent spam.

Network

All communication is encrypted via HTTPS (TLS 1.2+). The MCP endpoint runs behind the same TLS termination as the rest of the application.

Transport

Single POST endpoint — other HTTP methods are rejected. Every request after the initial handshake must include a valid session header.

Tenant isolation

Each tool fetches data exclusively within the authenticated user's workspace. Tokens cannot be replayed against a different workspace because the access token is tied to a single workspace at issuance.

7. Output data

Tool output passes through the same code paths as the in-product AI assistant — no free-form generation happens on the Measure Studio side. The "AI" that synthesizes prose is the customer's client, using only what Measure Studio returned.

Output includes:

Structured tool results — JSON or markdown payloads (search results, metric values, slide definitions)

Resource documents — markdown reference text (data model, query reference, visual tools guide) Error messages — sanitized error strings; internal exceptions are caught and returned as a generic error. No raw SQL, stack traces, or internal identifiers are exposed.

All output conforms to the JSON-RPC 2.0 envelope defined by the MCP specification.

8. Incident handling

The MCP endpoint is covered by the same operational monitoring (request volume, error rate, latency) as the rest of the application

Tool exceptions are routed to the existing exception monitoring pipeline

Rate-limit violations return standard HTTP 429 responses

The MCP server is fully independent of core data sync — an outage does not affect post ingestion, scheduled reports, exports, or any other product surface

Customers can revoke an MCP connection at any time, which immediately invalidates all access and refresh tokens issued for that connection

9. Compliance

Requirement

Status

GDPR

No new categories of personal data are introduced. Data flowing through MCP is the same workspace-scoped data already covered by the existing Measure Studio DPA. The customer's chosen AI client is a separate processor under the customer's control.

Data

residency

All MCP traffic terminates at the same Measure Studio infrastructure region as the rest of the application. What the client does with returned data is governed by the client's provider.

Right to

deletion

Removing a user or workspace cascades to all OAuth grants and tokens; future MCP calls fail authorization.

Sub

processor

Measure Studio does not introduce a new sub-processor for MCP. The client and its model provider are configured by the customer, not by us.

10. Frequently asked questions

Q: Does Measure Studio see what the AI does with our data? No. We only see the inbound tool calls (which tool, which arguments) and the response we returned. We do not see the model's reasoning, the conversation context on the client side, or how the user phrased their question.

Q: Is data sent to an AI provider for training? Not by us. Measure Studio sends nothing to any AI vendor through this surface. The customer's MCP client may send our tool responses to its model — whether that traffic is used for training depends on the client and its tier (enterprise/team tiers from major providers exclude training).

Q: How is the feature enabled? A Measure Studio admin enables the MCP feature flag on the company. The end user then connects their MCP client via the standard OAuth authorization flow. Both steps are required.

Q: Can an MCP client take destructive actions? Tools are limited to what the in-product AI assistant can do — primarily reads and lightweight writes (creating slides, applying tags, creating post groups). Account-level destructive operations (disconnecting accounts, deleting workspaces, billing changes) are not exposed.

Q: What happens if a token is stolen? The token grants access only to the workspace and user it was issued for, scoped to the MCP OAuth scope. Revoking the connection immediately invalidates all tokens. Bearer tokens are short-lived and refreshable via the standard OAuth refresh flow.

Q: What happens if the MCP endpoint goes down? Nothing else is affected. The endpoint is isolated from data ingest, scheduled jobs, and the rest of the API. Clients receive standard error responses and can retry. Failed tool calls do not corrupt state.

Q: Are conversations logged? No conversation transcripts are stored. Access logs capture metadata (timestamp, OAuth client, status, latency) but not request or response bodies.

Q: How is multi-tenancy enforced? Every tool resolves data through the authenticated user's workspace scope and permission policies. The access token is bound to a single workspace and a single user. There is no path that lets a token access data from another workspace.

Did this answer your question?