Graph Delete
graph_deletePermanently remove an entity node and all its connections by ID. Use to delete duplicate or erroneous nodes.
Instructions
Permanently delete an entity node and all its edges by ID. Use for removing duplicate or erroneous nodes. Cannot be undone.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Entity ID to delete |
Implementation Reference
- src/mcp-server/index.ts:317-337 (registration)MCP server tool registration for graph_delete. Receives an entity ID, calls deleteEntity on the Neo4j client, and returns success/error.
// ─── Tool: graph_delete ─── server.registerTool("graph_delete", { title: "Graph Delete", description: "Permanently delete an entity node and all its edges by ID. Use for removing duplicate or erroneous nodes. Cannot be undone.", inputSchema: { id: z.string().describe("Entity ID to delete"), }, annotations: { destructiveHint: true }, }, async (args) => { try { const deleted = await client.deleteEntity(currentTenant(), args.id); if (!deleted) { return toolError(`No entity found with id: ${args.id}`); } return toolResult({ action: "deleted", id: args.id }); } catch (err) { return toolError(`graph_delete failed: ${err instanceof Error ? err.message : String(err)}`); } }); - src/mcp-server/index.ts:323-325 (schema)Input schema for graph_delete: requires a single string parameter 'id' (the entity ID to delete).
inputSchema: { id: z.string().describe("Entity ID to delete"), }, - src/shared/neo4j-client.ts:441-447 (handler)Neo4jClient.deleteEntity runs a Cypher DETACH DELETE query scoped to tenant and entity ID. Returns boolean indicating whether a node was actually deleted.
async deleteEntity(tenantId: string, id: string): Promise<boolean> { const rows = await this.run( `MATCH (n:Entity {tenant_id: $tenantId, id: $id}) DETACH DELETE n RETURN count(n) AS deleted`, { tenantId, id }, ); return Number(rows[0]?.["deleted"] ?? 0) > 0; }