@dotsetlabs/bellwether 1.0.2 → 1.0.3
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/CHANGELOG.md +23 -0
- package/README.md +3 -2
- package/dist/cache/response-cache.d.ts +4 -2
- package/dist/cache/response-cache.js +68 -30
- package/dist/cli/commands/check.js +78 -49
- package/dist/cli/index.js +5 -3
- package/dist/interview/interviewer.js +70 -50
- package/dist/interview/orchestrator.js +49 -22
- package/dist/llm/anthropic.js +49 -16
- package/dist/llm/client.d.ts +2 -0
- package/dist/llm/client.js +61 -0
- package/dist/llm/ollama.js +9 -4
- package/dist/llm/openai.js +34 -23
- package/dist/transport/base-transport.d.ts +1 -1
- package/dist/transport/http-transport.d.ts +2 -2
- package/dist/transport/http-transport.js +26 -6
- package/dist/transport/mcp-client.d.ts +18 -6
- package/dist/transport/mcp-client.js +49 -19
- package/dist/transport/sse-transport.d.ts +1 -1
- package/dist/transport/sse-transport.js +4 -2
- package/dist/transport/stdio-transport.d.ts +1 -1
- package/dist/transport/stdio-transport.js +1 -1
- package/dist/utils/timeout.d.ts +10 -2
- package/dist/utils/timeout.js +9 -5
- package/dist/version.js +1 -1
- package/dist/workflow/executor.js +18 -13
- package/dist/workflow/loader.js +4 -1
- package/dist/workflow/state-tracker.js +22 -18
- package/man/bellwether.1 +204 -0
- package/man/bellwether.1.md +148 -0
- package/package.json +6 -7
package/man/bellwether.1
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
.TH "BELLWETHER" "1" "2026\-02\-02" "Bellwether 1.0.3" "User Commands"
|
|
2
|
+
.SH NAME
|
|
3
|
+
.PP
|
|
4
|
+
bellwether \[em] MCP server testing and validation tool
|
|
5
|
+
.SH SYNOPSIS
|
|
6
|
+
.PP
|
|
7
|
+
\f[B]bellwether\f[] [OPTIONS] COMMAND [ARGS...]
|
|
8
|
+
.PP
|
|
9
|
+
\f[B]bellwether\f[] \f[B]\-\-version\f[]
|
|
10
|
+
.PP
|
|
11
|
+
\f[B]bellwether\f[] \f[B]\-\-help\f[]
|
|
12
|
+
.SH DESCRIPTION
|
|
13
|
+
.PP
|
|
14
|
+
Bellwether is an open\-source MCP (Model Context Protocol) testing tool
|
|
15
|
+
that provides structural drift detection and behavioral documentation
|
|
16
|
+
for MCP servers.
|
|
17
|
+
.SH COMMANDS
|
|
18
|
+
.TP
|
|
19
|
+
.B \f[B]check\f[] [\f[I]options\f[]] [server\-command]
|
|
20
|
+
Schema validation and drift detection (free, fast, deterministic)
|
|
21
|
+
.RS
|
|
22
|
+
.RE
|
|
23
|
+
.TP
|
|
24
|
+
.B \f[B]explore\f[] [\f[I]options\f[]] [server\-command]
|
|
25
|
+
LLM\-powered behavioral exploration and documentation
|
|
26
|
+
.RS
|
|
27
|
+
.RE
|
|
28
|
+
.TP
|
|
29
|
+
.B \f[B]discover\f[] [\f[I]options\f[]] [server\-command]
|
|
30
|
+
Discover MCP server capabilities (tools, prompts, resources)
|
|
31
|
+
.RS
|
|
32
|
+
.RE
|
|
33
|
+
.TP
|
|
34
|
+
.B \f[B]watch\f[] [\f[I]options\f[]]
|
|
35
|
+
Watch for MCP server changes and auto\-check
|
|
36
|
+
.RS
|
|
37
|
+
.RE
|
|
38
|
+
.TP
|
|
39
|
+
.B \f[B]init\f[] [\f[I]options\f[]] [server\-command]
|
|
40
|
+
Initialize a bellwether.yaml configuration file
|
|
41
|
+
.RS
|
|
42
|
+
.RE
|
|
43
|
+
.TP
|
|
44
|
+
.B \f[B]auth\f[] \f[I]subcommand\f[] [\f[I]options\f[]]
|
|
45
|
+
Manage LLM provider API keys
|
|
46
|
+
.RS
|
|
47
|
+
.RE
|
|
48
|
+
.TP
|
|
49
|
+
.B \f[B]baseline\f[] \f[I]subcommand\f[] [\f[I]options\f[]]
|
|
50
|
+
Manage baselines for drift detection
|
|
51
|
+
.RS
|
|
52
|
+
.RE
|
|
53
|
+
.TP
|
|
54
|
+
.B \f[B]golden\f[] \f[I]subcommand\f[] [\f[I]options\f[]]
|
|
55
|
+
Manage golden outputs for validation
|
|
56
|
+
.RS
|
|
57
|
+
.RE
|
|
58
|
+
.TP
|
|
59
|
+
.B \f[B]registry\f[] [\f[I]options\f[]] \f[I]search\f[]
|
|
60
|
+
Search the MCP Registry for servers
|
|
61
|
+
.RS
|
|
62
|
+
.RE
|
|
63
|
+
.TP
|
|
64
|
+
.B \f[B]contract\f[] \f[I]subcommand\f[] [\f[I]options\f[]]
|
|
65
|
+
Validate MCP servers against contracts
|
|
66
|
+
.RS
|
|
67
|
+
.RE
|
|
68
|
+
.TP
|
|
69
|
+
.B \f[B]validate\-config\f[] [\f[I]options\f[]]
|
|
70
|
+
Validate bellwether.yaml configuration
|
|
71
|
+
.RS
|
|
72
|
+
.RE
|
|
73
|
+
.SH GLOBAL OPTIONS
|
|
74
|
+
.TP
|
|
75
|
+
.B \f[B]\-h\f[], \f[B]\-\-help\f[]
|
|
76
|
+
Show help message and exit
|
|
77
|
+
.RS
|
|
78
|
+
.RE
|
|
79
|
+
.TP
|
|
80
|
+
.B \f[B]\-\-version\f[]
|
|
81
|
+
Show version information and exit
|
|
82
|
+
.RS
|
|
83
|
+
.RE
|
|
84
|
+
.TP
|
|
85
|
+
.B \f[B]\-\-log\-level\f[] \f[I]LEVEL\f[]
|
|
86
|
+
Set log level: debug, info, warn, error, silent
|
|
87
|
+
.RS
|
|
88
|
+
.RE
|
|
89
|
+
.TP
|
|
90
|
+
.B \f[B]\-\-log\-file\f[] \f[I]PATH\f[]
|
|
91
|
+
Write logs to file instead of stderr
|
|
92
|
+
.RS
|
|
93
|
+
.RE
|
|
94
|
+
.SH EXAMPLES
|
|
95
|
+
.PP
|
|
96
|
+
Initialize configuration:
|
|
97
|
+
.IP
|
|
98
|
+
.nf
|
|
99
|
+
\f[C]
|
|
100
|
+
bellwether\ init\ npx\ \@modelcontextprotocol/server\-filesystem
|
|
101
|
+
\f[]
|
|
102
|
+
.fi
|
|
103
|
+
.PP
|
|
104
|
+
Run drift detection:
|
|
105
|
+
.IP
|
|
106
|
+
.nf
|
|
107
|
+
\f[C]
|
|
108
|
+
bellwether\ check
|
|
109
|
+
\f[]
|
|
110
|
+
.fi
|
|
111
|
+
.PP
|
|
112
|
+
Save baseline:
|
|
113
|
+
.IP
|
|
114
|
+
.nf
|
|
115
|
+
\f[C]
|
|
116
|
+
bellwether\ baseline\ save
|
|
117
|
+
\f[]
|
|
118
|
+
.fi
|
|
119
|
+
.PP
|
|
120
|
+
Explore with LLM:
|
|
121
|
+
.IP
|
|
122
|
+
.nf
|
|
123
|
+
\f[C]
|
|
124
|
+
bellwether\ explore
|
|
125
|
+
\f[]
|
|
126
|
+
.fi
|
|
127
|
+
.SH FILES
|
|
128
|
+
.TP
|
|
129
|
+
.B \f[I]bellwether.yaml\f[]
|
|
130
|
+
Configuration file for the project
|
|
131
|
+
.RS
|
|
132
|
+
.RE
|
|
133
|
+
.TP
|
|
134
|
+
.B \f[I]bellwether\-baseline.json\f[]
|
|
135
|
+
Saved baseline for drift detection
|
|
136
|
+
.RS
|
|
137
|
+
.RE
|
|
138
|
+
.TP
|
|
139
|
+
.B \f[I]CONTRACT.md\f[]
|
|
140
|
+
Generated contract documentation
|
|
141
|
+
.RS
|
|
142
|
+
.RE
|
|
143
|
+
.TP
|
|
144
|
+
.B \f[I]AGENTS.md\f[]
|
|
145
|
+
Generated behavioral documentation
|
|
146
|
+
.RS
|
|
147
|
+
.RE
|
|
148
|
+
.SH ENVIRONMENT
|
|
149
|
+
.TP
|
|
150
|
+
.B \f[I]OPENAI_API_KEY\f[]
|
|
151
|
+
API key for OpenAI (explore mode only)
|
|
152
|
+
.RS
|
|
153
|
+
.RE
|
|
154
|
+
.TP
|
|
155
|
+
.B \f[I]ANTHROPIC_API_KEY\f[]
|
|
156
|
+
API key for Anthropic (explore mode only)
|
|
157
|
+
.RS
|
|
158
|
+
.RE
|
|
159
|
+
.TP
|
|
160
|
+
.B \f[I]OLLAMA_BASE_URL\f[]
|
|
161
|
+
Ollama URL (default: http://localhost:11434)
|
|
162
|
+
.RS
|
|
163
|
+
.RE
|
|
164
|
+
.SH EXIT STATUS
|
|
165
|
+
.TP
|
|
166
|
+
.B \f[B]0\f[]
|
|
167
|
+
Success, no changes detected
|
|
168
|
+
.RS
|
|
169
|
+
.RE
|
|
170
|
+
.TP
|
|
171
|
+
.B \f[B]1\f[]
|
|
172
|
+
Info\-level changes only
|
|
173
|
+
.RS
|
|
174
|
+
.RE
|
|
175
|
+
.TP
|
|
176
|
+
.B \f[B]2\f[]
|
|
177
|
+
Warning\-level changes
|
|
178
|
+
.RS
|
|
179
|
+
.RE
|
|
180
|
+
.TP
|
|
181
|
+
.B \f[B]3\f[]
|
|
182
|
+
Breaking changes detected
|
|
183
|
+
.RS
|
|
184
|
+
.RE
|
|
185
|
+
.TP
|
|
186
|
+
.B \f[B]4\f[]
|
|
187
|
+
Runtime error
|
|
188
|
+
.RS
|
|
189
|
+
.RE
|
|
190
|
+
.TP
|
|
191
|
+
.B \f[B]5\f[]
|
|
192
|
+
Low confidence metrics
|
|
193
|
+
.RS
|
|
194
|
+
.RE
|
|
195
|
+
.SH SEE ALSO
|
|
196
|
+
.PP
|
|
197
|
+
Project homepage: <https://github.com/dotsetlabs/bellwether>
|
|
198
|
+
.PP
|
|
199
|
+
Documentation: <https://docs.bellwether.sh>
|
|
200
|
+
.PP
|
|
201
|
+
MCP Specification: <https://modelcontextprotocol.io>
|
|
202
|
+
.SH AUTHORS
|
|
203
|
+
.PP
|
|
204
|
+
Dotset Labs LLC <hello@dotsetlabs.com>
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: BELLWETHER
|
|
3
|
+
section: 1
|
|
4
|
+
header: User Commands
|
|
5
|
+
footer: Bellwether 1.0.3
|
|
6
|
+
date: 2026-02-02
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# NAME
|
|
10
|
+
|
|
11
|
+
bellwether — MCP server testing and validation tool
|
|
12
|
+
|
|
13
|
+
# SYNOPSIS
|
|
14
|
+
|
|
15
|
+
**bellwether** [OPTIONS] COMMAND [ARGS...]
|
|
16
|
+
|
|
17
|
+
**bellwether** **--version**
|
|
18
|
+
|
|
19
|
+
**bellwether** **--help**
|
|
20
|
+
|
|
21
|
+
# DESCRIPTION
|
|
22
|
+
|
|
23
|
+
Bellwether is an open-source MCP (Model Context Protocol) testing tool that provides
|
|
24
|
+
structural drift detection and behavioral documentation for MCP servers.
|
|
25
|
+
|
|
26
|
+
# COMMANDS
|
|
27
|
+
|
|
28
|
+
**check** [*options*] [server-command]
|
|
29
|
+
: Schema validation and drift detection (free, fast, deterministic)
|
|
30
|
+
|
|
31
|
+
**explore** [*options*] [server-command]
|
|
32
|
+
: LLM-powered behavioral exploration and documentation
|
|
33
|
+
|
|
34
|
+
**discover** [*options*] [server-command]
|
|
35
|
+
: Discover MCP server capabilities (tools, prompts, resources)
|
|
36
|
+
|
|
37
|
+
**watch** [*options*]
|
|
38
|
+
: Watch for MCP server changes and auto-check
|
|
39
|
+
|
|
40
|
+
**init** [*options*] [server-command]
|
|
41
|
+
: Initialize a bellwether.yaml configuration file
|
|
42
|
+
|
|
43
|
+
**auth** *subcommand* [*options*]
|
|
44
|
+
: Manage LLM provider API keys
|
|
45
|
+
|
|
46
|
+
**baseline** *subcommand* [*options*]
|
|
47
|
+
: Manage baselines for drift detection
|
|
48
|
+
|
|
49
|
+
**golden** *subcommand* [*options*]
|
|
50
|
+
: Manage golden outputs for validation
|
|
51
|
+
|
|
52
|
+
**registry** [*options*] *search*
|
|
53
|
+
: Search the MCP Registry for servers
|
|
54
|
+
|
|
55
|
+
**contract** *subcommand* [*options*]
|
|
56
|
+
: Validate MCP servers against contracts
|
|
57
|
+
|
|
58
|
+
**validate-config** [*options*]
|
|
59
|
+
: Validate bellwether.yaml configuration
|
|
60
|
+
|
|
61
|
+
# GLOBAL OPTIONS
|
|
62
|
+
|
|
63
|
+
**-h**, **--help**
|
|
64
|
+
: Show help message and exit
|
|
65
|
+
|
|
66
|
+
**--version**
|
|
67
|
+
: Show version information and exit
|
|
68
|
+
|
|
69
|
+
**--log-level** *LEVEL*
|
|
70
|
+
: Set log level: debug, info, warn, error, silent
|
|
71
|
+
|
|
72
|
+
**--log-file** *PATH*
|
|
73
|
+
: Write logs to file instead of stderr
|
|
74
|
+
|
|
75
|
+
# EXAMPLES
|
|
76
|
+
|
|
77
|
+
Initialize configuration:
|
|
78
|
+
|
|
79
|
+
bellwether init npx @modelcontextprotocol/server-filesystem
|
|
80
|
+
|
|
81
|
+
Run drift detection:
|
|
82
|
+
|
|
83
|
+
bellwether check
|
|
84
|
+
|
|
85
|
+
Save baseline:
|
|
86
|
+
|
|
87
|
+
bellwether baseline save
|
|
88
|
+
|
|
89
|
+
Explore with LLM:
|
|
90
|
+
|
|
91
|
+
bellwether explore
|
|
92
|
+
|
|
93
|
+
# FILES
|
|
94
|
+
|
|
95
|
+
*bellwether.yaml*
|
|
96
|
+
: Configuration file for the project
|
|
97
|
+
|
|
98
|
+
*bellwether-baseline.json*
|
|
99
|
+
: Saved baseline for drift detection
|
|
100
|
+
|
|
101
|
+
*CONTRACT.md*
|
|
102
|
+
: Generated contract documentation
|
|
103
|
+
|
|
104
|
+
*AGENTS.md*
|
|
105
|
+
: Generated behavioral documentation
|
|
106
|
+
|
|
107
|
+
# ENVIRONMENT
|
|
108
|
+
|
|
109
|
+
*OPENAI_API_KEY*
|
|
110
|
+
: API key for OpenAI (explore mode only)
|
|
111
|
+
|
|
112
|
+
*ANTHROPIC_API_KEY*
|
|
113
|
+
: API key for Anthropic (explore mode only)
|
|
114
|
+
|
|
115
|
+
*OLLAMA_BASE_URL*
|
|
116
|
+
: Ollama URL (default: http://localhost:11434)
|
|
117
|
+
|
|
118
|
+
# EXIT STATUS
|
|
119
|
+
|
|
120
|
+
**0**
|
|
121
|
+
: Success, no changes detected
|
|
122
|
+
|
|
123
|
+
**1**
|
|
124
|
+
: Info-level changes only
|
|
125
|
+
|
|
126
|
+
**2**
|
|
127
|
+
: Warning-level changes
|
|
128
|
+
|
|
129
|
+
**3**
|
|
130
|
+
: Breaking changes detected
|
|
131
|
+
|
|
132
|
+
**4**
|
|
133
|
+
: Runtime error
|
|
134
|
+
|
|
135
|
+
**5**
|
|
136
|
+
: Low confidence metrics
|
|
137
|
+
|
|
138
|
+
# SEE ALSO
|
|
139
|
+
|
|
140
|
+
Project homepage: <https://github.com/dotsetlabs/bellwether>
|
|
141
|
+
|
|
142
|
+
Documentation: <https://docs.bellwether.sh>
|
|
143
|
+
|
|
144
|
+
MCP Specification: <https://modelcontextprotocol.io>
|
|
145
|
+
|
|
146
|
+
# AUTHORS
|
|
147
|
+
|
|
148
|
+
Dotset Labs LLC <hello@dotsetlabs.com>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotsetlabs/bellwether",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "The open-source MCP testing tool. Structural drift detection and behavioral documentation for Model Context Protocol servers.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -33,10 +33,11 @@
|
|
|
33
33
|
"format": "prettier --write \"src/**/*.ts\"",
|
|
34
34
|
"format:check": "prettier --check \"src/**/*.ts\"",
|
|
35
35
|
"clean": "rm -rf dist",
|
|
36
|
-
"docs:generate": "
|
|
36
|
+
"docs:generate": "npm --prefix website run build",
|
|
37
|
+
"docs:dev": "npm --prefix website run start",
|
|
37
38
|
"man:generate": "./scripts/generate-manpage.sh",
|
|
38
39
|
"prepare": "husky install || true",
|
|
39
|
-
"prepublishOnly": "npm run build"
|
|
40
|
+
"prepublishOnly": "npm run build && npm run man:generate"
|
|
40
41
|
},
|
|
41
42
|
"keywords": [
|
|
42
43
|
"mcp",
|
|
@@ -59,8 +60,7 @@
|
|
|
59
60
|
"license": "MIT",
|
|
60
61
|
"repository": {
|
|
61
62
|
"type": "git",
|
|
62
|
-
"url": "https://github.com/dotsetlabs/bellwether"
|
|
63
|
-
"directory": "cli"
|
|
63
|
+
"url": "https://github.com/dotsetlabs/bellwether"
|
|
64
64
|
},
|
|
65
65
|
"funding": {
|
|
66
66
|
"type": "github",
|
|
@@ -97,10 +97,9 @@
|
|
|
97
97
|
"@typescript-eslint/parser": "^6.21.0",
|
|
98
98
|
"eslint": "^8.57.1",
|
|
99
99
|
"husky": "^9.1.0",
|
|
100
|
-
"lint-staged": "^
|
|
100
|
+
"lint-staged": "^16.2.7",
|
|
101
101
|
"prettier": "^3.3.0",
|
|
102
102
|
"tsx": "^4.21.0",
|
|
103
|
-
"typedoc": "^0.28.16",
|
|
104
103
|
"typescript": "^5.3.0",
|
|
105
104
|
"vitest": "^4.0.17"
|
|
106
105
|
},
|