io.github.esaio/esa · version 0.15.2 · 6,583 weekly npm downloads · audited 2026-11-03
Notes
No hidden-instruction or invisible-character findings in any tool, prompt, or resource description.
Checks the directory's published tool requirements that are visible from tools/list. Passing them does not guarantee acceptance.
esa_delete_commentNot a vulnerability by itself. It tells you what an injected prompt could ask this server to do, so you can decide which tools need approval.
| Name | Title | Hint | Description |
|---|---|---|---|
esa_get_teams | Get user's accessible esa teams | read-only | Retrieves a list of esa teams that the user has access to. |
esa_get_team_stats | Get team statistics | read-only | Retrieves team statistics including member count, posts count (total/WIP/shipped), comments, stars, watches, and daily/weekly/monthly active users |
esa_get_team_tags | Get team tags | read-only | Retrieves all tags used in posts within a team, along with the count of posts for each tag |
esa_get_team_members | Get team members | read-only | Retrieves all members of a team with their roles and profile information |
esa_get_post | Get a specific esa post | read-only | Retrieves a specific post from an esa team by post number. The response always includes backlinks_count (the number of posts referencing this one). To list the referencing posts themselves, use esa_get_post_backlinks. To… |
esa_search_posts | Search Posts | read-only | Search for posts in esa.io |
esa_create_post | Create a new esa post | writes | Creates a new post in an esa team with optional tags, category, and WIP status. |
esa_update_post | Update an existing esa post | destructive | Updates an existing post in an esa team by post number. You can update the title, content, tags, category, and WIP status. To ship a post (mark as complete), set wip to false - this is preferred over using esa_ship_post … |
esa_append_post | Append content to an existing esa post | destructive | Appends Markdown content to the end of an existing post's body, saving it as a new revision. Unlike esa_update_post, this does not require fetching the current body first, making it ideal for adding to a post (e.g. log e… |
esa_prepend_post | Prepend content to an existing esa post | destructive | Prepends Markdown content to the beginning of an existing post's body, saving it as a new revision. Unlike esa_update_post, this does not require fetching the current body first. Behaves the same as esa_append_post excep… |
esa_get_comment | Get a specific comment | read-only | Retrieves a specific comment by comment ID, with optional stargazers included. |
esa_create_comment | Create a new comment on a post | writes | Creates a new comment on an existing post in an esa team. |
esa_update_comment | Update an existing comment | destructive | Updates an existing comment in an esa team by comment ID. |
esa_delete_comment | Delete a comment | destructive | Deletes a comment from an esa team by comment ID. |
esa_get_post_backlinks | Get backlinks for a specific post | read-only | Retrieves a paginated list of posts that reference (link back to) the specified post. Archived posts and WIP posts are excluded. Results are ordered by backlink registration date (newest references first). |
esa_get_post_comments | Get comments for a specific post | read-only | Retrieves a list of comments for a specific post with pagination support. |
esa_get_team_comments | Get team comments | read-only | Retrieves a list of comments in a team with pagination support. |
esa_get_categories | Get categories for a specific path | read-only | Retrieves category information and subcategories for a specific category path, with optional posts and parent categories included |
esa_get_top_categories | Get top-level categories | read-only | Retrieves all top-level categories for a team |
esa_get_all_category_paths | Get category paths with pagination | read-only | Retrieves category paths in a team to understand the overall category structure. Perfect for category organization, cleanup, migration planning, or finding similar categories. Returns a paginated list of paths with post … |
esa_archive_post | Archive a post | destructive | Archives a post by moving it to the Archived/ category. If the post is in 'dev/docs', it becomes 'Archived/dev/docs'. Posts without category go to 'Archived'. |
esa_ship_post | Ship a post | destructive | Ships a post by setting wip to false. This marks the post as complete and ready to be published. Use this only when you need to ship without making other changes - if you're also updating title, content, or other fields,… |
esa_duplicate_post | Duplicate a post | writes | Duplicates a post by creating a new WIP post with the same name and body_md as the source post. By default the duplicate is created in the source team; specify targetTeamName to duplicate into a different team. |
esa_rollback_post_revision | Roll back a post to a previous revision | destructive | Rolls back a post to the specified revision, saving the restored content as a new revision. |
esa_get_search_options_help | Get esa search options documentation | read-only | Get esa search syntax documentation when you need to construct complex search queries. Use this BEFORE esa_search_posts if you're unsure how to translate user's search requirements into proper esa query syntax (e.g., dat… |
esa_get_markdown_syntax_help | Get esa Markdown syntax documentation | read-only | Get esa Markdown and formatting documentation when unsure about syntax. Use this BEFORE using any tools with *_md parameters (like esa_create_post, esa_update_post, esa_create_comment, esa_update_comment) if you need cla… |
esa_search_help | Search esa documentation and help | read-only | Search esa documentation for features, terminology, and specifications. Use this when users mention esa-specific terms, ask about esa functionality, or request help with esa workflows that you're not familiar with. |
esa_get_attachment | Get attachment file from esa | read-only | Retrieves an attachment file from esa with signed URLs. For supported images (JPEG, PNG, GIF, WebP) under 30MB, returns base64-encoded data. For other file types, larger images, or when forceSignedUrl is true, returns si… |
npx mcpvetter scan --liveAdd this to a README:
[](https://mcpvetter.com/servers/esaio-esa-mcp-server)Get the MCPVetter verified badge, a re-audit within 24 hours of every npm release, and an email whenever tools, findings, or Claude directory readiness change. $29 per server per month. You prove ownership first, free.