@jigyasudham/veto 2.1.1 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MCP-REGISTRY.md +94 -0
- package/README.md +19 -15
- package/package.json +2 -1
- package/server.json +23 -0
package/MCP-REGISTRY.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Publishing Veto to the official MCP Registry
|
|
2
|
+
|
|
3
|
+
This document is the runbook for listing Veto on the [official Model Context
|
|
4
|
+
Protocol registry](https://registry.modelcontextprotocol.io) so it appears on
|
|
5
|
+
official sources and in registry-backed directories. The registry entry is
|
|
6
|
+
defined by [`server.json`](../server.json) at the repo root.
|
|
7
|
+
|
|
8
|
+
## How the registry verifies ownership
|
|
9
|
+
|
|
10
|
+
The registry does **not** host the package — it points at the npm package
|
|
11
|
+
`@jigyasudham/veto`. To prove we own that package, the registry fetches
|
|
12
|
+
`https://registry.npmjs.org/@jigyasudham/veto/<version>` and reads the
|
|
13
|
+
top-level **`mcpName`** field from the published `package.json`. It must equal
|
|
14
|
+
the `name` in `server.json`:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
io.github.jigyasudham/veto
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The `io.github.jigyasudham/*` namespace is owned by proving control of the
|
|
21
|
+
GitHub account `jigyasudham` (interactive OAuth at publish time).
|
|
22
|
+
|
|
23
|
+
> **Critical ordering:** the npm version referenced in `server.json` must
|
|
24
|
+
> already be published **with** the `mcpName` field. The previously published
|
|
25
|
+
> `2.1.1` did **not** have `mcpName`, which is why this listing ships as
|
|
26
|
+
> `2.1.2` — the first npm release that carries it. Always `npm publish` first,
|
|
27
|
+
> then `mcp-publisher publish`.
|
|
28
|
+
|
|
29
|
+
## Files involved
|
|
30
|
+
|
|
31
|
+
| File | Role |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `server.json` | The registry entry (schema `2025-12-11`). Name, description (≤100 chars), repository, and the npm package + stdio transport. |
|
|
34
|
+
| `package.json` | Carries `"mcpName": "io.github.jigyasudham/veto"` — the ownership proof read off npm. Keep its `version` equal to `server.json` `version` and `packages[0].version`. |
|
|
35
|
+
|
|
36
|
+
Keep all three version fields in lockstep on every release:
|
|
37
|
+
`package.json.version` == `server.json.version` == `server.json.packages[0].version`.
|
|
38
|
+
|
|
39
|
+
## Publish steps
|
|
40
|
+
|
|
41
|
+
Run from the repo root, on a clean `main` at the tagged release commit.
|
|
42
|
+
|
|
43
|
+
1. **Publish the npm release that carries `mcpName`** (the user does this — it
|
|
44
|
+
needs npm credentials):
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm run build
|
|
48
|
+
npm publish --access public # publishes @jigyasudham/veto@2.1.2
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Verify the field landed on npm:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
curl -s https://registry.npmjs.org/@jigyasudham/veto/2.1.2 | grep -o '"mcpName":"[^"]*"'
|
|
55
|
+
# -> "mcpName":"io.github.jigyasudham/veto"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
2. **Install the registry publisher CLI** (`mcp-publisher`). Either download a
|
|
59
|
+
release binary from
|
|
60
|
+
[`modelcontextprotocol/registry`](https://github.com/modelcontextprotocol/registry/releases)
|
|
61
|
+
or build from source (`make publisher` -> `./bin/mcp-publisher`).
|
|
62
|
+
|
|
63
|
+
3. **Authenticate the namespace** with the GitHub account `jigyasudham`
|
|
64
|
+
(interactive — opens a browser):
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
mcp-publisher login github
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
4. **Validate and publish** the entry (reads `server.json` from the cwd):
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
mcp-publisher publish
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The registry re-runs npm ownership validation server-side; if step 1 was
|
|
77
|
+
skipped it fails with *"NPM package is missing required 'mcpName' field"*.
|
|
78
|
+
|
|
79
|
+
5. **Confirm the listing:**
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
curl -s "https://registry.modelcontextprotocol.io/v0/servers?search=veto" | grep -o '"name":"io.github.jigyasudham/veto"'
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Updating the listing on future releases
|
|
86
|
+
|
|
87
|
+
For each new release: bump `version` in `package.json` **and** both version
|
|
88
|
+
fields in `server.json`, `npm publish`, then re-run `mcp-publisher publish`.
|
|
89
|
+
The `mcpName` field never changes.
|
|
90
|
+
|
|
91
|
+
## Lifecycle
|
|
92
|
+
|
|
93
|
+
Use `mcp-publisher status` to move the server between `active`, `deprecated`,
|
|
94
|
+
and `deleted` states if needed.
|
package/README.md
CHANGED
|
@@ -10,27 +10,27 @@ An MCP server that runs locally on your machine, plugs into Claude Code, Codex C
|
|
|
10
10
|
|
|
11
11
|
## How the Agents Work
|
|
12
12
|
|
|
13
|
-
**Every
|
|
13
|
+
**No API keys, zero extra cost.** Every worker agent is a deterministic expert module at its core, with two optional layers of LLM reasoning on top — all of it delegated to the AI you're already paying for.
|
|
14
14
|
|
|
15
|
-
###
|
|
16
|
-
|
|
15
|
+
### Default — Deterministic expert modules
|
|
16
|
+
Out of the box, each of the 42 worker agents runs as a hand-written expert module (`plan()` / `analyze()` in `src/agents/`) — real heuristics like regex/AST secret detection, OWASP/CWE rules, and complexity metrics, **not** an LLM. They always run, work offline, and cost zero tokens.
|
|
17
17
|
|
|
18
|
-
### Phase
|
|
19
|
-
|
|
18
|
+
### Phase 1 — LLM upgrade via MCP Sampling
|
|
19
|
+
When a tool is called with `llm_backed` and your client supports MCP Sampling (`server.createMessage`), the agent upgrades to real LLM reasoning for a richer plan or analysis. The call runs on your existing subscription — no separate billing.
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
### Phase 2 — Agentic fallback
|
|
22
|
+
If Sampling is unavailable, Veto returns an `llm_upgrade` prompt instead. The host AI reads the specialist's role, reasons itself, and passes the JSON back to complete the operation.
|
|
23
|
+
|
|
24
|
+
The 7-agent **Council** is LLM-first — its value is the multi-agent debate — but it too falls back to a deterministic verdict when Sampling is unavailable. When multiple agents run, they execute in parallel.
|
|
22
25
|
|
|
23
26
|
---
|
|
24
27
|
|
|
25
28
|
## Specialist Roles
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
| **Advanced** | Local LLM (Ollama) · Semantic Search · SDD Agent · Playwright · i18n Translate · a11y Advisor |
|
|
32
|
-
| **Intelligence** | Task Planner · Researcher · Tech Advisor · Risk Assessor · Cost Analyzer · Ethics/Bias |
|
|
33
|
-
| **Workflow** | File Manager · Git Agent · Search Agent · Reporter · Automation |
|
|
30
|
+
**49 specialists: 42 deterministic worker agents across 6 domains + a 7-agent Council.** The Council debates trade-offs before you build; the worker agents do the hands-on analysis and planning. Each is a deterministic expert module that can upgrade to LLM reasoning — see [How the Agents Work](#how-the-agents-work). List them anytime with `veto agents`.
|
|
31
|
+
|
|
32
|
+
**Council (7)**
|
|
33
|
+
`Lead Dev` · `PM` · `Architect` · `UX` · `Devil's Advocate` · `Legal` · `Security`
|
|
34
34
|
|
|
35
35
|
**Development (12)**
|
|
36
36
|
`Coder` · `Code Reviewer` · `Tester` · `Debugger` · `Refactor` · `Database` · `API` · `Frontend` · `Backend` · `DevOps` · `Performance` · `Migration`
|
|
@@ -61,16 +61,17 @@ Every worker agent supports both modes. When multiple agents run, they execute i
|
|
|
61
61
|
| **Council** | `veto_council_debate` · `veto_benchmark` · `veto_adr` |
|
|
62
62
|
| **Agents** | `veto_agent_plan` · `veto_execute_parallel` · `veto_explain` · `veto_compose_agents` · `veto_delegate` |
|
|
63
63
|
| **Review** | `veto_code_review` · `veto_security_scan` · `veto_secrets_scan` · `veto_diff_review` · `veto_full_review` · `veto_pr_review` |
|
|
64
|
-
| **Pipelines** | `veto_pre_commit` · `veto_new_feature` · `veto_workflow` · `veto_task_parse` |
|
|
64
|
+
| **Pipelines** | `veto_ci_gate` · `veto_pre_commit` · `veto_new_feature` · `veto_workflow` · `veto_task_parse` |
|
|
65
65
|
| **Advanced** | `veto_local_llm` · `veto_semantic_search` · `veto_sdd_agent` · `veto_playwright` · `veto_notify_ide` |
|
|
66
66
|
| **Quality** | `veto_clone_detector` · `veto_lint_rules` · `veto_api_contract` · `veto_a11y_advisor` · `veto_type_coverage` · `veto_test_gaps` |
|
|
67
|
+
| **Advisors** | `veto_dep_advisor` · `veto_query_advisor` · `veto_bundle_advisor` · `veto_dead_code` · `veto_hitl_checkpoint` |
|
|
67
68
|
| **Watching** | `veto_watch` · `veto_watch_poll` · `veto_watch_stop` |
|
|
68
69
|
| **Memory** | `veto_memory_store` · `veto_memory_search` · `veto_memory_delete` · `veto_project_map_update` · `veto_project_map_get` · `veto_pattern_store` · `veto_patterns_list` · `veto_memory_export` · `veto_memory_import` |
|
|
69
70
|
| **Learning** | `veto_record_outcome` · `veto_learning_stats` · `veto_learning_apply` |
|
|
70
71
|
| **Handoff** | `veto_handoff` · `veto_continue` · `veto_platform_setup` |
|
|
71
72
|
| **Observability** | `veto_usage_status` · `veto_audit_log` · `veto_health` · `veto_metrics` |
|
|
72
73
|
| **Discover** | `veto_discover` · `veto_summarize` · `veto_git_blame` · `veto_changelog` · `veto_onboard` · `veto_debt_register` |
|
|
73
|
-
| **DevTools** | `veto_docs_fetch` · `veto_context_status` · `veto_openapi_gen` · `veto_flag_auditor` · `veto_env_setup` · `veto_commit_message` · `veto_pr_description` · `veto_pr_post` · `veto_prompt_optimizer` · `veto_sre_advisor` · `veto_diagram` · `veto_rca` · `veto_translate` · `veto_merge_conflict` |
|
|
74
|
+
| **DevTools** | `veto_docs_fetch` · `veto_context_status` · `veto_openapi_gen` · `veto_flag_auditor` · `veto_env_setup` · `veto_commit_message` · `veto_pr_description` · `veto_pr_post` · `veto_prompt_optimizer` · `veto_sre_advisor` · `veto_diagram` · `veto_rca` · `veto_doc_gen` · `veto_postmortem` · `veto_release_notes` · `veto_translate` · `veto_merge_conflict` |
|
|
74
75
|
| **Plugins** | `veto_plugins` |
|
|
75
76
|
|
|
76
77
|
## Which tool do I use?
|
|
@@ -144,6 +145,9 @@ veto sessions # List last 20 saved sessions ([auto] badge on
|
|
|
144
145
|
veto sessions --clean # Remove auto-saves older than 7 days
|
|
145
146
|
veto memory [query] # Search knowledge base (blank = all entries)
|
|
146
147
|
veto patterns [prefix] # List learned agent/routing patterns
|
|
148
|
+
veto tools [filter] # List all 89 MCP tools (--json for machine output)
|
|
149
|
+
veto agents [filter] # List all 49 specialists — workers + council (--json)
|
|
150
|
+
veto routing [status|log|reset] # Inspect the opt-in routing feedback loop
|
|
147
151
|
veto hook install # Install pre-commit secrets scan hook
|
|
148
152
|
veto hook remove # Remove the veto pre-commit hook
|
|
149
153
|
veto check # Scan staged changes for secrets (used by hook)
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jigyasudham/veto",
|
|
3
|
-
"
|
|
3
|
+
"mcpName": "io.github.jigyasudham/veto",
|
|
4
|
+
"version": "2.1.2",
|
|
4
5
|
"description": "89 agentic tools. 49 specialists. Every major AI CLI. Self-learning. Zero extra cost on subscriptions.",
|
|
5
6
|
"keywords": [
|
|
6
7
|
"mcp",
|
package/server.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
+
"name": "io.github.jigyasudham/veto",
|
|
4
|
+
"title": "Veto",
|
|
5
|
+
"description": "89 agentic MCP tools, 49 specialist agents for every major AI CLI. Self-learning, zero API cost.",
|
|
6
|
+
"repository": {
|
|
7
|
+
"url": "https://github.com/jigyasudham/veto",
|
|
8
|
+
"source": "github"
|
|
9
|
+
},
|
|
10
|
+
"websiteUrl": "https://github.com/jigyasudham/veto#readme",
|
|
11
|
+
"version": "2.1.2",
|
|
12
|
+
"packages": [
|
|
13
|
+
{
|
|
14
|
+
"registryType": "npm",
|
|
15
|
+
"registryBaseUrl": "https://registry.npmjs.org",
|
|
16
|
+
"identifier": "@jigyasudham/veto",
|
|
17
|
+
"version": "2.1.2",
|
|
18
|
+
"transport": {
|
|
19
|
+
"type": "stdio"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|