Gentic Brain — Documentation

Stage any externally-originated artifact — a Slack thread, an email, a review, a note — into a per-org knowledge layer that's searchable in seconds and promotable into a structured wiki on demand. One status call returns counts, the most recent captured sources and wiki entities, and a 7-day event feed so an agent can answer 'what does our brain know about us?' in a single round-trip.

1. Getting Started

Sign Up & Get Your API Key

Before you can use Gentic Brain, you need an API key to authenticate your requests.

  1. Go to gentic.co/brain and create an account.
  2. Create an organization from your dashboard. API keys and billing are scoped to the organization.
  3. Generate an API key and use it as a Bearer token in your MCP client.

2. Connecting to the MCP Server

The server is available at https://mcp.gentic.co/brain. For Claude Code:

claude mcp add gentic-brain \
  --transport http \
  https://mcp.gentic.co/brain \
  --header "Authorization: Bearer YOUR_API_KEY"

For Claude Web and ChatGPT you can also connect via OAuth — no API key needed. See the connect section on the landing page for other MCP clients (n8n, OpenClaw).

3. Agent Skill

For the best results, pair the MCP server with the Gentic Brain agent skill. The MCP server gives your agent tool access; the skill teaches it the optimal workflow order. Both the raw SKILL.md and a ready-to-upload .skill bundle are generated on demand from the live manifest, so they always reflect the current tools and pricing.

Add the skill directly via URL:

https://gentic.co/brain/SKILL.md

Or upload a .skill bundle to Claude Managed Agents:

https://gentic.co/brain/gentic-brain.skill

Download this file and upload it wherever Claude Managed Agents asks for a .skill file. It's a zip bundle generated on demand from the latest SKILL.md.

4. When to Apply

  • User wants to capture a Slack thread, email, review, social mention, or note into the org's brain.
  • User mentions "capture", "remember", "add to the brain", "file this", or "the agent should know about this".
  • User wants to promote a previously-captured source into a permanent wiki entity page.
  • User wants to undo a capture ("forget this", "un-capture", "remove that source").
  • User asks "what does our brain know?" or wants a dashboard-style snapshot of recent captures and wiki activity.

5. Workflow

  1. 1. Stage by canonical source_uri, always

    `wiki_stage_source` is the single mandated ingest path. Identify the source by its upstream's primary key — `slack://{channel}/{ts}` for Slack messages, `notion://page/{id}` for Notion pages, `email://{message-id}` for emails. Never use a title or human label that can drift. The `slug` is caller-provided (FR-028 — the system never auto-generates slugs from titles) and combined with `source_type` forms the logical identity. Re-staging the same `(source_type, slug)` overwrites in place and emits `source_restaged`.

  2. 2. Pick the right source_type

    The `source_type` enum mirrors `vectorize_content` so chaining doesn't need a translation layer. Use `slack` for Slack messages and threads, `email` for emails, `review` for product/store reviews, `social` for tweets / TikTok / IG mentions, `creator_feedback` for influencer-program responses, `note` for internal notes (e.g. a researcher's hand-written observation), and `other` only when nothing else fits.

  3. 3. Search before promoting

    Staged sources are searchable via `search_knowledge` in ~10–60s after staging. Use that to check whether the brain already has overlapping coverage before deciding to promote. `wiki_ingest_source` is the bridge from captured knowledge to a permanent wiki entity page — call it only when the source is worth that promotion, not on every stage.

  4. 4. Promote with a scope

    `wiki_ingest_source` takes the original `source_uri` and a scope: `{ kind: 'idea', ideaSlug }` for an idea wiki or `{ kind: 'org' }` for the org-shared wiki. Default to the same scope the captured source belongs to. Idempotent — re-promoting on the same `source_uri` updates the existing entities in place (`was_created: false`). The response includes `entity_view_url`, `wiki_paths`, and `index_view_url` — surface these as clickable markdown links back to the user.

  5. 5. Soft-delete on uncapture

    `wiki_unstage_source` takes the same `source_uri` originally passed to `wiki_stage_source` — callers don't need to track the slug separately. It marks all matching knowledge chunks `is_deleted = TRUE`, writes a `.deleted` sidecar at the staged S3 key (the original .md is preserved for audit), and emits a `source_unstaged` event. Idempotent — re-running on a deleted or never-staged URI returns `soft_deleted: false`.

  6. 6. Read the snapshot in one round-trip

    `brain_status_snapshot` is free and aggregates counts, recents, and the 7-day event feed into a single response — exactly what the Brain dashboard panel in gentic-web renders. Agents can call it to answer 'what does the brain know about us?' without four separate reads. Returns `success: false` with an `error` string on per-org failure (e.g. unmapped org); plan for both branches in the consumer.

6. Tool Reference

7 tools, rendered live from the Gentic MCP manifest. Parameter tables come directly from each tool's JSON Schema.

brain_capture_document

1¢ / result (min 1¢)

Capture a hosted source into Gentic Brain by pasting its public URL. v1 supports **Google Docs** (paste any docs.google.com/document/... share link), **PDFs** (Drive PDF share links, or direct `.pdf` URLs hosted anywhere — Drive, S3, an internal docs server, etc.), and **web pages** (any public http(s) URL — Notion published pages, blog posts, help articles, public spec pages, agency reports). The Modal worker translates share-URLs to the actual content-fetch URL on its side, OCRs image-heavy PDFs, scrapes HTML pages, chunks, embeds, and stages the markdown — findable via `brain_query` and promotable into a curated wiki entity via `wiki_ingest_source`. **Requires the source to be publicly accessible** (Anyone-with-link for Drive content, no auth wall for web pages) — private files and auth-walled pages return a clear actionable error. Processing is async — the tool returns immediately with `status: "processing"` and the source becomes searchable shortly after. Optional `describe_images=true` on web-page captures invokes Gemini Vision on the page's images and folds the descriptions into the captured content — useful for image-heavy pages (marketing emails, ad creatives, social posts) where alt-text is sparse. Per-image cost (~5¢) is billed as a separate line item, capped at 20 images per page, and requires the org to have opted in via the dashboard. When the org hasn't opted in, `describe_images=true` silently downgrades to text-only capture.

ParameterTypeDescription
url
required
string

URL to capture. Accepts: Google Docs share links (`docs.google.com/document/d/<id>/...`), Drive PDF share links (`drive.google.com/file/d/<id>/view`), direct PDF URLs (any URL ending in `.pdf` or with `.pdf?...` query params, hosted anywhere), and **any public http(s) web page URL**. Sheets, Slides, Forms, folder URLs, and SharePoint/OneDrive Word docs are out of v1 scope and return specific errors.

describe_images
required
boolean

When true on a web-page capture, the Modal worker fetches images on the page, runs Gemini Vision against them, and folds the descriptions into the captured content (alongside text + alt-text). Useful when alt-text is sparse on image-heavy pages (Klaviyo emails, ad creatives, social posts). Costs ~5¢ per non-cached image — same image across captures only bills once. Capped at 20 images per page; beyond the cap, the worker truncates and notes it in the staged markdown. **Requires the org to have opted in** at Org Settings → Brain (default off). If true but the org hasn't opted in, the call silently downgrades to text-only capture and logs a warning. No effect on `google_doc` / `pdf` source types in v1 — web_page only.

default: false

vectorize_images
required
boolean

When true on a web-page capture, the Modal worker produces multimodal embeddings (Gemini Embedding 2) for the captured page's images and writes them to the knowledge table as `chunk_type='image'` rows alongside text chunks. Enables visual-similarity retrieval — `brain_query` can match against image embeddings natively (same vector space as text), and operators can pass an attached image as a query input to find visually-similar captured images. Costs ~1-2¢ per non-cached image — same image across captures only bills once. **Requires the org to have opted in** at Org Settings → Brain (default off, distinct from `image_descriptions_enabled`). If true but the org hasn't opted in, the call silently downgrades to no-embeddings and logs a warning. No effect on `google_doc` / `pdf` source types in v1 — web_page only. Often paired with `describe_images=true` so one Modal pass produces both outputs.

default: false

brain_capture_text

1¢ / result (min 1¢)

Capture a raw text blob into Gentic Brain — for document-shaped text that arrived through a channel with no fetchable URL (creator emails from influencer seeding, pasted Slack quotes, inbound form submissions, etc.). The Modal worker chunks, embeds, and stages the text alongside Brain's document/web captures — findable via `brain_query` and promotable into a curated wiki entity via `wiki_ingest_source`. Use `brain_capture_document` instead when the source has a public URL (Google Doc share link, web page, PDF). Typed event records (reviews, social comments, support tickets, etc.) belong in the activity substrate and have their own capture tool — do NOT use this for those. Processing is async — the tool returns immediately with `status: "processing"` and the text becomes searchable shortly after. Billed per chunk (1¢/chunk) on completion.

ParameterTypeDescription
content_text
required
string

The raw text to capture. Required; non-empty; max 1 MB. For an email, paste the body (subject + sender go into source_metadata). For a multi-message thread, concatenate with sender attribution per message.

source_metadataobject

Light provenance about where the text came from. All fields optional. Stored alongside the captured content; surfaces in citations and downstream filtering.

slugstring

Optional caller-supplied slug. Defaults to `text_<first 16 chars of sha256(content_text)>` for content-hash-based dedup across re-captures of the same text. Override only when you need a stable human-readable identifier (e.g. for a known recurring source).

brain_query

25¢ / call

Ask a natural-language question against the organization's full brain — both the raw machine memory (knowledge: Slack captures, PDFs, web pages, inbound emails, e-commerce events) and the team's deliberate writing (curated wiki entities). Returns a synthesized grounded answer with clickable citations resolved back to originating systems (Slack permalinks, PDF/web URLs, wiki page URLs). The team's deliberate writing is treated as authoritative on conflicts; raw captures provide supporting context. **Render every returned citation as a clickable markdown link using `view_url` when present, falling back to `source_uri` for non-URL identifiers (e.g. `slack://...` — your Slack-aware renderer should turn these into workspace permalinks).** Use this for any 'what does the company know about X?' / 'why did we decide Y?' / 'how do we handle Z?' question. For consulting only the curated wiki, use `wiki_query` instead.

ParameterTypeDescription
question
required
string

Free-form question to ask the brain.

scopestring

Limit the search. 'all' (default) searches every scope in the brain. 'org' searches only org-level content. 'idea' requires `ideaSlug` and limits to that idea.

enum: all, org, idea

ideaSlugstring

When scope='idea', the idea slug to search inside. Ignored otherwise.

include_image_rows
required
boolean

Whether to include image-embedding rows (chunk_type='image', from tier-3 vectorize_images captures — gentic-mcp-server#429) in the knowledge retrieval set. Default true: visual-similarity retrieval is the unified-corpus value prop, and image rows surface alongside text chunks via the same cosine-similarity search since Gemini Embedding 2 puts both in the same vector space. Set false for text-only retrieval when image rows would be off-topic (rare; mostly a debugging hatch).

default: true

brain_status_snapshot

Free

Aggregate the current Brain state for the org in one read-through call. Returns counts of captured sources, knowledge chunks, wiki entities, and wiki notes; the 10 most recently captured sources + 10 most recently updated wiki entities; and the last 7 days of brain events as a chronological feed (capped at 100). No new persistent store — pure reads from per-org MotherDuck and S3. Used by the Brain dashboard panel in gentic-web; agents can call it to summarize 'what does the brain know about us?' in one round-trip. Free.

ParameterTypeDescription
_unusedany

No inputs in v1. The auth context determines the org; the snapshot is org-wide.

wiki_ingest_source

25¢ / call

Promote a previously-staged source (captured via wiki_stage_source) into the wiki by its canonical source_uri. Resolves (source_type, slug) from the per-org knowledge layer, constructs the staged S3 key, and invokes wiki_ingest's synthesis path — updates entity pages, refreshes the index, appends a log entry, writes the verbatim note. Symmetric with wiki_stage_source / wiki_unstage_source (all three Brain primitives identify sources by source_uri). **Idempotent — safe to re-promote.** Re-running on the same source_uri updates the existing entities in place (was_created=false). **On success the response includes `entity_view_url` for the canonical entity, `wiki_paths` for all entities touched, and `index_view_url` for the updated index — surface these as clickable markdown links in user-facing replies.** Used by gentic-computer's brain_promote_thread intent handler.

ParameterTypeDescription
source_uri
required
string

Canonical external identity of the staged source to promote, e.g. `slack://C0123456789/1700000000.000000`. Same value originally passed to wiki_stage_source.

scope
required
any

Wiki scope to ingest into: `{ kind: 'idea', ideaSlug }` for an idea wiki, or `{ kind: 'org' }` for the org-shared wiki.

wiki_stage_source

Free

Stage an externally-originated source artifact into the brain. Writes the markdown body to the org's S3 wiki-sources prefix, asynchronously vectorizes it into the knowledge layer (searchable via search_knowledge within ~10–60s), and emits a `source_staged` brain event for the ledger. This is the single mandated ingest path — Slack reaction handlers (gentic-computer), future doc-system connectors (Notion / Drive / Confluence), and direct-upload tools all deposit through here. Free; the chained vectorize_content charges its own per-chunk meter on completion. **Idempotent on (source_type, slug)**: re-staging the same source overwrites in place and emits `source_restaged` so the brain doesn't accumulate duplicates from re-reactions or re-syncs.

ParameterTypeDescription
title
required
string

Human-readable title of the source.

markdown
required
string

Source body as markdown. Becomes the body of the staged S3 file.

source_uri
required
string

Canonical external identity of the source, e.g. `slack://C0123456789/1700000000.000000`, `notion://page/abc-def`. Stable across edits — use the upstream's primary key, never a title or human label that can drift.

slug
required
string

Caller-provided stable slug derived from the source_uri (FR-028 — the system never auto-generates slugs from titles). Used as the S3 filename and as the knowledge `slug` column. Same (source_type, slug) is treated as the same logical source — re-stage overwrites.

source_type
required
string

Origin of the source. Matches vectorize_content's enum so chaining doesn't require a translation layer.

enum: email, slack, review, social, creator_feedback, note, other

source_updated_atstring

ISO-8601 timestamp of when the original source was last modified. Optional for one-shot ingests; required by future connector delta-sync paths.

metadataobject

Free-form metadata stored alongside the staged source (e.g. {channel_name, thread_message_count, truncated} for Slack).

wiki_unstage_source

Free

Soft-delete a previously-staged source by its canonical source_uri. Resolves (source_type, slug) by looking up the knowledge layer, marks all matching knowledge chunks `is_deleted = TRUE`, writes a `.deleted` sidecar marker at the staged S3 key (the original .md is preserved for audit), and emits a `source_unstaged` brain event. Idempotent — subsequent calls on an already-deleted or never-staged source_uri return `soft_deleted: false` with `knowledge_chunks_marked: 0`. Free. Used by gentic-computer's uncapture-intent handler (FR-005). The identity-first design means callers don't need to track the slug separately — passing the same source_uri originally given to wiki_stage_source is sufficient.

ParameterTypeDescription
source_uri
required
string

Canonical external identity of the staged source to soft-delete, e.g. `slack://C0123456789/1700000000.000000`. Same value originally passed to wiki_stage_source.

7. Pricing

Pricing is pulled live from the Gentic MCP manifest. All prices are per call and deducted from your Gentic credits.

ToolCost
brain_capture_document1¢ / result (min 1¢)
brain_capture_text1¢ / result (min 1¢)
brain_query25¢ / call
brain_status_snapshotFree
wiki_ingest_source25¢ / call
wiki_stage_sourceFree
wiki_unstage_sourceFree

8. Notes

  • All tools are organization-scoped — the auth context determines the org, never a tool argument.
  • `wiki_stage_source` is **free**; chained vectorization charges its own per-chunk meter on completion. `wiki_ingest_source` (promotion) is **25¢**. `wiki_unstage_source` and `brain_status_snapshot` are **free**.
  • Identity is `(source_type, slug)`. Re-staging the same logical source overwrites in place and emits `source_restaged` so the brain doesn't accumulate duplicates.
  • Knowledge chunks are searchable ~10–60s after `wiki_stage_source` returns — the call itself is sub-second.
  • `brain_status_snapshot` returns the last 7 days of brain events capped at 100. `truncated: true` signals the cap was hit.
  • Sources soft-deleted via `wiki_unstage_source` keep their original markdown in S3 for audit; only knowledge chunks and the sidecar marker change.