obsidian_list_attachments
List non-Markdown files such as images, PDFs, and audio from an Obsidian vault. Filter by folder or extension to manage embedded assets.
Instructions
List non-Markdown files, useful for images, PDFs, audio, and other embedded assets.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| vault | No | Optional configured vault name. Defaults to the server default vault. | |
| folder | No | . | |
| extension | No | ||
| limit | No |
Implementation Reference
- src/tools.ts:1032-1039 (schema)Schema/registration for the obsidian_list_attachments tool. Defines input parameters: vault, folder, extension, limit.
"obsidian_list_attachments", "List non-Markdown files, useful for images, PDFs, audio, and other embedded assets.", { vault: vaultArg, folder: z.string().optional().default("."), extension: z.string().optional(), limit: z.number().int().min(1).max(5000).optional().default(1000), }, - src/tools.ts:1040-1046 (handler)Handler for obsidian_list_attachments. Lists non-Markdown files (filters out .md and .markdown extensions) in a vault folder, optionally filtered by extension.
async (args) => { const entries = (await vaults.listEntries(args.vault, { folder: args.folder, recursive: true, extension: args.extension, includeDirectories: false })) .filter((entry) => ![".md", ".markdown"].includes(entry.extension.toLowerCase())); return { total: entries.length, attachments: entries.slice(0, args.limit) }; }, { readOnlyHint: true }, ); - src/tools.ts:1031-1046 (registration)Registration of the obsidian_list_attachments tool via the internal 'tool' helper function which wraps server.tool() with annotations. Tools are registered inside registerObsidianTools().
tool( "obsidian_list_attachments", "List non-Markdown files, useful for images, PDFs, audio, and other embedded assets.", { vault: vaultArg, folder: z.string().optional().default("."), extension: z.string().optional(), limit: z.number().int().min(1).max(5000).optional().default(1000), }, async (args) => { const entries = (await vaults.listEntries(args.vault, { folder: args.folder, recursive: true, extension: args.extension, includeDirectories: false })) .filter((entry) => ![".md", ".markdown"].includes(entry.extension.toLowerCase())); return { total: entries.length, attachments: entries.slice(0, args.limit) }; }, { readOnlyHint: true }, );