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.

  1. Go to gentic.co/files 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/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.md

Or upload a .skill bundle to Claude Managed Agents:

https://gentic.co/files/gentic-files.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 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. 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. 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. 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. 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. 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. 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. 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

Free

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.

ParameterTypeDescription
path
required
string

The file path to append to, e.g. `episode-2-prep.md`.

content
required
string

Verbatim UTF-8 content to append to the end of the file.

separatorstring

String inserted between the existing body and the appended content. Default "\n".

delete_file

Free

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.

ParameterTypeDescription
path
required
string

The exact file path to delete, e.g. `podcasts/ep-34/transcript.md`.

find_file

Free

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.

ParameterTypeDescription
query
required
string

Natural-language description of the file you're looking for.

prefixstring

Optional folder path prefix to scope the search, e.g. `episode-2-prep/`.

limitinteger

Max candidate files to return (default 10, max 50).

max 9007199254740991

get_file

Free

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.

ParameterTypeDescription
path
required
string

The exact file path used at save time, e.g. `podcasts/ep-34/transcript.md`.

list_files

Free

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.

ParameterTypeDescription
prefixstring

Folder path prefix to scope the listing, e.g. `episode-2-prep/`. Omit to list all files.

limitinteger

Max files per page (default 50, max 200).

max 9007199254740991

cursorstring

Pagination cursor from a previous call's `next_cursor`.

include_snippetboolean

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

Free

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.

ParameterTypeDescription
path
required
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.

content
required
string

Verbatim UTF-8 body. Stored and returned byte-for-byte.

content_typestring

MIME type. Default `text/markdown; charset=utf-8`. v1 accepts text-class only (text/*, application/json).

tagsstring[]

Optional tags; indexed alongside the body so a file is findable by tag.

metadataobject

Optional free-form metadata stored on the manifest row.

searchableboolean

Default true. When true the file is indexed for find_file. false stores it verbatim with no indexing (retrievable only by exact path).

overwritestring

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.

ToolCost
append_fileFree
delete_fileFree
find_fileFree
get_fileFree
list_filesFree
save_fileFree

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.