Skip to main content
EndNote · MCP · AI Agent · Windows · Microsoft Word

Overview

EndNote for Word is an AI citation-management toolkit for Microsoft Word. It is a skill/plugin plus an MCP server for Claude Code, Claude Desktop, Codex, and ChatGPT Desktop. It guides an AI agent to find papers that carry a DOI and verify them, import the records into an EndNote library, and then create genuine EndNote Cite While You Write (CWYW) IEEE citations and a real bibliography in a DOCX. Every citation is a native EndNote field, not typed text.

Core features

  • Guides the agent to find peer-reviewed papers, verify metadata and DOI, export EndNote-compatible RIS, and import it through EndNote Direct Export
  • Replaces {{CITE:id}} markers in a DOCX with real CWYW fields: each citation is an ADDIN EN.CITE field carrying a traveling library, and the bibliography is an ADDIN EN.REFLIST field
  • Never types citation text, never fabricates field codes in OOXML, and never passes off a plain-text list as a bibliography
  • IEEE by default; every cited reference must have a DOI, checked through doi.org before citing, and doubled resolver prefixes are rejected
  • Supports both IEEE Default Format [x] and Display as Author (Year), which gives narrative forms such as Author et al. [x]
  • Reads the .enl library through a read-only snapshot; RIS import is the only action that writes to a library, and EndNote itself performs it
  • Pre-checks the manifest against the library and the installed output styles, so an unknown record number or style name cannot make EndNote open a dialog that blocks automation
  • Keeps Word hidden throughout and starts EndNote with a hidden window when the bridge has to launch it, then validates the finished document structurally

Architecture

The agent works through a manuscript in seven stages. Searching the library and pre-checking both finish before Word opens your document; rendering is the only stage that changes it, and validation reopens the result read-only. The manifest comes out of the fourth stage. Every citation needs a globally unique id and marker, and the marker must occur exactly once in the document. pages and suffix apply to the last target only, so they are limited to single-target citations.
The library.path in this example is a placeholder. Point it at your own .enl library before running it, otherwise the manifest fails the library.path existence check. The main directories of the repository:
endnote-for-word
skills/endnote-for-word · cross-agent skill, references, and launcher
SKILL.md
references/installation-matrix.md · skill locations and MCP configuration per platform
references/styles-and-formatting.md · output style and DOI template specs
scripts/invoke-bridge.ps1
scripts · Word and EndNote automation bridge, library reader, MCP server, packager
endnote-word.ps1 · PowerShell bridge
run-mcp.ps1 · starts the MCP server
mcp_server.py
endnote_library.py
package_plugin.py · builds the plugin and skill packages
config/defaults.json · default output style, empty library template, temporary citation delimiters, validation gates
examples/example-manifest.json · reference manifest

Quick start

Pick the install that matches your agent; steps 1 to 3 are alternatives.
1

Claude Code: install the plugin

To upgrade, run claude plugin marketplace update endnote-for-word and claude plugin update endnote-for-word@endnote-for-word. Restart Claude Code after installing or upgrading.
2

Codex: install the plugin

The plugin carries both the skill and the MCP server. To upgrade, run codex plugin marketplace upgrade endnote-for-word and then the codex plugin add command again. Restart Codex after installing or upgrading.
3

Claude Desktop: upload the skill and set up MCP

Upload dist/endnote-for-word.skill from Customize > Skills. The file is not in the repository; build it first by running python scripts/package_plugin.py from the repository root. Then merge this server into %APPDATA%\Claude\claude_desktop_config.json (keep your existing servers), replace <REPO_ROOT> with the absolute path of your local checkout, and restart Claude Desktop.
4

Verify the installation

From the repository root:
The install counts as done only when the probe reports cwyw_macro_callable as true and document validation returns ok: true. Document validation here means rendering a small fixture document once and then running validate on the output (-Action validate or validate_endnote_word_document).
5

Put markers in the DOCX and hand it to the agent

Prepare the markers in your DOCX first:
Then give the agent the DOCX and the target .enl path, and tell it your preferred output style, for example IEEE or APA 7th. If you omit it, IEEE is used; the agent must confirm the style is installed before editing Word and must not silently substitute another one.

Install options

Skill locations and MCP configuration for each platform are in the installation matrix inside the repository (skills/endnote-for-word/references/installation-matrix.md).

Notes

Windows 10 or 11 only. You need the Microsoft Word desktop app and desktop EndNote with the Cite While You Write add-in installed and enabled, plus Python 3, PowerShell (pwsh.exe or powershell.exe), and HTTPS access to doi.org. The CWYW add-in is a hard prerequisite: without it there is no supported way to produce native citation fields, and the tool refuses to fake them. The EndNote web or online plugin is not a substitute. The project is developed and verified against EndNote 21; EndNote and Microsoft Office are proprietary and not distributed by the repository. From WSL Bash, call the Windows-side executable, because Linux pwsh cannot automate Word COM.
Several operations make EndNote or Word open a dialog, and automation then hangs until the process is killed: an unknown record number or style name, citation prefixes (such as {see \Thomsen, 2023 #1}), and excluded authors or years (such as {\Thomsen, 2023 #1}). Version 1 therefore rejects prefix outright. Converting to plain text (ENRemoveFieldCodes) hangs the same way, so there is no automated action for it; do it yourself from the Word ribbon with EndNote > Convert Citations and Bibliography > Convert to Plain Text. That produces a new copy, and the result is one-way: EndNote can no longer update the citations in the converted copy.
The source DOCX and the EndNote library are treated as user data. The bridge writes a new file by default and refuses to replace an existing output unless -Overwrite is explicit. Library searches read a temporary snapshot, the tool never edits sdb.eni, and RIS import is delegated to EndNote Direct Export. A new target library can only be cloned from a zero-record library while EndNote is fully closed.

In practice

This fits anyone who already writes in Word with desktop EndNote: mark the places to cite with {{CITE:id}} in the manuscript, then let an AI agent find the papers, check each DOI, import the records into the library, and replace the markers, following the manifest, with native IEEE citations and a real bibliography.