tribe-mcp
Allows listing and retrieving organic Instagram posts logged for a brand, including detailed post data and retention curves.
Allows listing and retrieving organic TikTok posts logged for a brand, including detailed post data and retention curves.
Provides tools to read and write brand data, neural fingerprints, and organic posts stored in a Turso database.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tribe-mcplist all brands"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tribe-mcp
Standalone MCP server that exposes TRIBE brand data — neural fingerprints, organic posts, and brands — from a Turso (libsql) database to MCP clients like Claude. Lets you do brand-grounded analysis over real data. No app or dashboard required; it only needs a Turso DB with the expected tables.
Tools
Tool | What it does |
| Discover brand IDs to use with the other tools. |
| List TRIBE fingerprints (filter by brand / label). |
| Pull a full fingerprint with channels + timeline by ID. |
| Pull two fingerprints side-by-side for A/B analysis. |
| List Instagram + TikTok posts logged for a brand. |
| Pull a single organic post with its retention curve. |
| Persist an analysis back to the DB so other tools/UIs can read it. |
Related MCP server: mcp-turso-cloud
Setup
Requires Node 18+ and a Turso database (the tables are defined in src/db.ts).
git clone https://github.com/<you>/tribe-mcp.git
cd tribe-mcp
npm install
cp .env.example .env # fill in TURSO_DATABASE_URL + TURSO_AUTH_TOKEN
npm run buildSmoke-test:
TURSO_DATABASE_URL=... TURSO_AUTH_TOKEN=... npm start
# prints "tribe-mcp ready (stdio)" then waits for MCP messages; Ctrl-C to exit.Connect to Claude
Claude Code (available in every project):
claude mcp add tribe -s user \
-e TURSO_DATABASE_URL="libsql://<your-db>.turso.io" \
-e TURSO_AUTH_TOKEN="<your-token>" \
-- node /ABSOLUTE/PATH/TO/tribe-mcp/dist/index.jsClaude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"tribe": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/tribe-mcp/dist/index.js"],
"env": {
"TURSO_DATABASE_URL": "libsql://<your-db>.turso.io",
"TURSO_AUTH_TOKEN": "<your-token>"
}
}
}
}Restart the client; the tribe tools appear in conversation.
The model (Modal) — modal_app.py
modal_app.py is the inference backend that produces the fingerprints this MCP
reads. It runs Meta FAIR's TRIBE v2 brain-encoding pipeline on a Modal GPU:
video URL / upload
→ yt-dlp + ffmpeg
→ V-JEPA2 (video) + Wav2Vec2 (audio) + LLaMA (transcript text) features per fMRI TR
→ TRIBE v2 brain encoder → Schaefer-400 / 7-network parcel time-series (T × 400)
→ reduce to 9 channels + global stats + nilearn 3D brain + Whisper transcript
→ Fingerprint JSON (stored in Turso → served by this MCP)Endpoints (deployed at https://<workspace>--api.modal.run): POST /start → job_id,
GET /poll?job_id=… → running|complete|error, GET /health, plus /serve_brain,
/serve_video, /predictions.
Deploy
pip install modal && modal token new # one-time
# optional Bearer auth (recommended for a public endpoint):
modal secret create tribe-api-key TRIBE_API_KEY="$(openssl rand -base64 32)"
modal deploy modal_app.py
curl https://<workspace>--api.modal.run/health # {"status":"ok","atlas":"schaefer_400_7networks_v1",...}TRIBE weights
Set TRIBE_CKPT (a path baked into the image or on the mounted Volume) to Meta's
trained TRIBE v2 brain-encoder checkpoint. Without it, a deterministic placeholder
encoder runs so the whole app is end-to-end testable — its numbers are structurally
valid but not real brain predictions.
⚠️ Reconstruction + license. The original
tribev2-by-meta/modal_app.pywas lost; this file is reconstructed from the dashboard's exact API contract + design doc — the serving contract and feature pipeline are faithful; supply the checkpoint for real predictions. TRIBE v2 is CC BY-NC (research only) — this wrapper is MIT, but the model weights are not; don't ship client-facing deliverables from its outputs without a commercial license from Meta.
License
MIT — see LICENSE. (Applies to this wrapper code, not the TRIBE v2 weights.)
Available Tools
7 toolscompare_fingerprintsA
Pull two neural fingerprints side-by-side. Returns both full payloads — diffing happens in the analysis layer (Cowork-Claude).
| Name | Required | Description | Default |
|---|---|---|---|
| id_a | Yes | ||
| id_b | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly states that diffing is not performed internally and that both full payloads are returned. This is transparent for the tool's basic behavior, though it omits details like rate limits or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loaded with the key action and output. Every word is necessary; no redundancy or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately states the return format as 'both full payloads', though it does not elaborate on what constitutes a full payload. For a simple tool, this is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description provides no additional meaning for the parameters id_a and id_b. It only implies they are fingerprint IDs, but does not explain format, constraints, or usage beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool pulls two neural fingerprints side-by-side and returns their full payloads. It distinguishes from sibling tools like get_fingerprint (which retrieves a single fingerprint) by specifying the comparison context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to compare two fingerprints by fetching their data), but does not provide explicit guidance on when to use this tool versus alternatives like get_fingerprint. It lacks exclusions or context on prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fingerprintA
Pull a single neural fingerprint by ID with the full channels + timeline data. Heavy — only call when you need the full payload.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool is 'heavy' and returns full channels and timeline, indicating large payload. This adds behavioral context beyond the schema, though it does not disclose auth or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first defines purpose, the second gives usage guidance. Every word adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with one parameter and no output schema, the description is largely complete. It explains when to use and what data it returns. It could mention the absence of filtering or pagination, but the 'full payload' hint suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one required string parameter 'id' with 0% description coverage. The description does not elaborate on the id parameter beyond its role in identifying the fingerprint. With a single parameter and clear purpose, it partially compensates but lacks format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool pulls a single neural fingerprint by ID with full channels and timeline data, using a specific verb and resource. It distinguishes itself from siblings like list_fingerprints (which lists) and compare_fingerprints (which compares).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes 'Heavy — only call when you need the full payload,' giving clear context on when to use (for full data) and implicitly when not to (if a summary suffices). It does not explicitly name alternatives but the warning provides guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organic_postB
Pull a single organic post by ID with retention curve.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions 'retention curve' but doesn't explain what it is, permissions required, side effects, or return value. The word 'pull' suggests read-only but is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. However, it could be slightly more structured to separate purpose from the retention curve detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the basic purpose. However, it lacks guidance on usage context relative to siblings and details about the retention curve output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It clarifies 'id' is the post identifier, which adds meaning beyond the bare schema, but doesn't specify format or source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'pull', the resource 'single organic post', the identifier 'by ID', and distinguishes from sibling 'list_organic_posts' by specifying singularity and inclusion of 'retention curve'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing a single post by ID but lacks explicit guidance on when not to use or alternatives. Sibling tools like 'list_organic_posts' and 'get_fingerprint' exist but are not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_brandsA
List all brands in the database. Use to discover brand_id values for the other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It describes a read-only list operation, which is consistent, but adds no extra behavioral context beyond listing all brands.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The action ('List all brands') is front-loaded, followed by the purpose. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters, no output schema, and no annotations, the description is complete enough—it explains what the tool does and why to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and schema coverage is 100% (trivially). The description does not need to explain parameters; it is adequate as is.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all brands and explicitly mentions the purpose of discovering brand_id values, distinguishing it from sibling tools like compare_fingerprints or get_fingerprint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use to discover brand_id values for the other tools,' providing clear context for when to use it. However, it does not specify when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fingerprintsA
List TRIBE neural fingerprints. Filter by brand_id and/or label. Returns metadata only — call get_fingerprint for the full channel/timeline data.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| limit | No | ||
| brand_id | No | Filter by brand. Get IDs from list_brands. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses that the tool returns only metadata and hints at data source for brand_id from list_brands. However, it does not mention permissions, rate limits, or other behaviors like sorting or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose, filtering, and distinction from a sibling tool. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A list tool with 3 parameters and no output schema. Description covers basic purpose and filtering, but lacks details on pagination (limit behavior), ordering, and return format. Could be more complete for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (brand_id). Description adds cross-reference for brand_id, but does not explain label enum values or provide details about limit beyond its default. Given low coverage, more parameter explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'TRIBE neural fingerprints'. It distinguishes from sibling 'get_fingerprint' by noting this returns metadata only, and also mentions filtering options, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context by stating that this tool returns metadata only and advises using 'get_fingerprint' for full data. However, it does not address when to use alternatives like 'compare_fingerprints' or mention any prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_organic_postsA
List Instagram + TikTok organic posts that the brand has logged. Filter by brand_id and/or platform.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| brand_id | No | ||
| platform | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states basic listing and filtering, but omits details like ordering, pagination (limit parameter not addressed), authentication requirements, or rate limits. The lack of transparency limits an agent's ability to anticipate behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence, front-loaded with the action and resource. No wasted words; every element (platforms, filtering) adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, no output schema, no annotations), the description is moderately complete. It covers the core action and main filters but misses the limit parameter and return format. For a listing tool, more detail on pagination would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions brand_id and platform as filters, adding meaning beyond the schema. However, the limit parameter is not explained. The description partially covers parameters but is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'List' and the resources 'Instagram + TikTok organic posts'. It also specifies filtering options, differentiating it from siblings like 'get_organic_post' (single post) and 'list_brands' (brands). The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: to list organic posts filtered by brand_id and/or platform. However, it does not explicitly exclude cases or mention alternatives, such as using 'get_organic_post' for a single post. The guidance is good but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_insightA
Persist an analysis insight back to the database so other tools or UIs can read it. Use after producing a substantive analysis you want to keep. The markdown content is stored as-is.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| model | No | Model identifier (e.g. claude-opus-4-7). | |
| content | Yes | Markdown analysis body. | |
| brand_id | Yes | ||
| data_snapshot | No | Optional JSON of inputs that produced this insight. | |
| date_range_end | No | YYYY-MM-DD | |
| date_range_start | No | YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions persisting to a database and storing markdown as-is, but it does not clarify whether the operation is create vs update, required permissions, error behavior, or idempotency. Key behavioral context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at 31 words split into two sentences. It front-loads the key action and then provides usage guidance. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should explain return values (e.g., an ID or success indicator). It does not. It also does not mention optional parameters like data_snapshot or date_range, leaving gaps for an agent trying to use the tool correctly. For a write tool with 7 parameters and no annotations, this is insufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 71% (5 of 7 parameters described). The description adds no parameter-specific information beyond what the schema already provides. It mentions 'Markdown content is stored as-is,' which slightly reinforces the 'content' parameter, but adds no new semantics. Baseline score of 3 is appropriate given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'persist' and the resource 'analysis insight', and it differentiates from sibling tools which are all read-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use after producing a substantive analysis you want to keep', providing clear context. It does not discuss when not to use or alternatives, but sibling tools are not similar enough to cause confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
compare_fingerprints - First observed
get_fingerprint - First observed
get_organic_post - First observed
list_brands - First observed
list_fingerprints - First observed
list_organic_posts - First observed
write_insight
TDQS
Scored across 7 tools
Every tool has a clearly distinct purpose: compare_fingerprints compares two fingerprints, get_fingerprint retrieves full fingerprint data, get_organic_post retrieves a single post, list_brands returns all brands, list_fingerprints lists fingerprint metadata, list_organic_posts lists posts, and write_insight stores analysis. No overlap.
Most tools follow a verb_noun pattern (list_brands, list_fingerprints, list_organic_posts, write_insight). However, there is minor inconsistency: compare_fingerprints uses plural, while get_fingerprint uses singular; get_organic_post is singular, but list_organic_posts is plural. Overall consistent but not perfect.
7 tools is well-suited for the domain of brand fingerprint analysis and organic post management. Each tool covers a necessary operation without bloat, and the count is within the ideal 3-15 range.
The tool set covers listing, retrieval, and comparison of fingerprints, listing and retrieval of posts, listing brands, and writing insights. Missing update/delete operations for most entities, but the stated purpose (analysis and insight persistence) is reasonably covered. Minor gaps exist.
Maintenance
Related MCP Connectors
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
- SupabaseOAuthcom.supabase
MCP server for interacting with the Supabase platform
MCP server for building and testing AI agents with multi-model experimentation and insights.
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
Related MCP Servers
- AlicenseBqualityCmaintenance🗂️ A Model Context Protocol (MCP) server that provides integration with Turso databases for LLMs. This server implements a two-level authentication system to handle both organization-level and database-level operations, making it easy to manage and query Turso databases directly from LLMs.95318MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that integrates Turso databases with LLMs, supporting organization and database-level operations with two-level authentication.MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for The Culture, a fashion-focused social media app, exposing Supabase database operations and Hugging Face model inference as tools for use in Claude Code, n8n agents, and the Larry orchestrator.-
- AlicenseNot gradedqualityBmaintenanceMCP server that exposes brand identity guidelines (visual look and voice) as markdown, enabling LLMs to produce on-brand content.4MIT