The Eraser MCP connector routes your AI agent's tool calls to Eraser's own MCP server through Scalekit. Each user signs in to Eraser once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 42 tools.
- Tools
- 42
- What they doRead · write · destructive
- 16 · 21 · 516 read21 write5 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Eraser MCP connection
In AgentKit > Connections, create an Eraser MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Eraser MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'erasermcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Eraser MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'erasermcp_get_me',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "erasermcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Eraser MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="erasermcp_get_me",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolerasermcp_export_diagramRender a canvas diagram to PNG or JPEG and return a temporary image URL.Read-onlyExport Diagram
Render a canvas diagram to PNG or JPEG and return a temporary image URL. Tell the user to download it from the returned imageUrl.
Inputs
diagramIdstringrequired- No description.
fileIdstringrequired- No description.
backgroundboolean- No description.
formatstring- No description.one of
pngjpegdrawio imageQualitystring- No description.
returnAsstring- Defaults to stream: inline base64 image (or draw.io resource), with no storage upload or URL. Select url explicitly to store an export.one of
urlstream teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
themestring- No description.one of
lightdark urlSettingsobject- No description.
erasermcp_export_documentExport a file's markdown document body as a downloadable artifact.Read-onlyExport Document
Export a file's markdown document body as a downloadable artifact.
Inputs
fileIdstringrequired- No description.
formatstring- Defaults to markdown. pdf prints the document with its embedded diagrams and figures, as Export → PDF → Document does in the app, and requires a paid plan.one of
markdownpdf returnAsstring- Defaults to stream: an inline markdown resource, or the PDF as an embedded base64 file (at most 5 MB after encoding), with no storage upload. url stores a downloadable export.one of
urlstream teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
urlSettingsobject- No description.
erasermcp_export_fileReturns the Eraser file URL for PDF export.Read-onlyExport File
Returns the Eraser file URL for PDF export. NOTE: programmatic PDF export is not yet available via MCP — this returns a link for the user to export from the Eraser app's export menu, not a downloadable PDF. For a diagram image, use export_diagram; for the document body as markdown, use export_document.
Inputs
fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_get_diagramFetch a diagram's metadata and DSL/JSON code.Read-onlyGet Diagram
Fetch a diagram's metadata and DSL/JSON code. For freeform diagrams, set includeFreeformDefinition: true to get the full scene structure (elements, connections, titles). Need a PNG image of the diagram? Use export_diagram instead.
Inputs
diagramIdstringrequired- No description.
fileIdstringrequired- No description.
includeFreeformDefinitionboolean- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_get_documentFetch the full markdown body of a file's document.Read-onlyGet Document
Fetch the full markdown body of a file's document.
Inputs
fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_get_fileFetch a file's metadata, document outline (headers), and the list of diagrams in it.Read-onlyGet File
Fetch a file's metadata, document outline (headers), and the list of diagrams in it.
Inputs
fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_get_folderFetch a folder by id.Read-onlyGet Folder
Fetch a folder by id.
Inputs
folderIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_get_meFetch the current user, active team, and team memberships.Read-onlyGet Me
Fetch the current user, active team, and team memberships.
Inputs
This tool takes no inputs.
erasermcp_get_presetFetch a preset including its rules, templates, and references.Read-onlyGet Preset
Fetch a preset including its rules, templates, and references.
Inputs
presetIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_get_template_or_referenceFetch a template/reference's metadata, document outline, and diagram list.Read-onlyGet Template Or Reference
Fetch a template/reference's metadata, document outline, and diagram list.
Inputs
fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_list_diagramsList the diagrams contained in a file.Read-onlyList Diagrams
List the diagrams contained in a file.
Inputs
fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_list_filesList files in the team workspace, optionally scoped to a folder.Read-onlyList Files
List files in the team workspace, optionally scoped to a folder.
Inputs
authorstring- No description.
cursorstring- No description.
folderIdstring- No description.
limitnumber- No description.
sortstring- No description.one of
createdAtupdatedAt-createdAt-updatedAt teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_list_foldersList folders.Read-onlyList Folders
List folders. Pass `parentFolderId` to scope to direct children of a folder (or `null` for top-level only). Pass `nameContains` to resolve a folder the user names by string (e.g. 'the Engineering folder') without paging through the entire tree. Combining the two narrows further (e.g. top-level folders containing 'eng').
Inputs
nameContainsstring- No description.
parentFolderIdstring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_list_presetsList the team's presets.Read-onlyList Presets
List the team's presets. Pass `nameContains` to resolve a preset the user names by string (e.g. 'the Marketing preset') without scanning the full list — much cheaper in context tokens.
Inputs
nameContainsstring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_list_teamsList the teams the current user belongs to (OAuth only).Read-onlyList Teams
List the teams the current user belongs to (OAuth only).
Inputs
This tool takes no inputs.
erasermcp_searchFull-text and semantic search across files or diagrams.Read-onlySearch
Full-text and semantic search across files or diagrams. Omit 'kind' for content search (finds matching blocks). Use kind: 'file' only to look up a file by name (no block content returned). Use kind: 'diagram' to search within diagram code/titles.
Inputs
kindstring- Controls what is searched and how results are grouped. Omit (default) for full-content search — finds any text across all files and returns individual matching blocks with their file context. Use kind: 'file' ONLY to find a file by name — results are grouped by file with no per-block content. DO NOT use kind: 'file' if you want to find content within files; it will not return the content you need. Use kind: 'diagram' to search within diagram code/titles only.one of
filediagram limitnumber- No description.
offsetnumber- No description.
queriesarray- Submit up to 5 related query variants in one call. Results are merged and de-duplicated server-side, returning a single ranked list. Prefer this over making multiple separate search tool calls for related terms. When provided, the top-level `query` field is ignored.
querystring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_add_or_remove_template_or_referenceAttach or detach an EXISTING file as a template (style anchor) or reference (terminology/concept anchor) of a preset.WriteAdd Or Remove Template Or Reference
Attach or detach an EXISTING file as a template (style anchor) or reference (terminology/concept anchor) of a preset. Use this tool when: - the user has an existing workspace they want to promote into a preset (e.g. 'use this file as a template for the System Design preset'), - you need to detach a file from a preset, - or you just created a template via `create_template_or_reference` WITHOUT a `presetId` and need to attach it now. To create a NEW template/reference file and attach it in a single call, use `create_template_or_reference` with `presetId` set — that avoids leaving a detached file in the team. When removing a file leaves it orphaned from all presets, the file is archived automatically. Templates and references are inherently team-scoped (no private/personal templates exist); the preset choice is the only scoping decision.
Inputs
fileIdstringrequired- No description.
kindstringrequired- No description.one of
templatereference operationstringrequired- No description.one of
addremove presetIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_create_diagramPREFERRED for creating a diagram from a natural-language prompt — Eraser's AI picks the diagram type, generates the DSL, and renders it.WriteCreate Diagram
PREFERRED for creating a diagram from a natural-language prompt — Eraser's AI picks the diagram type, generates the DSL, and renders it. DO NOT pre-classify the user's request into a diagram type yourself. Pass `text` only (plus destination params) and LEAVE `diagramType` UNSET unless the user EXPLICITLY named a type (e.g. 'make this a sequence diagram', 'use a cloud architecture diagram'). Eraser's render service has type-specific heuristics and will pick a better type from the prompt than your guess will, especially on ambiguous asks like 'show how X works' or 'diagram the architecture'. BEFORE calling this tool, if the user has not already specified the destination, ASK them these questions (skip any the user has already answered): 1. 'Should I create a new file for this diagram, or add it to an existing file?' — if existing, ask which fileId (or use one they just referenced). 2. If NEW file: 'Should the file be private (just for you) or shared with your team in a folder?' 3. If shared in a folder: 'Which folder?' (or offer to place it at the team root). Do NOT call list_folders or get_folder to invent a destination yourself — ask the user. Pick destination params based on the answers: - Existing file → pass targetFileId - New private file → omit targetFileId, omit folderId, do NOT set isTeamFile - New shared file at team root → omit targetFileId, omit folderId, set isTeamFile: true - New shared file in a folder → omit targetFileId, pass folderId (this implies shared) Returns the new diagram's id in the `diagrams[].id` field so a follow-up update_diagram/manually_update_diagram call does NOT need a list_diagrams round-trip. Prefer over manually_create_diagram unless you already have hand-written DSL/JSON.
Inputs
textstringrequired- No description.
attachmentsarray- No description.
backgroundboolean- No description.
colorModestring- No description.one of
pastelboldoutline diagramTypestring- OPTIONAL — LEAVE THIS EMPTY by default. Only set it when the user EXPLICITLY names a diagram type (e.g. 'make this a sequence diagram', 'use a cloud architecture diagram', 'turn it into an ERD'). When omitted, Eraser's render service picks the diagram type from the prompt text using diagram-type-specific heuristics and (if applicable) the preset/template in scope — that selection is usually better than guessing from the prompt yourself. Do NOT pre-classify the user's request into a diagram type just because the value is available in your schema; spurious type-locking produces worse diagrams than letting Eraser choose, especially on ambiguous prompts ('show how X works', 'diagram the architecture'). On update_diagram, leave this empty as well — the existing diagram's type is preserved by default.one of
freeform-diagramsequence-diagramentity-relationship-diagramcloud-architecture-diagramflowchart-diagrambpmn-diagram directionstring- No description.one of
updownleftright folderIdstring- OPTIONAL — leave this empty by default. Only set it when the user EXPLICITLY names a folder to place the new file in (e.g. "put it in the Engineering folder"). Do NOT call list_folders or get_folder to "pick a sensible folder" — when omitted, the file is created at the team root and the user can move it themselves. Spurious folder discovery wastes tokens and produces unexpected file placement.
formatstring- No description.one of
pngjpeg gitContextsarray- No description.
imageQualitystring- No description.
includeImageboolean- Set true only when you need a PNG URL. By default no image is rendered or stored and the response carries no imageUrl. When true, imageUrl is by default a private link that expires after 1 hour; use urlSettings to request a longer ttl or access: "public" for a permanent link. Public URLs are not secure: anyone with the link can view the image, so use them only when the user explicitly wants a permanent, shareable image. The persisted diagram is exported afterwards, so an image failure never fails the diagram write. Not needed for in-app viewing — prefer the returned fileUrl/diagramUrl.
isTeamFileboolean- Only honored by create_diagram when a NEW file is being created (i.e. targetFileId is omitted). When true, the new file is shared with the team (non-private); when false, the new file is private to the caller. Required on plans that don't support private files. Ignored by update_diagram, and ignored on create_diagram when targetFileId is set (because no new file is created).
presetIdstring- OPTIONAL — the AI preset (rules, references, templates) to apply. Omit it to use the team default preset, when the team has one; pass null to use no preset. To resolve a preset the user names, call list_presets with nameContains.
priorRequestIdstring- No description.
styleIdstring- No description.
styleModestring- No description.one of
plainshadowwatercolor targetFileIdstring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
templateIdstring- OPTIONAL — usually leave this empty. Whenever a preset applies, Eraser picks the preset template the request names or clearly matches, so to use a template just name it in `text` (e.g. 'using the Incident Report template'). Set templateId only to force one specific template: pass its fileId from get_preset's `templates` list. It must belong to the preset in scope, so also pass that preset's presetId unless it is the team default; otherwise the call fails.
themestring- No description.one of
lightdark titlestring- No description.
typefacestring- No description.one of
roughcleanmono urlSettingsobject- Access policy for an opt-in image URL. Omit to use the team/org default (one-hour token links unless default.type is public). ttl applies only to token URLs and accepts seconds or durations such as "6h", "5d", or "2w" (maximum 365d). Omitted ttl inherits team/org default.ttl, then 1h. Teams allow permanent or expiring download links, expiring download links only, or none; a disallowed link request returns an error.
erasermcp_create_documentPREFERRED for populating a document from a natural-language prompt — Eraser's AI generates the markdown.WriteCreate Document
PREFERRED for populating a document from a natural-language prompt — Eraser's AI generates the markdown. Only callable on a file with an empty document body; if the file already has content, this returns an error and you should call update_document (for natural-language edits) or manually_update_document (to replace verbatim) instead. Prefer over manually_create_document unless you have pre-written markdown to insert verbatim.
Inputs
fileIdstringrequired- No description.
textstringrequired- No description.
presetIdstring- OPTIONAL — the AI preset (rules, references, templates) to apply. Omit it to use the team default preset, when the team has one; pass null to use no preset. To resolve a preset the user names, call list_presets with nameContains.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
templateIdstring- OPTIONAL — usually leave this empty. Whenever a preset applies, Eraser picks the preset template the request names or clearly matches, so to use a template just name it in `text` (e.g. 'using the Incident Report template'). Set templateId only to force one specific template: pass its fileId from get_preset's `templates` list. It must belong to the preset in scope, so also pass that preset's presetId unless it is the team default; otherwise the call fails.
erasermcp_create_fileCreate an empty file, or duplicate an existing file when sourceFileId is provided.WriteCreate File
Create an empty file, or duplicate an existing file when sourceFileId is provided. Never populates content from a prompt — use create_document/create_diagram for AI generation. BEFORE calling this tool, if the user has not specified destination, ASK: 1. 'Should the file be private (just for you) or shared with your team in a folder?' 2. If shared in a folder: 'Which folder?' (or offer to place it at the team root). Do NOT call list_folders to invent a destination — ask the user. Pick params: - Private file → omit folderId, do NOT set isTeamFile - Shared at team root → omit folderId, set isTeamFile: true - Shared in a folder → pass folderId (this implies shared)
Inputs
folderIdstring- OPTIONAL — omit unless the user EXPLICITLY names a folder. When omitted, the file is created at the team root. Do NOT call list_folders to "pick a folder".
isTeamFileboolean- When true, the file is shared with the team (non-private). Required on plans that do not support private files.
linkAccessstring- No description.one of
no-link-accessanyone-with-link-can-editpublicly-viewablepublicly-editablesso-readablesso-editable namestring- No description.
sourceFileIdstring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_create_folderCreate a new folder.WriteCreate Folder
Create a new folder.
Inputs
namestringrequired- No description.
ordernumber- No description.
parentFolderIdstring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_create_presetCreate a new preset (the team-level container for AI styling: templates, references, and rules).WriteCreate Preset
Create a new preset (the team-level container for AI styling: templates, references, and rules). After creating, the typical next steps to make the preset useful are: 1. Add example files as templates/references via `add_or_remove_template_or_reference` (or `create_template_or_reference` to spin up a fresh template file from a prompt). Templates anchor the visual style; references anchor terminology and concepts. 2. Set the preset's rules via `update_rules` (e.g. 'always use dark backgrounds', 'prefer sequence diagrams for auth flows'). 3. Optionally mark the preset as the team default by calling `update_preset` with `isDefault: true`. This tool only creates the empty preset shell; an agent that stops here will produce a preset with no styling power. Chain the steps above unless the user explicitly only wanted the shell.
Inputs
namestringrequired- No description.
descriptionstring- No description.
isDefaultboolean- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_create_template_or_referenceCreate a new template (style anchor) or reference (terminology/concept anchor) file and, when `presetId` is provided, attach it to that preset in a single call.WriteCreate Template Or Reference
Create a new template (style anchor) or reference (terminology/concept anchor) file and, when `presetId` is provided, attach it to that preset in a single call. Auto-publishes the file's first version. Templates and references are ALWAYS team-scoped resources under AI Presets — there is no concept of a private/personal template or reference. DO NOT ask the user 'team template or private template?' — that is not a real choice. The only sharing question is which preset to attach it to. Typical use: - User says 'make this a template under <preset>' → pass `presetId` so the file is attached immediately. - User says 'make a template from this file' without naming a preset → ASK them which preset before calling (or list_presets to show options). DO NOT silently omit `presetId`; an unattached template is invisible to AI generation and almost never what the user wanted. - User says 'duplicate this file as a template' → pass `sourceFileId` (and `presetId`). When `presetId` is omitted the response includes a warning that the file is detached; treat that as a signal to follow up with `add_or_remove_template_or_reference` rather than leaving it dangling.
Inputs
kindstringrequired- No description.one of
templatereference namestring- No description.
presetIdstring- No description.
sourceFileIdstring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_manually_create_diagramADVANCED — most callers should use create_diagram instead.WriteManually Create Diagram
ADVANCED — most callers should use create_diagram instead. This tool writes a caller-supplied diagram definition VERBATIM into a new diagram; no AI runs. For DSL diagrams (flowchart-dsl, sequence-dsl, etc.) pass the DSL source as `code`. For freeform diagrams pass a freeform definition as `code` — either JSON ({"title"?: string, "elements": [ ... ]}) or the equivalent JSX; it is parsed and laid out through the freeform render pass (text measurement, connection routing, etc.). Use ONLY WHEN: the user gave you a literal diagram definition to paste, you are converting from a non-Eraser source (other tool's export, programmatic generation), or you need byte-exact output for a reason the AI path cannot satisfy. For any natural-language description of what the diagram should contain (e.g. 'a sequence diagram showing checkout'), use create_diagram — it picks the diagram type, generates the definition, and renders it for a fraction of the output tokens of composing it yourself.
Inputs
codestringrequired- No description.
diagramTypestringrequired- No description.one of
freeform-diagramsequence-diagramentity-relationship-diagramcloud-architecture-diagramflowchart-diagrambpmn-diagram fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_manually_create_documentADVANCED — most callers should use create_document instead.WriteManually Create Document
ADVANCED — most callers should use create_document instead. This tool populates an empty file's document body with caller-supplied markdown VERBATIM; no AI runs and the bytes you pass are exactly what gets stored. Only callable on a file with an empty document body; if the file already has content, call manually_update_document (verbatim overwrite) or update_document (targeted AI edit) instead. USE ONLY WHEN: the user gave you literal markdown to paste, you are converting from another format (HTML, Confluence export, programmatic generation), or you need byte-exact output. For any natural-language description of what the document should say, use create_document.
Inputs
documentstringrequired- No description.
fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_manually_update_diagramADVANCED — most callers should use update_diagram instead.WriteManually Update Diagram
ADVANCED — most callers should use update_diagram instead. This tool writes a diagram's complete DSL/JSON (or freeform edits) VERBATIM; no AI runs and the bytes you pass are exactly what gets stored. USE ONLY WHEN: - the user gave you literal DSL/JSON they want pasted as-is, - you are converting from a non-Eraser source (other tool's export, programmatic generation), - or you need byte-exact output for a reason an AI refinement cannot satisfy. DO NOT use this tool just because the current diagram code happens to be in your context (e.g. you just called create_diagram and want to apply a small refinement). For ANY user request phrased as a natural-language edit ('remove the X group', 'add a step', 'change the color', 'rename Y to Z') — even when you already have the full DSL in front of you — call update_diagram instead. Re-emitting the entire DSL here to apply a conceptual edit costs the user large amounts of output tokens, risks accidental edits to unrelated parts, and gives a worse UX than letting Eraser apply the targeted change.
Inputs
diagramIdstringrequired- No description.
fileIdstringrequired- No description.
codestring- No description.
freeformEditsarray- No description.
targetFileIdstring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_manually_update_documentADVANCED — most callers should use update_document instead.WriteManually Update Document
ADVANCED — most callers should use update_document instead. This tool replaces a file's document body with caller-supplied markdown VERBATIM; no AI runs and the WHOLE body is overwritten (no targeted block edits, no preservation of unrelated sections beyond what you re-emit). USE ONLY WHEN: - the user gave you literal markdown they want pasted as-is, - you are converting from a non-Eraser source (HTML, Confluence export, programmatic generation), - or you need byte-exact output for a reason an AI refinement cannot satisfy. DO NOT use this tool just because the current document markdown happens to be in your context. For ANY user request phrased as a natural-language edit ('add a section', 'fix the wording', 'remove that paragraph') — even when you already have the full body in front of you — call update_document instead. Re-emitting the entire body here to apply a conceptual edit costs the user large amounts of output tokens, risks accidental edits to unrelated sections, and gives a worse UX than letting Eraser apply targeted block edits.
Inputs
documentstringrequired- No description.
fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_manually_update_fileReplace a file's document markdown and/or diagram code in one call.WriteManually Update File
Replace a file's document markdown and/or diagram code in one call. No AI — caller supplies exact markdown/DSL/JSON.
Inputs
fileIdstringrequired- No description.
diagramsarray- No description.
documentstring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_publish_template_or_referencePublish a new version of a template/reference file.WritePublish Template Or Reference
Publish a new version of a template/reference file.
Inputs
fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_select_teamSet the active team for the session when the user belongs to multiple teams (OAuth only).WriteSelect Team
Set the active team for the session when the user belongs to multiple teams (OAuth only).
Inputs
teamIdstringrequired- No description.
erasermcp_update_diagramUSE THIS for any user request that describes the change in natural language — verbs like 'add', 'remove', 'change', 'rename', 'recolor', 'make it more X', etc.WriteUpdate Diagram
USE THIS for any user request that describes the change in natural language — verbs like 'add', 'remove', 'change', 'rename', 'recolor', 'make it more X', etc. Eraser's AI applies the change to the existing diagram in place; you only send the short instruction (e.g. `text: "remove the External Integrations group"`), NOT the full new DSL. IMPORTANT: pick this tool even when the full diagram code is already in your context (e.g. from the previous create_diagram or get_diagram response). Re-emitting the entire DSL via manually_update_diagram to apply a one-line conceptual edit is the WRONG default — it wastes a large number of output tokens, increases the chance of accidental edits/typos, and gives a worse UX than letting Eraser apply a targeted change. Only fall back to manually_update_diagram when the user gave you literal code to paste, you are converting from a non-Eraser format, or you need byte-exact output that the AI rewrite path cannot guarantee.
Inputs
fileIdstringrequired- No description.
textstringrequired- No description.
attachmentsarray- No description.
backgroundboolean- No description.
colorModestring- No description.one of
pastelboldoutline diagramIdstring- No description.
diagramTypestring- OPTIONAL — LEAVE THIS EMPTY by default. Only set it when the user EXPLICITLY names a diagram type (e.g. 'make this a sequence diagram', 'use a cloud architecture diagram', 'turn it into an ERD'). When omitted, Eraser's render service picks the diagram type from the prompt text using diagram-type-specific heuristics and (if applicable) the preset/template in scope — that selection is usually better than guessing from the prompt yourself. Do NOT pre-classify the user's request into a diagram type just because the value is available in your schema; spurious type-locking produces worse diagrams than letting Eraser choose, especially on ambiguous prompts ('show how X works', 'diagram the architecture'). On update_diagram, leave this empty as well — the existing diagram's type is preserved by default.one of
freeform-diagramsequence-diagramentity-relationship-diagramcloud-architecture-diagramflowchart-diagrambpmn-diagram directionstring- No description.one of
updownleftright folderIdstring- OPTIONAL — leave this empty by default. Only set it when the user EXPLICITLY names a folder to place the new file in (e.g. "put it in the Engineering folder"). Do NOT call list_folders or get_folder to "pick a sensible folder" — when omitted, the file is created at the team root and the user can move it themselves. Spurious folder discovery wastes tokens and produces unexpected file placement.
formatstring- No description.one of
pngjpeg gitContextsarray- No description.
imageQualitystring- No description.
includeImageboolean- Set true only when you need a PNG URL. By default no image is rendered or stored and the response carries no imageUrl. When true, imageUrl is by default a private link that expires after 1 hour; use urlSettings to request a longer ttl or access: "public" for a permanent link. Public URLs are not secure: anyone with the link can view the image, so use them only when the user explicitly wants a permanent, shareable image. The persisted diagram is exported afterwards, so an image failure never fails the diagram write. Not needed for in-app viewing — prefer the returned fileUrl/diagramUrl.
isTeamFileboolean- Only honored by create_diagram when a NEW file is being created (i.e. targetFileId is omitted). When true, the new file is shared with the team (non-private); when false, the new file is private to the caller. Required on plans that don't support private files. Ignored by update_diagram, and ignored on create_diagram when targetFileId is set (because no new file is created).
presetIdstring- OPTIONAL — the AI preset (rules, references, templates) to apply. Omit it to use the team default preset, when the team has one; pass null to use no preset. To resolve a preset the user names, call list_presets with nameContains.
priorRequestIdstring- No description.
styleIdstring- No description.
styleModestring- No description.one of
plainshadowwatercolor teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
templateIdstring- OPTIONAL — usually leave this empty. Whenever a preset applies, Eraser picks the preset template the request names or clearly matches, so to use a template just name it in `text` (e.g. 'using the Incident Report template'). Set templateId only to force one specific template: pass its fileId from get_preset's `templates` list. It must belong to the preset in scope, so also pass that preset's presetId unless it is the team default; otherwise the call fails.
themestring- No description.one of
lightdark titlestring- No description.
typefacestring- No description.one of
roughcleanmono urlSettingsobject- Access policy for an opt-in image URL. Omit to use the team/org default (one-hour token links unless default.type is public). ttl applies only to token URLs and accepts seconds or durations such as "6h", "5d", or "2w" (maximum 365d). Omitted ttl inherits team/org default.ttl, then 1h. Teams allow permanent or expiring download links, expiring download links only, or none; a disallowed link request returns an error.
erasermcp_update_documentUSE THIS for any user request that describes the change in natural language — verbs like 'add a section', 'rewrite the intro', 'fix the typo', 'remove the deprecated paragraph', etc.WriteUpdate Document
USE THIS for any user request that describes the change in natural language — verbs like 'add a section', 'rewrite the intro', 'fix the typo', 'remove the deprecated paragraph', etc. Eraser's AI applies targeted block-level edits to the existing markdown; you only send the short instruction, NOT the full rewritten document. IMPORTANT: pick this tool even when the full document markdown is already in your context (e.g. from a previous create_document or get_file response). Re-emitting the entire body via manually_update_document to apply a conceptual edit is the WRONG default — it wastes large amounts of output tokens, risks accidental edits/typos in unrelated sections, and gives a worse UX than letting Eraser apply a targeted change. Only fall back to manually_update_document when the user gave you literal markdown to paste, you are converting from another format, or you need byte-exact output the AI rewrite path cannot guarantee.
Inputs
fileIdstringrequired- No description.
textstringrequired- No description.
presetIdstring- OPTIONAL — the AI preset (rules, references, templates) to apply. Omit it to use the team default preset, when the team has one; pass null to use no preset. To resolve a preset the user names, call list_presets with nameContains.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
templateIdstring- OPTIONAL — usually leave this empty. Whenever a preset applies, Eraser picks the preset template the request names or clearly matches, so to use a template just name it in `text` (e.g. 'using the Incident Report template'). Set templateId only to force one specific template: pass its fileId from get_preset's `templates` list. It must belong to the preset in scope, so also pass that preset's presetId unless it is the team default; otherwise the call fails.
erasermcp_update_fileUpdate file metadata (title, folder, sharing).WriteUpdate File
Update file metadata (title, folder, sharing). When applyTemplate is provided, AI fills the file's document and diagrams from a preset template.
- Idempotent
Inputs
fileIdstringrequired- No description.
applyTemplateobject- Fills an EMPTY file (no document, no diagrams) from a preset template with AI: the template's document is generated, plus one diagram per template diagram (up to 5). Fails on a file that already has content; use update_document / update_diagram to change existing content.
folderIdstring- No description.
isTeamFileboolean- No description.
linkAccessstring- No description.one of
no-link-accessanyone-with-link-can-editpublicly-viewablepublicly-editablesso-readablesso-editable teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
titlestring- No description.
erasermcp_update_folderRename or move a folder, or bulk-apply a link-sharing setting to every file inside it (recursively).WriteUpdate Folder
Rename or move a folder, or bulk-apply a link-sharing setting to every file inside it (recursively). Note: folders do not store linkAccess themselves — to change sharing you MUST pass both `linkAccess` and `applySharingToDescendantFiles: true` together.
- Idempotent
Inputs
folderIdstringrequired- No description.
applySharingToDescendantFilesboolean- Required (set to true) when supplying `linkAccess`. Rewrites the linkAccess setting on every file in this folder and all subfolders recursively.
linkAccessstring- Link-sharing setting to apply to every file under this folder. Folders themselves do not store linkAccess, so this MUST be paired with `applySharingToDescendantFiles: true`; passing linkAccess alone is rejected with an invalid-params error.one of
no-link-accessanyone-with-link-can-editpublicly-viewablepublicly-editablesso-readablesso-editable namestring- No description.
parentFolderIdstring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_update_presetRename a preset or update its metadata (`name`, `description`, `isDefault`).WriteUpdate Preset
Rename a preset or update its metadata (`name`, `description`, `isDefault`). Does NOT modify rules or templates/references — use `update_rules` and `add_or_remove_template_or_reference` for those.
- Idempotent
Inputs
presetIdstringrequired- No description.
descriptionstring- No description.
isDefaultboolean- No description.
namestring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_update_rulesAdd, update, or remove rules on a preset in a single batched call.WriteUpdate Rules
Add, update, or remove rules on a preset in a single batched call. Rules are natural-language instructions the AI will follow when generating diagrams/documents under this preset (e.g. 'use dark theme', 'all auth flows should be sequence diagrams'). Typically called as step 3 of the create-preset chain (after `create_preset` and `add_or_remove_template_or_reference`), but can be called any time to tune an existing preset.
Inputs
operationsarrayrequired- No description.
presetIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_update_template_or_referenceRename a template or reference file.WriteUpdate Template Or Reference
Rename a template or reference file.
- Idempotent
Inputs
fileIdstringrequired- No description.
namestring- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_delete_diagramDelete a diagram from a file.DestructiveDelete Diagram
Delete a diagram from a file.
Inputs
diagramIdstringrequired- No description.
fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_delete_documentClear a file's document body to an empty markdown document.DestructiveDelete Document
Clear a file's document body to an empty markdown document.
Inputs
fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_delete_fileArchive a file.DestructiveDelete File
Archive a file.
Inputs
fileIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_delete_folderDelete a folder.DestructiveDelete Folder
Delete a folder. Rejects when the folder is not empty.
Inputs
folderIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
erasermcp_delete_presetDelete a preset.DestructiveDelete Preset
Delete a preset. Rejects when the preset has any rules, templates, or references.
Inputs
presetIdstringrequired- No description.
teamIdstring- ID of the team to operate in (get IDs from list_teams). Optional when an active team is already set for this session; required otherwise. Overrides the active team for this call only.
No tools match.