@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.
@@ -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 tool uses a 2-phase agentic loopno API keys required, zero extra cost.**
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
- ### Phase 1 MCP Sampling
16
- The tool attempts real LLM reasoning via MCP Sampling (`server.createMessage`). If your client supports it, the agent reasons deeply and returns a structured plan or analysis.
15
+ ### DefaultDeterministic 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 2Agentic Fallback
19
- If Sampling is unavailable, Veto returns an `llm_upgrade` prompt. The host AI reads the specialist's role, performs the reasoning itself, and passes the JSON response back to complete the operation.
18
+ ### Phase 1LLM 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
- Every worker agent supports both modes. When multiple agents run, they execute in parallel. LLM calls delegate back to the AI you're already using no extra billing.
21
+ ### Phase 2Agentic 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
- | Agent Group | Specialist Roles |
28
- |---|---|
29
- | **Council** | Lead Dev · PM · Architect · UX · Devil's Advocate · Legal · Security |
30
- | **Development** | Coder · Reviewer · Tester · Debugger · Refactor · Database · API · Frontend · Backend · DevOps · Performance · Migration |
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
- "version": "2.1.1",
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
+ }