Gentic Files — Documentation
A private, path-addressable file store your agent writes to and reads back byte-for-byte. Save an exact artifact — a podcast transcript, a prep doc, a run-of-show — grow it over time by appending, and get the same bytes back on demand, or find it by meaning through the same semantic index that powers Brain. Files is canonical state: what you save is what you get, never a synthesized summary.
1. Getting Started
Sign Up & Get Your API Key
Before you can use Gentic Files, you need an API key to authenticate your requests.
- Go to gentic.co/files and create an account.
- Create an organization from your dashboard. API keys and billing are scoped to the organization.
- 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/files. For Claude Code:
claude mcp add gentic-files \
--transport http \
https://mcp.gentic.co/files \
--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 Files 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/files/SKILL.mdOr upload a .skill bundle to Claude Managed Agents:
https://gentic.co/files/gentic-files.skillDownload 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 says "save this as a file", "add this file", or names a path/filename to store an exact artifact (a transcript, a doc, a run-of-show).
- User says "add X as an agenda item" or "add this as prep for the pod" — drop it into a prep folder as a file.
- User wants a file back exactly as it was saved ("give me the transcript from episode 34", "pull up the run-of-show").
- User wants to grow a single doc over time — "add this topic to the episode-2 prep", "append this to the running notes" — rather than make a new file each time.
- User wants to find a saved file by meaning when they don't remember the exact path.
- User wants to organize artifacts into folders (path prefixes) or list what's in one.
- Reserve Brain capture for ambient / automatic capture of externally-originated sources (Slack threads, emails, reviews, web PDFs) — Files is for exact artifacts the user explicitly wants stored and returned verbatim.
5. Workflow
1. Route save-a-file to Files, ambient capture to Brain
Use Files when the user explicitly wants an artifact stored and returned exactly — "save this as a file", "add this transcript", "add X as prep for the pod", or any request that ends in them wanting the file back byte-for-byte. Reserve Brain's `wiki_stage_source` for ambient/automatic capture of externally-originated sources (a Slack thread, an email, a review, a web PDF the agent ingests on its own). The mental model: Files = canonical state, Brain = derived index, Wiki = synthesized curation. A `save_file` is never a `wiki_ingest` — they have different contracts and different homes.
2. Save by path; the path is the identity
`save_file` takes a path like `episode-2-prep/run-of-show.md` and the content as text/markdown. The path (normalized) is the file's logical identity — re-saving the same path replaces the whole file in place (new bytes, new version, stale index chunks retired) rather than creating a duplicate. To add to a file instead of overwriting it, reach for `append_file` (below). Paths are validated: traversal (`..`), control characters, and over-long names are rejected. Text and markdown first; binary is a phase-2 capability.
3. Grow a running doc with append_file
`append_file` adds new content to the end of an existing file — the caller sends only the new bytes, and everything already in the file is preserved exactly. That's the point: an append never rewrites prior content, so the verbatim guarantee holds even as a doc evolves. Use it to build up a single document over time instead of scattering one file per fragment — e.g. collect podcast topics into one `episode-2-prep.md` by appending each new topic as it comes in, rather than `topic-1.md`, `topic-2.md`. It's create-or-append: appending to a path that doesn't exist yet creates it, appending to one that does adds to the end. Append-to-end only — to change earlier content, read with `get_file`, edit, and `save_file` the whole thing back.
4. Use folders as path prefixes
There are no folder objects — a "folder" is just a shared path prefix like `episode-2-prep/`. Collect related artifacts by giving them a common prefix (drop articles and a transcript into `episode-2-prep/`, then build a `run-of-show.md` alongside them). `list_files` and `find_file` both scope to a prefix, so you can list or search within one folder without touching the rest of the org's files.
5. Get back exact bytes with get_file
`get_file` returns the precise UTF-8 content `save_file` stored — no LLM summary, no truncation. This is the read boundary: it looks the file up in the org's manifest, verifies ownership, then returns the stored bytes (or not-found for a missing or deleted file). When the user asks for "the transcript from episode 34", resolve the path (you may need `find_file` first) and hand back exactly what was saved.
6. Find by meaning, then fetch verbatim
`find_file` is retrieval-only — it runs a semantic search over the knowledge index filtered to your files (body + metadata: path, filename, tags, title) and joins the manifest to return matching file paths. It never synthesizes an answer and never calls Brain's query path; it tells you which file the user means. Follow it with `get_file` to return the actual content. A file that's saved but not yet indexed surfaces its index status rather than silently missing.
7. Delete removes the file for real
`delete_file` deletes the stored object, tombstones the manifest row, and un-indexes the file's knowledge chunks so it stops appearing in `find_file`. It's the clean way to retract a file the user no longer wants. List and find never return tombstoned files; a subsequent `get_file` on a deleted path returns not-found.
6. Tool Reference
6 tools, rendered live from the Gentic MCP manifest. Parameter tables come directly from each tool's JSON Schema.
append_file
Append content to the END of a file without resending the whole thing — the server reads the existing bytes and concatenates yours after a separator (default newline), so the prior content is preserved exactly. Ideal for a running document you add to over time (e.g. episode prep). If the path doesn't exist yet, it's created with your content as the initial body (create-or-append). The file re-indexes for find_file if it was searchable. Free; indexing bills on the per-chunk vectorize meter.
| Parameter | Type | Description |
|---|---|---|
pathrequired | string | The file path to append to, e.g. `episode-2-prep.md`. |
contentrequired | string | Verbatim UTF-8 content to append to the end of the file. |
separator | string | String inserted between the existing body and the appended content. Default "\n". |
delete_file
Delete a file for real — removes the stored object, tombstones the manifest record, and unindexes it. The file then disappears from list_files, find_file, and get_file. Idempotent: deleting a path that's already gone returns `{ deleted: false }` without error. Free.
| Parameter | Type | Description |
|---|---|---|
pathrequired | string | The exact file path to delete, e.g. `podcasts/ep-34/transcript.md`. |
find_file
Find your saved files by meaning when you don't remember the exact path — e.g. "the article where Bill Gurley talked about founder mode" or "the transcript from episode 34". Returns a relevance-ranked list of candidate file paths with excerpts and scores (NOT a synthesized answer) — then retrieve the one you want verbatim with get_file. Matches on path, filename, tags, and title as well as body. Optional `prefix` scopes the search to a folder. Free.
| Parameter | Type | Description |
|---|---|---|
queryrequired | string | Natural-language description of the file you're looking for. |
prefix | string | Optional folder path prefix to scope the search, e.g. `episode-2-prep/`. |
limit | integer | Max candidate files to return (default 10, max 50). max 9007199254740991 |
get_file
Retrieve a file's exact, verbatim content by its path. Returns the same UTF-8 bytes save_file stored — no summarization or truncation. Reads are private to your organization and gated on ownership. A missing or deleted path returns `{ found: false }`. Free.
| Parameter | Type | Description |
|---|---|---|
pathrequired | string | The exact file path used at save time, e.g. `podcasts/ep-34/transcript.md`. |
list_files
List your saved files, optionally scoped to a folder via `prefix` (folders are just path prefixes). Returns each file's path, size, tags, content type, index status, last-updated time, and a short raw snippet of its content — never an AI summary. Paginated with `limit`/`cursor`. Free.
| Parameter | Type | Description |
|---|---|---|
prefix | string | Folder path prefix to scope the listing, e.g. `episode-2-prep/`. Omit to list all files. |
limit | integer | Max files per page (default 50, max 200). max 9007199254740991 |
cursor | string | Pagination cursor from a previous call's `next_cursor`. |
include_snippet | boolean | Default true. When true, fetch a short raw content snippet per file. Set false to skip the per-file S3 reads for a faster metadata-only listing. |
save_file
Save a file VERBATIM to your private, org-owned file store and register it in the files manifest. The exact UTF-8 bytes you pass are what get_file returns later — no summarization, reformatting, or truncation. You choose the path (folders + filename), e.g. `podcasts/ep-34/transcript.md`; folders are just path prefixes. Re-saving the same path overwrites in place (last-write-wins); saving identical content is a no-op. With `searchable` (default true) the file is also indexed for semantic recall via find_file. v1 is text/markdown-class only (.md, .txt, .json, .csv); binary arrives in phase 2. Free; indexing bills on the per-chunk vectorize meter.
| Parameter | Type | Description |
|---|---|---|
pathrequired | string | User-chosen file path, e.g. `podcasts/ep-34/transcript.md`. Relative (no leading slash); '/' separates folders. Rejected: absolute paths, '..'/'.', backslashes, control chars, empty segments. |
contentrequired | string | Verbatim UTF-8 body. Stored and returned byte-for-byte. |
content_type | string | MIME type. Default `text/markdown; charset=utf-8`. v1 accepts text-class only (text/*, application/json). |
tags | string[] | Optional tags; indexed alongside the body so a file is findable by tag. |
metadata | object | Optional free-form metadata stored on the manifest row. |
searchable | boolean | Default true. When true the file is indexed for find_file. false stores it verbatim with no indexing (retrievable only by exact path). |
overwrite | string | On an existing path: `replace` (default, last-write-wins) or `error` (refuse and report the conflict). enum: replace, error |
7. Pricing
Pricing is pulled live from the Gentic MCP manifest. All prices are per call and deducted from your Gentic credits.
| Tool | Cost |
|---|---|
| append_file | Free |
| delete_file | Free |
| find_file | Free |
| get_file | Free |
| list_files | Free |
| save_file | Free |
8. Notes
- All tools are organization-scoped — the auth context determines the org, and every read verifies per-org ownership against the manifest before touching storage. Files are never exposed at a public URL.
- Verbatim contract: `get_file` returns the exact UTF-8 bytes `save_file` stored — no synthesis, summarization, or truncation. Files is canonical state, distinct from Brain (derived index) and Wiki (synthesized curation).
- Identity is the normalized path. Re-saving the same path replaces content in place — new version, prior index chunks retired — so the store doesn't accumulate duplicates. An identical re-save is a no-op.
- `append_file` is a server-side, append-to-end-only, create-or-append operation: the caller sends only the new content and the prior bytes are preserved exactly. Editing earlier content means get_file → edit → save_file the whole file back.
- Saving indexes both the body and the metadata (path, filename, tags, title) into the shared knowledge layer, so a file can be found by an identifier that only appears in its path or tags.
- All Files tools are free; background vectorization of a saved file charges its own per-chunk meter on the shared `vectorize_content` index on completion — the same note as Brain.
- Text / markdown first; binary files are a phase-2 capability. Folders are path prefixes, not objects — `list_files` and `find_file` scope to a prefix.