---
name: gentic-wiki
description: "An MCP server for building, querying, and maintaining org- and idea-level wikis. Ingest raw artifacts, auto-update entity pages and the index, query with natural language, and lint for broken wikilinks."
license: MIT
metadata:
  author: gentic
  version: "1.0.0"
---

# Gentic Wiki

Turn raw artifacts into a structured, interlinked wiki. Ingest research notes, briefs, and reports — your agent updates entity pages, refreshes the index, appends a log entry, and writes [[wikilinks]] automatically. Query the wiki in natural language and get LLM-synthesized answers with citations back to the source pages.

## When to apply

- User wants to turn research notes, briefs, or reports into a structured wiki.
- User wants to query their org's accumulated knowledge in natural language and get cited answers.
- User mentions "wiki", "entity pages", "backlinks", "wikilinks", or wants to roll up findings across ideas.
- User wants to view a wiki page with backlinks, or check the wiki for broken links and orphan pages.
- User has a new artifact (e.g. a research note from `startup_save_research_note`) and wants to fold it into the wiki.

## Tools

| Tool | Description | Cost |
|------|-------------|------|
| `wiki_ingest` | Ingest into the wiki — read source(s), update entity pages, refresh index.md, append a log entry, and write a verbatim note page (s3_key mode). **Idempotent — safe to re-ingest the same source.** Re-running on the same s3_key overwrites the note page with the current source bytes (so the note tracks any source updates) and refreshes entity synthesis against the current wiki state. Call this whenever a source is added OR updated, OR when you want to re-synthesize entities after related sources have been ingested. The `ingested` flag returned by `wiki_list_sources` indicates whether a source has ever been ingested — it does NOT mean the source should be skipped. Two scopes: `{ kind: 'idea', ideaSlug }` (sources must live under that idea), `{ kind: 'org' }` (sources are org-shared OR `{ from_ideas: true }` to roll up across idea wikis). Source S3 keys must be inside the calling org and must not be wiki-layer pages. Concurrent ingests on the same scope race on the snapshot read and last-write-wins on overlapping entities — serialize calls per scope if you need consistency. **On success the response includes `view_url` (rendered wiki index), plus `view_url` per entity and per note.** **ALWAYS render these as clickable markdown links — `[wiki index](https://mcp.gentic.co/wiki/...)` — in your reply to the user.** **NEVER render wiki paths (e.g. `ideas/foo/entities/bar`) as bracketed wikilinks (`[[...]]`) in user-facing text. Those are internal references; users cannot click them.** Wikilink syntax is only for entity/note bodies INSIDE the wiki itself — user-facing replies must use real URLs. | 25¢ / call |
| `wiki_lint` | Health-check the wiki — detects broken wikilinks, orphan entity pages, missing index entries, and stale index entries (pointing to deleted pages). Read-only; does not modify the wiki. Free for v1 (mechanical checks only). Use after a batch of ingests, or schedule periodically. | Free |
| `wiki_list_sources` | List the raw-source artifacts available to ingest into the wiki for a given scope, with each marked as ingested or pending. Use this BEFORE `wiki_ingest` to discover S3 keys — callers shouldn't have to know exact paths. **The `ingested` flag indicates whether a source has EVER been ingested — it is NOT a freshness signal and is NOT a hard 'do not re-ingest' marker.** Re-ingesting an already-ingested source is idempotent and the right move when (a) the user explicitly asks to refresh, (b) the source content has changed, or (c) you want to re-synthesize entities now that other related sources have been ingested. Idea scope lists artifacts under `research-notes/`, `brand/`, and `reports/` subprefixes of `orgs/{org}/ideas/{slug}/`. Org scope lists `orgs/{org}/brands/`. Ingested status is derived from existing wiki entity/note frontmatter (`sources:` field) and is computed across the entire wiki — sources ingested at one scope but listed from another are correctly marked ingested. Free. | Free |
| `wiki_query` | Ask a question against the org's curated wiki — the team's deliberate writing only. Returns an LLM-synthesized answer with citations to wiki pages, retrieved by semantic relevance. **Narrower than `brain_query`** — this tool consults only the curated wiki, not raw captures (Slack threads, PDFs, web pages, emails). For most 'what does the company know?' questions, prefer `brain_query`, which spans both halves of the brain. Use `wiki_query` only when you specifically want to consult deliberate writing in isolation. Searches across org-level and idea-level pages by default; pass `scope` to narrow. | Free |
| `wiki_view` | View a wiki page rendered with backlinks injected and `[[wikilinks]]` rewritten into clickable references. Pages are markdown documents under `orgs/{org}/wiki/...` — see WIKI.md for the schema. Use `path` for any page (idea or org level), or omit it to view the org-level homepage. The response includes `view_url` — a public web URL for the same page; surface it in your reply when the human might want to open it in a browser. | Free |

## Workflow

### 1. Pick a scope: idea vs org

Two scopes. **Idea scope** (`{ kind: 'idea', ideaSlug }`) ingests a source attached to a specific idea — the source's S3 key must live under that idea's prefix. **Org scope** (`{ kind: 'org' }`) ingests org-shared artifacts, _or_ rolls up across all idea wikis when paired with `{ from_ideas: true }`. Pick idea scope by default when working inside an idea; reach for org scope only for org-shared sources or roll-ups.

### 2. Ingest sources, not arbitrary text

`wiki_ingest` takes an `s3_key` pointing at a raw-source artifact already inside the calling org (e.g. `orgs/{org}/ideas/{slug}/research-notes/foo.md`). The key cannot point at an existing wiki-layer page — the wiki ingests _into_ itself, it doesn't ingest itself. If the user wants to add a new note, save it as a raw artifact first (e.g. via `startup_save_research_note`), then point `wiki_ingest` at the resulting S3 key.

### 3. Serialize concurrent ingests on the same scope

Concurrent ingests on the same scope race on the snapshot read and last-write-wins on overlapping entities. If you're ingesting a batch, **run them sequentially per scope** — don't fan out parallel `wiki_ingest` calls into the same idea or the same org. Different scopes are independent and safe to parallelize.

### 4. Query with the right scope

`wiki_query` defaults to `scope: 'all'` — searches both org-level and idea-level pages. Narrow with `scope: 'org'` for org-shared knowledge only, or `scope: 'idea'` + `ideaSlug` to search inside a single idea's wiki. Always surface the cited wiki paths back to the user so they can open the source pages — that's the whole point of an agent-native wiki.

### 5. View pages with backlinks

`wiki_view` renders a page with `[[wikilinks]]` rewritten as clickable references and a 'Referenced by' section appended (toggle off with `includeBacklinks: false`). Use the `path` argument with values like `'index'`, `'log'`, `'entities/core-customer'`, or `'ideas/irestore/entities/customer'`. Omit `path` to view the org homepage. Pages live under `orgs/{org}/wiki/...` — see WIKI.md for the schema.

### 6. Lint after batches and on a schedule

`wiki_lint` is read-only and free. It surfaces broken wikilinks, orphan entity pages (no inbound links), missing index entries, and stale index entries (pointing at deleted pages). Run it after a batch of `wiki_ingest` calls, or schedule it periodically. Default `scope: 'all'`; narrow to `'org'` or `'idea'` (with `ideaSlug`) to limit the pass.

### 7. Roll up across ideas

When the user wants org-wide insights from per-idea wikis (e.g. "what have we learned about pricing across all our ideas?"), call `wiki_ingest` with `scope: { kind: 'org' }` and `source: { from_ideas: true }`. This rolls up across every idea wiki under the org rather than ingesting a single artifact. Org scope only — invalid with idea scope.

## Notes

- All tools are organization-scoped — users only see their own wiki.
- Ingestion is **25¢ per call**. Querying, viewing, and linting are **free**.
- Source S3 keys must live inside the calling org and must not be wiki-layer pages — ingest raw artifacts, not the wiki itself.
- Concurrent ingests on the same scope race and last-write-wins on overlapping entities. Serialize per scope if you need consistency.
- `from_ideas: true` is org-scope only — it rolls up across all idea wikis under the org.
- Wiki pages are markdown under `orgs/{org}/wiki/...` and use `[[wikilinks]]` for cross-references. See WIKI.md for the full schema.

## Tool details

- `wiki_ingest` — Ingest into the wiki — read source(s), update entity pages, refresh index.md, append a log entry, and write a verbatim note page (s3_key mode). **Idempotent — safe to re-ingest the same source.** Re-running on the same s3_key overwrites the note page with the current source bytes (so the note tracks any source updates) and refreshes entity synthesis against the current wiki state. Call this whenever a source is added OR updated, OR when you want to re-synthesize entities after related sources have been ingested. The `ingested` flag returned by `wiki_list_sources` indicates whether a source has ever been ingested — it does NOT mean the source should be skipped. Two scopes: `{ kind: 'idea', ideaSlug }` (sources must live under that idea), `{ kind: 'org' }` (sources are org-shared OR `{ from_ideas: true }` to roll up across idea wikis). Source S3 keys must be inside the calling org and must not be wiki-layer pages. Concurrent ingests on the same scope race on the snapshot read and last-write-wins on overlapping entities — serialize calls per scope if you need consistency. **On success the response includes `view_url` (rendered wiki index), plus `view_url` per entity and per note.** **ALWAYS render these as clickable markdown links — `[wiki index](https://mcp.gentic.co/wiki/...)` — in your reply to the user.** **NEVER render wiki paths (e.g. `ideas/foo/entities/bar`) as bracketed wikilinks (`[[...]]`) in user-facing text. Those are internal references; users cannot click them.** Wikilink syntax is only for entity/note bodies INSIDE the wiki itself — user-facing replies must use real URLs.
  - `scope` (required) — Wiki scope to ingest into: `{ kind: 'idea', ideaSlug }` or `{ kind: 'org' }`.
  - `source` (required) — Either `{ s3_key }` to ingest a specific raw artifact, or `{ from_ideas: true }` to roll up across all idea wikis (org scope only).
- `wiki_lint` — Health-check the wiki — detects broken wikilinks, orphan entity pages, missing index entries, and stale index entries (pointing to deleted pages). Read-only; does not modify the wiki. Free for v1 (mechanical checks only). Use after a batch of ingests, or schedule periodically.
  - `scope` (string, enum: `all` | `org` | `idea`) — Limit the lint pass: 'all' (default) checks every page, 'org' checks only org-level pages, 'idea' requires `ideaSlug` and checks only that idea's pages.
  - `ideaSlug` (string) — Required when scope='idea'. The idea slug to lint.
- `wiki_list_sources` — List the raw-source artifacts available to ingest into the wiki for a given scope, with each marked as ingested or pending. Use this BEFORE `wiki_ingest` to discover S3 keys — callers shouldn't have to know exact paths. **The `ingested` flag indicates whether a source has EVER been ingested — it is NOT a freshness signal and is NOT a hard 'do not re-ingest' marker.** Re-ingesting an already-ingested source is idempotent and the right move when (a) the user explicitly asks to refresh, (b) the source content has changed, or (c) you want to re-synthesize entities now that other related sources have been ingested. Idea scope lists artifacts under `research-notes/`, `brand/`, and `reports/` subprefixes of `orgs/{org}/ideas/{slug}/`. Org scope lists `orgs/{org}/brands/`. Ingested status is derived from existing wiki entity/note frontmatter (`sources:` field) and is computed across the entire wiki — sources ingested at one scope but listed from another are correctly marked ingested. Free.
  - `scope` (required) — Wiki scope to list sources for: `{ kind: 'idea', ideaSlug }` or `{ kind: 'org' }`.
- `wiki_query` — Ask a question against the org's curated wiki — the team's deliberate writing only. Returns an LLM-synthesized answer with citations to wiki pages, retrieved by semantic relevance. **Narrower than `brain_query`** — this tool consults only the curated wiki, not raw captures (Slack threads, PDFs, web pages, emails). For most 'what does the company know?' questions, prefer `brain_query`, which spans both halves of the brain. Use `wiki_query` only when you specifically want to consult deliberate writing in isolation. Searches across org-level and idea-level pages by default; pass `scope` to narrow.
  - `question` (string, required) — Free-form question to ask the wiki.
  - `scope` (string, enum: `all` | `org` | `idea`) — Limit the search. 'all' (default) searches every page in the wiki. 'org' searches only org-level pages. 'idea' requires `ideaSlug` and searches only that idea.
  - `ideaSlug` (string) — When scope='idea', the idea slug to search inside. Ignored otherwise.
- `wiki_view` — View a wiki page rendered with backlinks injected and `[[wikilinks]]` rewritten into clickable references. Pages are markdown documents under `orgs/{org}/wiki/...` — see WIKI.md for the schema. Use `path` for any page (idea or org level), or omit it to view the org-level homepage. The response includes `view_url` — a public web URL for the same page; surface it in your reply when the human might want to open it in a browser.
  - `path` (string) — Wiki-relative path of the page to view, e.g. 'index', 'log', 'entities/core-customer', 'ideas/irestore/index', 'ideas/irestore/entities/customer'. Defaults to 'index' (org homepage).
  - `includeBacklinks` (boolean) — Append a 'Referenced by' section listing pages that link to this one. Defaults to true.

---

_This SKILL.md is generated from the live Gentic MCP manifest. Tool names, descriptions, and pricing are always current. Connect Gentic Wiki at https://gentic.co/wiki._
