Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when writing shell commands or instructions that drive the mcporter CLI to invoke, inspect, authenticate, configure, or code-generate MCP servers: apply mcporter's real subcommands, the call verb with a dotted server.tool selector, its argument syntax, and its flag names — which cheaper models get wrong by default.
.claude/skills/mcporter-cli-conventions/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 7 |
| Model | Lift | Δ tokens | Δ turns | Cases | Verified |
|---|---|---|---|---|---|
| gemini-3.6-flashbest | +59% | +145% | 0% | 22 | 52d ago |
| gemini-3.5-flash | pending re-run | — | |||
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | — | — |
| case-02 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
| case-18 | ✗→✓ | ▲ Improved | — | — |
| case-01 | ✗→✓ | ▲ Improved | — | — |
Emit mcporter's real command surface whenever a task drives the mcporter CLI: the call verb with a dotted server.tool selector, the bare key=value/key:value argument syntax, and the exact subcommand and flag names for inspecting, authenticating, configuring, and code-generating MCP servers. Apply this any time a shell command or instruction targets mcporter.
mcporter call <server>.<tool>. The target is ONE dotted token joining theserver name and the tool name with a single . (mcporter call linear.list_issues). Never split it into two arguments (mcporter call linear list_issues) and never use --server / --tool flags. The call verb may be dropped as shorthand (mcporter linear.list_issues), but the dotted selector is mandatory.
key=value or key:value. Attach tool arguments directly after theselector as key=value or key:value tokens (team=ENG limit:5), NOT as GNU flags (--team ENG). Other accepted forms:
--args '{"limit":5}' — use for nested or structured parameters.'linear.create_issue(title: "Bug")' — positional order follows the schema.key=@path — body=@./notes.md reads the file as that argument's value.mcporter list. Bare mcporter list prints the configured servers;mcporter list <server> prints that server's tools. Add --schema (or --all-parameters) for full input parameters, --brief / --signatures for compact one-line signatures, and --status for a health check.
--stdio "<launch command>" targets alocally-launched stdio server (--stdio "bun run ./srv.ts"); --http-url <url> — or passing the full URL directly as the selector — targets a remote HTTP server. The launch-command flag is --stdio, never --command / --exec / --cmd.
mcporter auth <server|url>. The browser OAuth flow is the auth subcommand(mcporter auth notion), not login / oauth / connect. Add --no-browser to print the authorization URL for headless use.
mcporter config <list|get|add|remove|import>. Register a server withconfig add <name> <url> (append --auth oauth for OAuth); read one entry with config get <name>; delete one with config remove <name>; pull definitions from other clients with config import <cursor|claude-code|codex|...>.
--output json. Add --output json (or the shorthand --json)to any command to get JSON; not --format json.
mcporter daemon <start|status|stop|restart>. Pre-warm a backgroundserver pool with daemon start, check it with daemon status, and bounce it after config edits with daemon restart.
mcporter generate-cli. mcporter generate-cli --command <url>(or mcporter generate-cli <server-name>) emits a standalone CLI. Read a generated artifact's build metadata with mcporter inspect-cli <path>.
mcporter emit-ts <server> --mode client|types. --mode clientemits a full typed client wrapper; --mode types emits type-only declarations. The flag is --mode, its values client / types — never --type / --target.
config/mcporter.json. By default mcporter reads the project fileconfig/mcporter.json; override with --config <path> (also honored, in order: $MCPORTER_CONFIG, then $XDG_CONFIG_HOME/mcporter/mcporter.json[c] or ~/.mcporter/mcporter.json[c]).
BEFORE = the wrong default a base model guesses; AFTER = the real mcporter form.
mcporter call --server github --tool create_issue --title "Bug"mcporter call github.create_issue title="Bug"mcporter call slack.post --channel "#general" --text himcporter call slack.post --args '{"channel":"#general","text":"hi"}'mcporter describe brave-searchmcporter list brave-search --schemamcporter call --command "python srv.py" scan path=/xmcporter call --stdio "python srv.py" scan path=/xmcporter login sentrymcporter auth sentrymcporter add sentry https://mcp.sentry.dev/mcpmcporter config add sentry https://mcp.sentry.dev/mcp --auth oauthmcporter call weather.today city=NYC --format jsonmcporter call weather.today city=NYC --output jsonmcporter serve --keep-alivemcporter daemon startmcporter codegen --url https://mcp.grep.app/mcpmcporter generate-cli --command https://mcp.grep.app/mcpmcporter emit-ts vault --type clientmcporter emit-ts vault --mode clientmcporter <server>.<tool> (a dotted selector) infers call; mcporter <server>(a bare server name, no dot) infers list. The dot is what distinguishes a call from a list.
--args. Inline key=value is fine for flat scalars; switch to --args '<json>'the moment a value is an object or array. Do not mix inline and --args for the same key.
null, JSON) by default; pass--raw-strings or --no-coerce to keep them as literal strings.
https://…/mcp URL can stand in for <server> directly in calland list; --http-url <url> is the explicit equivalent.
--config > $MCPORTER_CONFIG > project config/mcporter.json >$XDG_CONFIG_HOME/mcporter/mcporter.json[c] / ~/.mcporter/mcporter.json[c].
linear.list_issues. DON'T pass two args or --server/--tool.key=value / key:value. DON'T use --key value GNU flags for tool arguments.mcporter list <server> --schema. DON'T use describe / inspect / tools.--stdio "<cmd>". DON'T use --command / --exec.mcporter auth <server>. DON'T use login / oauth / connect.mcporter config add <name> <url>. DON'T use mcporter add / register.--output json. DON'T use --format json.mcporter daemon start. DON'T use serve / start / warmup.generate-cli and emit-ts --mode client|types. DON'T use codegen / --type.server.tool into separate arguments or --server/--tool flags instead of the dotted selector.--key value GNU flags rather than key=value / key:value.mcporter describe / mcporter inspect to see a server's tools instead of mcporter list <server> --schema.--command for a locally-launched server (the flag is --stdio).mcporter login / mcporter oauth instead of mcporter auth.mcporter add instead of mcporter config add, or mcporter import instead of mcporter config import.--format json for machine output instead of --output json / --json.codegen / build instead of generate-cli, or using --type instead of --mode on emit-ts.mcporter call <server>.<tool> (dotted selector; call verb or shorthand).key=value / key:value / --args '<json>' / key=@file — never --key value.mcporter list <server> --schema (or --brief / --signatures).--stdio "<cmd>" for local, --http-url <url> or a full URL for remote.mcporter auth <server|url>.mcporter config add|get|remove|import; register = config add <name> <url>.--output json (or --json).mcporter daemon start|status|stop|restart.mcporter generate-cli --command <url>; mcporter emit-ts <server> --mode client|types.config/mcporter.json; override --config <path>.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +59 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.5-flash | verified | 7/10/2026 | +63% |
Other measured skills in the registry, with their headline benchmark lift.