document_set_source
Replace the entire source code of the active document, auto-backing up the prior state to git and validating schematic uploads.
Instructions
Replace the source code of the currently active document. Accepts the full document source as a string (same format returned by document_get_source). Returns { success, backup: { sha, path }, validation: {...} } on success, or throws if validation aborts the upload or the pre-edit backup could not be written. WARNING: This replaces the entire document. Always get the current source first, modify it, then set it back. A backup of the prior state is taken automatically before the replacement (after validation passes) and committed to a local git-tracked repo — the returned backup.sha references the pre-edit state. Validation runs only for schematic documents (documentType=1); other types skip with a status.
FAST-BATCH WORKFLOW: for making many changes at once, it is much faster to export the document or project (document_save_to_file / project_export_file), edit the raw source on disk, then re-upload (document_load_from_file / project_import_file) than to issue many small per-primitive MCP calls. The document source is newline-delimited JSON arrays; .epro files are ZIP archives of the same. Every destructive upload is auto-backed-up to a local git repo first — the response includes a backup SHA you can use to find the prior state if the edit goes wrong. Upload tools accept validate='off'|'warn'|'strict' (default 'strict') which runs the Zod schema on the new source — see document_validate for standalone validation.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | The complete document source code to set | |
| document | Yes | Target document UUID — auto-switches to this document before executing. Get UUIDs from list_instances or editor_get_open_tabs. | |
| validate | No | Schema validation mode for schematic uploads: 'off' skips entirely, 'warn' aborts only on malformed known tags or JSON parse errors, 'strict' (default) also aborts on any unknown-tag line. | |
| instance_id | No | Target EasyEDA instance ID (8-char hex). Required when multiple instances are connected. Omit when only one instance is connected (auto-selected). Use list_instances to see connected instances. |