publish-pilot-mcp
Enables creating and managing GitHub repositories, handling authentication, committing and pushing code, creating releases, and interacting with GitHub via the gh CLI.
Generates CI and release workflows (ci.yml, release.yml) for GitHub Actions, watches workflow runs, and supports trusted publishing with OIDC.
Supports publishing npm packages, including login, publish approval, trusted publishing setup, and version management.
Supports publishing Python packages to PyPI via twine, including login, trusted publishing setup, and version management.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@publish-pilot-mcptake this empty folder to a published GitHub repo and npm package"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
publish-pilot-mcp
An MCP server that lets Claude take a project from an empty folder to a published GitHub repo and npm, PyPI or crates.io package. It checks your tools, handles logins, scaffolds the project, runs checks, publishes and releases. You only do the sign-in, 2FA and approval clicks.
Install
You need Node.js 22 or newer. The server runs with npx, so there is nothing else to install.
Claude Code
claude mcp add publish-pilot -- npx -y publish-pilot-mcpClaude Desktop: add this to claude_desktop_config.json (on Windows it is in %APPDATA%\Claude\), then restart Claude Desktop:
{
"mcpServers": {
"publish-pilot": {
"command": "npx",
"args": ["-y", "publish-pilot-mcp"]
}
}
}Any other MCP client: run npx -y publish-pilot-mcp as a stdio server.
Related MCP server: ship-it-mcp
Quick start
Check that your machine is ready:
npx -y publish-pilot-mcp doctor both npmThis lists the tools that are installed or missing (git, gh, node/npm) and whether you are logged in to GitHub and npm.
Open an empty folder in Claude and say:
Use the publish_project prompt. Make an npm package called my-tool that converts CSV to JSON, and publish it to both GitHub and npm.
In Claude Code you can also type
/mcp__publish-pilot__publish_project.
Claude then works through the plan: preflight, scaffold, code and tests, quality checks, dry run, commit, GitHub repo, publish, trusted publishing, tag, release and a final install test. When it needs you, it sends a desktop notification and opens the right page: a GitHub device-code login, the npm login, or the npm publish approval.
What you have to do yourself
The server never types passwords or 2FA codes and never clicks Authorize, Approve or Save. Expect to:
Sign in to GitHub and click Authorize (only if
ghis not logged in yet).Sign in to npm (only if
npm whoamifails).Approve the first
npm publishon npmjs.com (2FA).Approve the trusted-publisher link (
npm trust github) with 2FA. If you prefer the website, open the package's Settings → Trusted Publisher page and fill in the values Claude gives you.
After that, every release is a pushed v* tag. GitHub Actions publishes with OIDC, so no tokens are stored anywhere.
Tools
Tool | What it does |
| Checks git, gh, the registry CLI, your logins and your git identity. Starts no logins. |
| Installs a missing tool with winget (Windows), brew (macOS) or apt (Linux). |
| Checks that the package and repo names are valid and free, and picks the best free alternative (for npm, |
| Starts a browser login ( |
| Polls a running login or publish job: status, output, URLs and codes. |
| Creates source, tests, README, LICENSE, CHANGELOG, .gitignore, manifest and workflows. Never overwrites files. |
| Writes |
| Install, lint, typecheck, build and test (npm scripts, a Python |
| Finds |
| Runs the publish dry run and lists the files that would ship, flagging junk and secrets. |
| Runs |
| Runs |
| Runs |
| Connects the package to |
| Tags |
| Waits for the release run and returns the failing log if it fails. |
| Bumps the patch, minor or major version and adds a CHANGELOG entry. |
| Installs from the real registry (or clones the repo) into a new temp folder and runs your quick start. |
| Desktop notification, and opening a page on github.com, npmjs.com, pypi.org or crates.io. |
| Runs a command in PowerShell (Windows) or sh. Destructive commands are refused. |
The publish_project prompt takes optional target, name, description, registry, visibility, license, what and dir arguments. Anything you leave out, Claude asks for before it starts.
Safety
All command output is scanned, and tokens (GitHub, npm, PyPI, crates.io, AWS and others) are replaced with
***before Claude sees them.Commits and publishes are blocked when
.envfiles, private keys or tokens would be included.It never deletes, force-pushes or unpublishes anything, tags included. Failed releases are fixed with a new patch version instead.
run_commandrefuses force-push, tag/repo/release deletion,npm unpublish,cargo yank, logout/token commands and recursive deletes.It only opens
https://pages on github.com, npmjs.com, pypi.org and crates.io.
Use as a library
import { createServer } from "publish-pilot-mcp";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
await createServer().connect(new StdioServerTransport());preflight, scaffoldProject, releaseWorkflow, scanProject, checkPackageName and other helpers are exported too, with TypeScript types.
Build from source
git clone https://github.com/acus9345/publish-pilot-mcp.git
cd publish-pilot-mcp
npm install
npm test
node dist/cli.js --helpTroubleshooting
doctorsays a tool is MISSING: ask Claude to runinstall_tool, or install it yourself (for examplewinget install --id GitHub.cli -e). Then restart your MCP client so it picks up the new PATH.Claude Desktop on Windows can't start the server: use
"command": "cmd", "args": ["/c", "npx", "-y", "publish-pilot-mcp"]and restart Claude Desktop.The npm approval link expired: ask Claude to call
publish_packageagain. Each call opens a fresh link, and versions that are already published are skipped.The release workflow says the tag doesn't match the version: the
v*tag must equal the manifest version. Ask Claude tobump_version, commit, and tag the new version. Old tags are never moved.npm publishfrom Actions fails with 404 or 401: trusted publishing isn't set up for this repo andrelease.ymlyet. Runsetup_trusted_publishing(the package must already exist on npm).
License
Available Tools
21 toolsadd_workflowsAdd GitHub workflowsA
Write .github/workflows/ci.yml (install, lint, build, test on push and PR) and optionally release.yml (on v* tags: test, build, publish with trusted publishing via OIDC — skipped if the version exists — then a GitHub release from the CHANGELOG). Existing files are kept unless overwrite is true.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). | |
| release | No | registry: publish + GitHub release; github-only: just a GitHub release. | registry |
| registry | No | Omit for a repo-only project. | |
| overwrite | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false; the description adds substantive behavior beyond that: existing files are preserved unless overwrite is true, the release job is skipped if the version already exists, and publishing uses trusted publishing via OIDC. These are real operational details an agent needs. It stops short of stating whether changes are committed or what the response contains, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the primary artifact and conditions, then appends the optional artifact and the overwrite caveat. Despite its length, every clause conveys distinct, non-redundant information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file-generating tool with no output schema, the description covers what is written, the trigger conditions, and the preservation semantics, which is most of what an agent needs. The remaining gap is whether it also stages/commits the new files (a sibling git_commit exists) or what the result looks like on partial failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema already documents dir, release, and registry. The description adds genuine meaning for overwrite (existing files kept unless true) and clarifies the release.yml trigger condition, but says nothing about dir or the registry enum values beyond what the schema provides. Baseline 3 is appropriate when the schema carries most of the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact artifacts it writes (.github/workflows/ci.yml and optional release.yml) and enumerates their contents (install, lint, build, test; tag-triggered release with OIDC publishing). This is a specific verb+resource statement that an agent can distinguish from siblings like create_github_repo, publish_package, or setup_trusted_publishing without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the agent can infer this is for scaffolding CI/release workflows in a project, and the description clarifies when release.yml is or isn't produced (release option, existing version). However, it never names an alternative tool or states when not to use this one (e.g., versus scaffold_project or preflight), leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bump_versionBump the versionA
Bump the manifest version (patch/minor/major) and add a CHANGELOG entry. Does not commit.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). | |
| level | No | patch | |
| notes | No | Markdown for the CHANGELOG entry, e.g. '### Fixed\n\n- Release workflow.' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
destructiveHint=false is already declared in annotations, so safety is covered. The description usefully adds that no commit is made, but says nothing about which manifest file is edited, what happens if the CHANGELOG is missing, or whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the core action and the key constraint front-loaded. Nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation with no output schema, the description is minimally adequate but leaves gaps: target manifest file, CHANGELOG creation/formatting behavior on failure, and whether notes is required for a meaningful entry.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: dir and notes are documented in the schema, while level has only its enum/default. The description restates the patch/minor/major options, which reinforces level but adds no new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('Bump the manifest version') plus the two side effects (CHANGELOG entry, no commit). It does not name or differentiate from near siblings like git_commit or tag_and_release, but the action itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — you bump before committing or releasing — but nothing states when to use this versus git_commit or tag_and_release, nor any prerequisites (clean tree, existing manifest, existing CHANGELOG). 'Does not commit' hints at sequencing without spelling it out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_namesCheck package and repo namesARead-only
Check that a package name is valid and free on the registry and that the GitHub repo name is free. When taken, returns the best free alternative (for npm, a scoped @user/name first).
| Name | Required | Description | Default |
|---|---|---|---|
| registry | No | Package registry: npm, pypi (PyPI) or crates (crates.io). | |
| repoName | No | GitHub repo name to check under your account. | |
| packageName | No | Package name to check on the registry. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuine behavioral value by disclosing the fallback: when a name is taken it returns the best free alternative, preferring a scoped @user/name for npm. That is real context beyond the annotations, though return shape and rate/error behavior are still unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler, front-loading the core purpose (check validity and availability) and then the fallback behavior. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries some return-value burden, and it partially does so by explaining the taken-name fallback. With 100% schema coverage and readOnly/openWorld annotations covering safety, this is nearly complete; only error/edge behavior is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (registry enum, repoName, packageName) documented in the schema itself. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) and two concrete resources (package name validity/availability on the registry, and GitHub repo name availability). An agent can distinguish this from inspect_package (which inspects existing packages) and create_github_repo. It does not explicitly name any sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what happens on the 'taken' case but never says when to reach for this tool (e.g. before publish_package or create_github_repo) or what alternatives exist. Usage is only weakly inferable from the tool name and context, with no explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_github_repoCreate the GitHub repo and pushA
gh repo create --public|--private --source=. --push. Needs a commit and a GitHub login. If the repo already exists and is this folder's origin, just pushes.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). | |
| name | Yes | Repo name (without owner). | |
| visibility | No | public | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the open-world/safety profile (openWorldHint=true, destructiveHint=false), so the description's job is to add context — and it does: it discloses the auth requirement and the idempotent behavior when the repo is already the folder's origin. It doesn't describe what happens on partial failure or conflicting remotes, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the command shape, then prerequisites, then the idempotency case. No filler, though the CLI syntax is somewhat cryptic for a reader without gh knowledge.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param mutation tool with no output schema, the description covers prerequisites, effect, and repeat-run behavior adequately; annotations supply the safety profile. Only minor gaps remain, such as remote/owner handling on partial failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: dir and name are documented in the schema, visibility has an enum, and description is undocumented. The description maps visibility to the CLI --public|--private flags but adds no format or constraint detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (create a GitHub repo) and even shows the underlying CLI invocation, so the effect is unambiguous. It doesn't explicitly contrast itself with siblings like git_commit or publish_package, but the action is distinct enough to be selected correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Prerequisites are stated ('Needs a commit and a GitHub login'), which is real usage context, and the re-run case is described. However, no alternatives or when-not-to-use conditions are named, so the agent gets context but not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_commitCommitA
git init (branch main) if needed, refuse when secrets or .env files would be committed, then stage everything and commit.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). | |
| message | Yes | Commit message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false, so the description carries most of the load. It meaningfully adds that the tool auto-runs git init on branch main when needed, refuses when secrets/.env files would be committed, and stages ALL changes before committing — valuable side-effect disclosure. It omits whether a commit is skipped when there's nothing staged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with zero waste that front-loads the setup and guard behavior before the core commit action. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description covers init, guard, staging, and commit behavior. It stops short of describing the return (e.g., commit hash or a no-op result), which would be the only remaining gap for a two-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so dir and message are already documented by the schema. The description adds no syntax, default, or format detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource (stage everything and commit) and reveals the setup/guard steps around it. It distinguishes the operation clearly from siblings like tag_and_release or run_checks, though it never explicitly names those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when the tool is appropriate through the 'if needed' init clause and the secrets refusal, which acts as a precondition. However, it gives no explicit when-to-use/when-not guidance and does not point to sibling tools such as scan_secrets for pre-checking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_packagePublish dry runARead-only
Run the registry dry run (npm pack/publish --dry-run, twine check, cargo publish --dry-run), list the files that would be published, and flag junk or secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true and openWorldHint=true already tell the agent this is a safe, network-touching read, so the bar is lower; the description still adds real value by naming the external toolchain invocations, the fact it enumerates would-be-published files, and that it performs junk/secret flagging.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single densely-packed sentence where each clause earns its place (dry run, file listing, junk/secrets). Front-loaded with the primary action; only the parenthetical toolchain examples risk being mildly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries responsibility for return content and does so by naming the file list and junk/secret flags. It is adequate for a one-parameter read-only tool; finer details like exit codes or per-ecosystem output shape are omitted but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (dir) and schema description coverage is 100%, so the schema fully documents it with path semantics. The description adds no parameter-level detail, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (run the registry dry run) with concrete underlying commands for npm, twine, and cargo, plus the two outputs (file list, junk/secret flags). It is clearly distinct from publish_package by being a dry run, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'dry run' framing implies this belongs before an actual publish, but there is no explicit when-to-use, when-not-to-use, or named alternative (publish_package, run_checks, scan_secrets are all plausible neighbors). Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_toolInstall a missing toolA
Install a CLI tool with winget (Windows), brew (macOS) or apt (Linux). Known tools: git, gh, node, npm, python, cargo. After installing on Windows you may need to restart the MCP client so PATH updates.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Tool to install. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare openWorldHint=true and destructiveHint=false, so safety is partly covered; the description still adds real value by naming the platform package managers and, importantly, warning that Windows installs may require an MCP client restart for PATH updates. It omits failure behavior (e.g., what happens with an unknown or already-installed tool), keeping it out of the top band.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and platform mapping, followed by the allowed values and the Windows PATH caveat. Every sentence carries distinct, actionable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter install tool with no output schema, the description covers the action, the platform-specific mechanisms, valid inputs, and the post-install PATH caveat, which is what an agent needs to call it. It stops short of describing failure handling or pointing to verify_install as the follow-up step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'name' parameter carries an enum, so the schema already documents the input fully. The description's 'known tools' list merely restates the enum members and adds no syntax or format detail beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (install) and resource (CLI tool) and even names the platform-specific backends (winget/brew/apt), so an agent immediately knows what this does. It does not, however, explicitly distinguish itself from the sibling verify_install, which covers the adjacent verification concern, so it falls short of the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the title and the 'known tools' list suggest this is for filling a missing dependency, but the description never says when to reach for this versus verify_install, preflight, or inspect_package, nor does it state any exclusion or precondition. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_statusCheck a background jobA
Get the status and recent output of a login or publish job. Optionally wait up to waitSeconds for it to finish, or send Enter to it. Without an id, lists all jobs.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Job id from login, publish_package or setup_trusted_publishing. | |
| stop | No | Stop the job (e.g. to restart a publish whose link expired). | |
| sendEnter | No | Send Enter to the job (for 'Press ENTER' prompts). | |
| waitSeconds | No | Wait up to this long for the job to finish (keep under your client's tool timeout). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare openWorldHint=false, so the description carries most of the burden. It usefully explains the waiting and Enter-prompt behaviors, but never mentions the stop parameter's effect (killing/restarting a publish) and gives no sense of return shape or mutation implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose and then the behavioral options. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does tell the agent the return content ('status and recent output'). It is largely complete for a status-check tool, with the omission of the stop parameter's behavior as the main gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds only one genuinely new semantic ('without an id, lists all jobs') and repeats wait/Enter behavior already documented in the schema; stop is left solely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the status and recent output of a login or publish job') and clarifies that omitting the id lists all jobs. It never names a sibling such as watch_workflow or check_names, so an agent gets no explicit differentiation from the closest alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes the available modes (wait up to waitSeconds, send Enter, list all jobs without an id), which implies when each applies, but there is no guidance on choosing this tool over siblings like watch_workflow or on prerequisites. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginStart a browser loginA
Start the browser-based login for github (gh auth login --web), npm (npm login --auth-type=web), pypi or crates. Returns at once with a job id, the one-time code and the URL; the user signs in, does 2FA and clicks Authorize. Poll job_status every 1–2 minutes until running is false.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | Which account to log in to. | |
| openBrowser | No | Open the login page in the default browser. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover openWorldHint and destructiveHint=false; the description carries the real behavioral load by disclosing that the call is asynchronous and returns immediately with a job id, one-time code and URL, that a human must complete sign-in/2FA/Authorize, and the polling cadence for completion. This is exactly the non-obvious behavior an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences: purpose first, then the async return contract, then the follow-up polling action. Every clause carries actionable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by naming the returned artifacts (job id, one-time code, URL) and the terminal condition for polling (running is false). For a two-parameter async login tool, nothing needed to invoke and follow through correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the enum by mapping each service to its concrete login mechanism (gh auth login --web, npm login --auth-type=web), implying each service behaves differently. No detail is added for openBrowser, keeping it at 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Start the browser-based login') plus the exact resource, with the supported services enumerated (github, npm, pypi, crates). An agent can distinguish this from job_status, preflight, or setup_trusted_publishing without reading the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the operative workflow: call it, hand the code/URL to the user, then 'Poll job_status every 1–2 minutes until running is false,' naming the sibling to use next. It does not state when-not to use it (e.g. if credentials already exist), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notifyDesktop notificationC
Show a desktop notification, e.g. 'Ready for your approval'.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | publish-pilot | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false, and the description adds nothing behavioral: it doesn't say whether the notification blocks, whether it requires user interaction, whether it is fire-and-forget, or how failures surface. For a user-facing side-effecting tool, the description should carry more.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with an inline example; front-loaded and free of waste. It is appropriately sized, though brevity comes partly at the cost of omitting parameter clarification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple two-parameter tool with no output schema and no annotations beyond destructiveHint=false, and the description leaves both parameters along with all behavioral traits unexplained. It is not adequate for reliable invocation despite the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters, and the description does not compensate: it never explains that 'title' is the notification heading (with a default of 'publish-pilot') or that 'message' is the body text. The example only illustrates message content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Show a desktop notification', which is unambiguous and distinct from all siblings (no other notification tool exists in the set). It does not need to differentiate against a near-duplicate, so a 4 is right rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given; the example content ('Ready for your approval') hints at approval workflows but never states when an agent should call this or any prerequisite/alternative. Usage must be inferred entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_urlOpen a page in the browserA
Open an https page on github.com, npmjs.com, pypi.org or crates.io in the default browser. Other hosts are refused.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare openWorldHint=true and destructiveHint=false; the description adds real behavioral context that annotations do not cover — the hard host allowlist, the use of the default browser, and the failure mode for disallowed hosts. It still omits whether the page contents are returned or what the response looks like, but that is a modest gap for this simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, and the positive capability is front-loaded ahead of the refusal constraint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema and only two annotations, the description supplies the critical constraints (protocol, allowed hosts, failure on other hosts) an agent needs to invoke it correctly. It could add a word on return behavior, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden. It does partially compensate by implying the URL must be https and its host must be in the allowlist, which is meaningful constraint information beyond a bare 'string'. It still gives no full URL syntax or example, so the gap is only partly closed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (open a page in the default browser) and pins the exact scope with an explicit host allowlist. That scope statement alone distinguishes it from every sibling in this server, none of which open external pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It effectively states when the tool works (github.com, npmjs.com, pypi.org, crates.io) and when it will not ('Other hosts are refused'), which is a clear usage boundary. It does not name alternative tools to use instead, so it stops short of full when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preflightPreflight checkARead-only
Check that git, gh and the registry CLI are installed, which accounts are logged in, and the git identity. Starts no logins. Run this first.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | What to publish: a GitHub repo, a registry package, or both. | |
| registry | No | Package registry: npm, pypi (PyPI) or crates (crates.io). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds real behavioral context beyond them by promising 'Starts no logins', i.e. it inspects auth state without mutating it, which is the key risk an agent would want confirmed. It does not describe what output or failure signal results, but the added value over annotations is genuine.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, with the core action front-loaded and the critical usage instruction ('Run this first') placed at the end for emphasis. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameter-light, read-only preflight tool it covers what is checked and when to call it. With no output schema, it could say more about what the result reports (e.g. pass/fail per dependency or remediation guidance), which is a minor gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with two enum parameters (target, registry) that are self-documenting, so the baseline is 3. The description never mentions target or registry, adding no meaning beyond the schema, though nothing is left ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb ('Check') and enumerates the exact resources inspected: git, gh, registry CLI installation, logged-in accounts, and git identity. It also distinguishes itself from siblings by noting it 'Starts no logins' (vs. login) and by its 'Run this first' positioning ahead of install_tool/login. An agent can tell what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Run this first' gives explicit ordering guidance for a workflow of sibling tools, and 'Starts no logins' implicitly routes authentication to the login tool. It does not name an alternative explicitly or state when-not to use it, but the intended call context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_packagePublish the packageA
Publish from the terminal (npm publish [--access public], twine upload, cargo publish). Skips when the version already exists. Returns a job; the npm approval page is opened in the browser for the user. If the link expires, call again.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). | |
| dryRun | No | ||
| openBrowser | No | Open approval pages in the default browser. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the sparse annotations: it discloses that the version-exists case is silently skipped, that the call returns an async job rather than a completed publish, that an approval page is opened in the user's browser (a side effect annotations do not cover), and that retry is expected when links expire. These are exactly the behaviors an agent needs to plan around.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, verb-first, with the alternative commands, idempotency behavior, return shape, and retry guidance each in its own clause. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter, output-schema-less tool it covers the essentials: what it publishes, the skip condition, the async job return, and the browser link lifecycle. It omits authentication prerequisites and any mention of dryRun, which leaves a modest gap for a tool with an openWorldHint annotation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: 'dir' and 'openBrowser' are documented in the schema, and the description's browser-approval sentence loosely reinforces openBrowser, but 'dryRun' is undocumented in both schema and description. Baseline 3 is appropriate when the schema carries most of the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Publish from the terminal') and enumerates the concrete registry commands it drives (npm publish, twine upload, cargo publish), leaving no doubt about what it does. It does not explicitly name how it differs from close siblings like tag_and_release or setup_trusted_publishing, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real operational context: it is idempotent ('Skips when the version already exists') and tells the agent to re-invoke if the approval link expires. It never states prerequisites (login / trusted publishing already configured) or when a sibling such as tag_and_release should run instead, so no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_checksInstall, lint, build and testA
Run the project's install, lint, typecheck, build and test steps (npm scripts, a Python .venv with pytest + build, or cargo clippy/build/test). Stops at the first failure and returns its output.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply destructiveHint=false, so the description must carry behavior, and it does add real value beyond that: fail-fast semantics ('stops at the first failure') and the fact that the failing step's output is returned. It still omits notable traits such as long runtime, network/package downloads, and that running install modifies the working directory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler: the first front-loads the action and scope, the second states the failure/output behavior. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description does state that the failing step's output is returned, and it covers the parameter's role indirectly. It stops short of describing runtime expectations, side effects of installing dependencies, or what a successful run returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter with 100% schema description coverage ('Project folder (absolute path, or relative to the server's working directory)'), so the schema already fully documents it. The description adds no path syntax or resolution detail beyond what the schema states, which is the expected baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('run') and resource (the project's install, lint, typecheck, build and test steps), then enumerates the supported toolchains (npm, Python .venv/pytest/build, cargo clippy/build/test). This is enough to separate it from generic siblings like run_command, install_tool, and verify_install without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: this is the whole-pipeline verification tool, so an agent can infer it is the one-shot 'check my project' call. However, no explicit when-to-use guidance or alternatives are named (e.g. run_command for a single command, install_tool or verify_install for narrower steps), so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_commandRun a shell commandADestructive
Run a command line (PowerShell on Windows, sh elsewhere) and return its output, redacted of tokens. Destructive commands (force-push, deleting tags/repos/releases, unpublish, recursive delete) are refused.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| command | Yes | ||
| timeoutSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond annotations: output is redacted of tokens, and specific classes of destructive commands (force-push, deleting tags/repos/releases, unpublish, recursive delete) are refused. Annotations already flag openWorld and destructive, so this enriches with the refusal policy. Doesn't mention default timeout behavior or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with what it does and the platform detail, then the refusal policy. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param tool with no annotations explaining timeout/cwd and no output schema, the description covers the command and refusal policy well but leaves parameter meanings and the 300s default timeout fully unexplained. Adequate but with clear gaps given the safety-critical nature of executing arbitrary shell commands.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% – none of the three parameters (command, cwd, timeoutSeconds) are documented in the schema. The description doesn't explain command format, cwd semantics, or timeout behavior, leaving all params undescribed. It fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (run) and resource (shell command line), including the platform-specific interpreter (PowerShell on Windows, sh elsewhere). This is clearly distinguishable from siblings like run_checks or git_commit, which are narrower.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies general command execution, but doesn't say when to prefer a dedicated sibling (e.g., use git_commit instead of running raw git commands) or when-not to use it. Usage is implied by purpose rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scaffold_projectScaffold a projectA
Create a standard project: source, tests, README, LICENSE, CHANGELOG, .gitignore, .gitattributes and a manifest (version 0.1.0, author from git config, repo URL, publishConfig for scoped npm). Adds CI and release workflows when repoUrl is set. Never overwrites existing files.
| Name | Required | Description | Default |
|---|---|---|---|
| cli | No | Add a command-line entry point with --help and --version (npm, pypi). | |
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). | |
| name | Yes | Package name. | |
| license | No | SPDX license id. | MIT |
| repoUrl | No | https://github.com/owner/repo | |
| registry | Yes | Package registry: npm, pypi (PyPI) or crates (crates.io). | |
| workflows | No | Default: ci+release when repoUrl is set. | |
| description | Yes | One-line description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only supply destructiveHint=false, so the description carries most of the burden and does so well: 'Never overwrites existing files' is a meaningful safety guarantee, and the manifest contents (version 0.1.0, author from git config, publishConfig for scoped npm) disclose concrete side effects. It stops short of stating failure behavior (e.g., what happens if the dir doesn't exist or a partial scaffold occurs), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences; the artifact list is front-loaded ahead of the conditional workflow behavior and the non-overwrite guarantee. No filler, every clause conveys actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-param creation tool with no output schema and minimal annotations, the description covers what is produced and the key safety property. Gaps remain around return value, failure modes, and whether the target directory must pre-exist, but nothing essential for a correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters, making 3 the baseline. The description restates the repoUrl-to-workflows trigger, which largely duplicates the schema's own default for 'workflows', and adds only marginal non-schema meaning (author from git config, scoped-npm publishConfig).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create/scaffold) and enumerates the exact artifacts produced (source, tests, README, LICENSE, CHANGELOG, .gitignore, .gitattributes, manifest) with concrete defaults. This clearly distinguishes it from siblings like create_github_repo, add_workflows, and publish_package without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the artifact list: this is for bootstrapping a fresh project. The conditional 'Adds CI and release workflows when repoUrl is set' gives some behavioral context, but no when-to-use/ when-not guidance is offered, and the relationship to the sibling add_workflows (which also manipulates workflows) is not disambiguated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_secretsScan for secretsARead-only
Look for .env files, private keys and tokens in everything that would be committed. Reports file and line, never the secret itself.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=true declared, the description adds real value: it defines the scan scope (staged/committable content) and, importantly, discloses the output behavior that 'reports file and line, never the secret itself' — a meaningful safety property for a secrets scanner with no output schema. It stops short of noting limits, e.g. whether it blocks commits or is purely advisory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the scan scope comes first and the reporting guarantee second, both front-loaded and each earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with no output schema, the description supplies the key missing piece — what the results look like and that secrets are never echoed. Minor gap: no guidance on how findings should influence subsequent actions (e.g. whether to proceed with git_commit).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter, so the schema already documents 'dir' fully. The description adds no path-format or scope nuance beyond what the schema states, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scan/look for) and concrete resource set (.env files, private keys, tokens) scoped to 'everything that would be committed', which is more precise than a generic file scan. It does not explicitly distinguish itself from near-neighbors like preflight or check_names, so it falls just short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'everything that would be committed' implies the pre-commit context, but there is no explicit when-to-use, when-not-to-use, or named alternative among siblings (preflight, run_checks). Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_trusted_publishingSet up trusted publishingA
Connect the package to the GitHub release workflow (OIDC, no stored tokens). npm: runs npm trust github (the user approves with 2FA) and returns the settings page as fallback. PyPI/crates.io: opens the settings page and returns the exact values to fill in. The user clicks Save.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). | |
| repo | Yes | owner/name of the GitHub repo. | |
| openBrowser | No | ||
| workflowFile | No | release.yml |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give openWorldHint/destructiveHint, and the description goes well beyond them: it discloses interactive steps, a 2FA approval requirement, that it opens a browser, that some registries only return values for the user to paste, and that the user must click Save. It does not state whether the npm command mutates config remotely or what happens on failure, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the core purpose before the registry-specific branches. No filler, though listing three registry behaviors in one block is slightly compressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains what comes back (a settings page fallback, or exact values to fill in) and covers all registry branches. An agent has enough to call it and set expectations for the interactive hand-off.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: dir and repo are documented, but openBrowser and workflowFile have no descriptions. The description indirectly conveys both (it 'opens the settings page' and targets the 'GitHub release workflow'), yet it never names or maps to those parameters, so it only marginally compensates for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Connect the package to the GitHub release workflow') with the key mechanism (OIDC, no stored tokens). The action is distinctly not publish_package, add_workflows, or login, and an agent can tell what it accomplishes without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the per-registry flow and implies it is the OIDC alternative to stored tokens, but never states when to choose this over alternatives (e.g., vs login/token setup) or any when-not conditions. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_and_releaseTag, push and releaseA
Create tag v from the manifest, push the branch and tag, and optionally create the GitHub release with notes from CHANGELOG.md. Never moves or deletes tags.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). | |
| version | No | Must match the manifest; defaults to it. | |
| createRelease | No | Create the GitHub release here (repo-only projects). For 'both', release.yml creates it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false and openWorldHint=true, so the agent knows this mutates remote state without destruction. The description usefully reinforces that guarantee ('Never moves or deletes tags') and discloses the release-notes source (CHANGELOG.md). It omits prerequisites such as required auth, remote/branch state, or what happens if the tag already exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the primary action sequence front-loaded and the safety guarantee placed last as a constraint. No filler, no restatement of the title, every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only partial annotation coverage, the description should carry more of the operational burden for a network-mutating tool. It explains the happy path and release creation but says nothing about prerequisites, failure modes, or idempotency when the tag already exists. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented, giving a baseline of 3. The description adds only the tag naming convention ('v<version>') beyond the schema. It contributes marginal extra meaning, so it stays at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise, sequenced set of verbs and resources: create tag from manifest, push branch and tag, optionally create the GitHub release. This is unmistakably distinct from commit/publish/check siblings. It stops short of naming a sibling (e.g., bump_version must precede it), so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the action sequence and the release-notes source; there is no explicit when-to-call or when-not-to-call statement. The 'Never moves or deletes tags' line hints at safe re-running but does not say so directly. An agent can infer ordering vs bump_version but must do the work itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_installVerify like a new userA
In a brand-new temp folder, install the published package from the real registry (or git clone the repo) and run a command, such as the README quick start. Installed executables are on PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| command | Yes | Command to run in the folder (PowerShell on Windows, sh elsewhere). | |
| repoUrl | No | https://github.com/owner/repo — clone instead of installing. | |
| version | No | ||
| registry | No | Package registry: npm, pypi (PyPI) or crates (crates.io). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (openWorldHint=true, destructiveHint=false), and the description adds real behavioral context: execution happens in an isolated brand-new temp folder, installs come from the real registry, git clone is an alternative path, and installed executables land on PATH. It omits cleanup behavior, timeouts, and how failures are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the core scenario front-loaded and no filler. The PATH note is a useful trailing detail rather than padding, though a bit more structure around outcomes could be added without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool that installs packages and executes arbitrary commands over the network, with no output schema and minimal annotations. The description covers the setup scenario but says nothing about return values, error reporting, timeouts, or cleanup, leaving meaningful gaps for an agent invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60% (command, repoUrl, registry documented; name and version are not). The description loosely maps to registry and repoUrl ('from the real registry (or git clone the repo)') but adds no syntax, format, or defaults for the undocumented name/version parameters, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb+resource: install the published package into a fresh temp folder and run a command, framed as a new-user verification. The 'brand-new temp folder' isolation makes the clean-room intent clear, though it never explicitly contrasts itself with siblings like install_tool or preflight.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scenario ('verify like a new user', 'such as the README quick start'), giving the agent a concrete example of the intended command. However, there is no explicit when-to-use vs. when-not guidance and no mention of alternatives such as install_tool or preflight.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_workflowWatch a workflow runBRead-only
Wait for the latest run of a workflow (default release.yml) and report its result, with the failing log on failure.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Project folder (absolute path, or relative to the server's working directory). | |
| ref | No | Only runs for this tag/branch, e.g. v0.1.1. | |
| workflow | No | release.yml | |
| waitSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine behavior beyond that: the call blocks until the run finishes and returns the failing log on failure. It does not say what happens on timeout or how waitSeconds bounds the wait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence, front-loaded with the action and scope, with the failure-output detail appended rather than buried. Nothing extraneous, though the parenthetical default is redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema, four-parameter tool this covers the essential promise (block until done, report result, include failing log). It leaves open what happens when the wait expires and whether it observes an already-running run or triggers one, which an agent needs to reason about before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% (workflow has a default but no description, waitSeconds has no description at all). The description restates the release.yml default already present in the schema and says nothing about dir, ref, or waitSeconds, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: wait for the latest run of a workflow and report its result. An agent can distinguish it from run_checks, job_status, or add_workflows. It stops short of naming which sibling to use instead when a non-blocking status check is wanted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'Wait' implies this is a blocking/poll-until-done call, typically after a workflow has been triggered, but there is no explicit when-to-use or when-not-to-use guidance. No alternative such as job_status is named for agents that want a non-blocking check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
21 tool updates
v0.1.0- First observed
add_workflows - First observed
bump_version - First observed
check_names - First observed
create_github_repo - First observed
git_commit - First observed
inspect_package - First observed
install_tool - First observed
job_status - First observed
login - First observed
notify - First observed
open_url - First observed
preflight - First observed
publish_package - First observed
run_checks - First observed
run_command - First observed
scaffold_project - First observed
scan_secrets - First observed
setup_trusted_publishing - First observed
tag_and_release - First observed
verify_install - First observed
watch_workflow
TDQS
Scored across 21 tools
Each tool maps to a distinct stage of the publish workflow (preflight, login, checks, publish, release), and the descriptions clarify boundaries well. A few pairs—e.g. scaffold_project vs add_workflows, job_status vs watch_workflow—are related, but their scopes are still distinguishable.
Names are almost entirely lowercase snake_case and mostly follow a verb_noun pattern (install_tool, create_github_repo, publish_package). A few single-word or noun-first entries (preflight, login, notify, job_status, git_commit) are minor deviations, but the convention remains predictable.
21 tools is above the typical 3–15 range and feels heavy, but the server covers a comprehensive release lifecycle where most tools represent distinct, necessary steps rather than redundant helpers. Generic utilities like notify, open_url, and run_command add breadth without obvious bloat.
The surface covers the full lifecycle from environment preflight and project scaffolding through checks, publishing, trusted publishing, tagging/releasing, and post-publish verification. Minor gaps exist, such as no unpublish/deprecate/yank or broader package-settings management, but core workflows are well covered.
Maintenance
Related MCP Connectors
Publish and schedule videos to TikTok, YouTube Shorts, Instagram, Facebook, LinkedIn, Pinterest, Bluesky, Threads and X from Claude, Cursor or any MCP client. Upload once, post everywhere, track views in unified analytics, and retry failed posts. Official platform APIs only, free plan available. Docs: https://docs.multi-upload-tool.com/mcp
Source-checked CLI guides and model-aware planning for Claude Code, Codex, and Grok Build.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables GitHub project management from Claude, supporting issue creation, milestones, labels, changelog generation, and repository stats.85 npm1MIT
- FlicenseNot gradedqualityDmaintenanceEnables to interact with GitHub repositories directly from Claude, supporting actions like viewing repos, checking status, committing and pushing changes, and managing pull requests.-
- AlicenseAqualityDmaintenanceEnables Claude to access and manage GitHub repositories dynamically at runtime, including private repos, with tools for browsing files, searching code, and viewing commits, pull requests, and issues.111ISC
- AlicenseAqualityDmaintenanceEnables Claude to create, manage, and clean up git worktrees automatically, including dependency installation and GitHub PR creation.5MIT