delete_tiddler
Delete a tiddler from your TiddlyWiki by specifying its title. The tool displays the current content and requests your approval before permanently removing the tiddler.
Instructions
Delete a tiddler. Shows current content and requests approval before deleting.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the tiddler to delete |
Implementation Reference
- src/tools/delete-tiddler.ts:13-44 (handler)Main handler function for the delete_tiddler tool. Validates input via Zod, fetches the tiddler to preview it, deletes it via the HTTP API, and returns a formatted success message with the deleted content preview.
export async function handleDeleteTiddler(args: unknown): Promise<ToolResult> { const input = DeleteTiddlerInput.parse(args); // Get current tiddler to show what will be deleted const current = await getTiddler(input.title); if (!current) { return { content: [ { type: 'text', text: JSON.stringify({ error: `Tiddler not found: ${input.title}` }, null, 2), }, ], isError: true, }; } // Generate preview of what will be deleted const preview = formatTiddlerPreview(current); // Delete the tiddler await deleteTiddler(input.title); return { content: [ { type: 'text', text: `## Deleted: "${input.title}"\n\n${preview}`, }, ], }; } - src/tools/types.ts:94-96 (schema)Zod schema for the delete_tiddler tool input. Expects a single required field: 'title' (string).
export const DeleteTiddlerInput = z.object({ title: z.string().describe('Title of the tiddler to delete'), }); - src/index.ts:219-233 (registration)Registration of the 'delete_tiddler' tool in the MCP server's ListTools handler. Defines name, description, and inputSchema (title as required string).
{ name: 'delete_tiddler', description: 'Delete a tiddler. Shows current content and requests approval before deleting.', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Title of the tiddler to delete', }, }, required: ['title'], }, }, - src/index.ts:253-254 (registration)Dispatch in the CallToolRequest handler: routes the 'delete_tiddler' tool name to handleDeleteTiddler.
case 'delete_tiddler': return await handleDeleteTiddler(args); - src/tiddlywiki-http.ts:290-319 (helper)Low-level HTTP helper that performs a DELETE request to the TiddlyWiki API endpoint /bags/default/tiddlers/{encodedTitle}. Handles errors and logging.
export async function deleteTiddler(title: string): Promise<void> { const baseUrl = await getBaseUrl(); const encodedTitle = encodeURIComponent(title); const url = `${baseUrl}/bags/default/tiddlers/${encodedTitle}`; const titlePreview = title.length > 50 ? title.substring(0, 50) + '...' : title; logger.debug(`[TiddlyWiki HTTP] deleteTiddler: "${titlePreview}"`); const response = await fetchWithTimeout( url, { method: 'DELETE', headers: getHeaders(true), }, TIMEOUT_WRITE, `deleteTiddler("${titlePreview}")` ); if (!response.ok) { const errorBody = await response.text().catch(() => '(no body)'); logger.error( `[TiddlyWiki HTTP] deleteTiddler failed: ${response.status} ${response.statusText} - ${errorBody}` ); throw new Error( `Failed to delete tiddler "${title}": ${response.status} ${response.statusText} - ${errorBody}` ); } logger.debug(`[TiddlyWiki HTTP] deleteTiddler: "${titlePreview}" OK (${response.status})`); }