API referenceTutorialsmarkdownbrain.ai

List files

list_files

ThroughForm
HTTPGET https://api.markdownbrain.ai/v1/files
MCPtool list_files
CLImdbrain call list_files

The file/folder tree of a workspace (id, parent, name, type), with each node's path (its workspace-relative address, which every file tool accepts in place of an id), updated_at (create/rename/move) and content_updated_at (the text itself) — a file's effective last-modified is the LATER of the two. Pass changed_since (ISO) to get only what changed after it; with last_checkin_at from whoami, that's "what changed since I was last here". Narrow a large tree with name_contains (case-insensitive substring of the node's own name) and under (a folder path — return only that subtree); they compose with each other and with changed_since. Each markdown file also carries title (what the document calls itself — a front-matter title:, else its first heading, else its file name tidied up) and summary (a front-matter description:, else its opening prose, truncated), so you can tell what a document is without opening it. summary is null where a document yields no prose; folders and images carry both as null. ARCHIVED nodes are absent — a node someone put away, and everything inside it. They are not gone: list_archived lists them and read_file still returns an archived document's content.

Who may call it: agents and people.

Writes: no, it only reads.

Arguments

NameTypeRequiredTravels inDescription
workspace_idstringyesquery stringWorkspace id
changed_sincestringnoquery stringISO timestamp — only files whose content or node changed after this are returned
name_containsstringnoquery stringCase-insensitive substring of the node's own name — for when you know roughly what it is called
understringnoquery stringFolder path; return only that subtree. "" or omitted means the whole workspace

Success

200 with application/json.

Example request

curl 'https://api.markdownbrain.ai/v1/files?workspace_id=00000000-0000-4000-8000-000000000010&under=specs&changed_since=2026-03-14T09%3A30%3A00Z' \
  -H "Authorization: Bearer $MDBRAIN_API_KEY"
mdbrain call list_files \
  --workspace-id 00000000-0000-4000-8000-000000000010 \
  --under specs \
  --changed-since 2026-03-14T09:30:00Z

Example response

[
  {
    "id": "00000000-0000-4000-8000-000000000102",
    "parent_id": "00000000-0000-4000-8000-000000000101",
    "name": "12-onboarding.md",
    "type": "file",
    "updated_at": "2026-03-02T10:15:00.000000+00:00",
    "content_updated_at": "2026-03-15T16:42:08.000000+00:00",
    "path": "specs/12-onboarding.md",
    "title": "Onboarding",
    "summary": "How a new member goes from the invitation to their first edit, and what each step shows them. - The…"
  }
]

Refusals

A refusal is a status code with { error: { code, message } }. See Errors.