@getvetai/cli 0.2.0 โ 0.3.0
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/README.md +41 -44
- package/dist/commands/find.d.ts +2 -0
- package/dist/commands/find.js +1 -1
- package/dist/index.js +2 -0
- package/dist/utils/api.d.ts +4 -1
- package/dist/utils/api.js +9 -5
- package/package.json +1 -7
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# @getvetai/cli
|
|
2
2
|
|
|
3
|
-
Security audit CLI for AI skills and MCP servers. Scan, audit, and
|
|
3
|
+
Security audit CLI for AI skills and MCP servers. Scan, audit, and discover tools before you install them.
|
|
4
4
|
|
|
5
|
-
๐ **Registry:** [getvet.ai](https://getvet.ai) โ
|
|
5
|
+
๐ **Registry:** [getvet.ai](https://getvet.ai) โ 20,000+ AI tools cataloged and scored
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
@@ -10,58 +10,49 @@ Security audit CLI for AI skills and MCP servers. Scan, audit, and score tools b
|
|
|
10
10
|
npm install -g @getvetai/cli
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Or run without installing:
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
```bash
|
|
16
|
+
npx @getvetai/cli scan .
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## What's New in v0.3.0
|
|
20
|
+
|
|
21
|
+
- **`vet find --limit <n>`** โ control how many results to return (default: 10, max: 48)
|
|
22
|
+
- **`vet find --type <type>`** โ filter by `skill`, `mcp`, or `all`
|
|
23
|
+
- **20,000+ tools** in the registry (up from 12K) โ now indexing 10 sources including Smithery, mcp.so, MCP Registry, PyPI, npm, GitHub, and more
|
|
20
24
|
|
|
21
25
|
## Commands
|
|
22
26
|
|
|
23
27
|
### `vet scan <target>`
|
|
24
28
|
|
|
25
|
-
Scan a
|
|
26
|
-
|
|
27
|
-
For npm packages, the CLI first checks the getvet.ai registry for existing scan results. If a deep scan is available, it returns instantly without local analysis.
|
|
29
|
+
Scan a tool for security issues. Checks the [getvet.ai](https://getvet.ai) registry first for instant results.
|
|
28
30
|
|
|
29
31
|
```bash
|
|
30
32
|
# Scan an npm package (checks registry first)
|
|
31
33
|
vet scan @modelcontextprotocol/server-filesystem
|
|
32
34
|
|
|
33
|
-
#
|
|
35
|
+
# Local analysis only (skip registry)
|
|
34
36
|
vet scan @modelcontextprotocol/server-filesystem --offline
|
|
35
37
|
|
|
36
38
|
# Request a deep scan from registry
|
|
37
39
|
vet scan @modelcontextprotocol/server-filesystem --deep
|
|
38
40
|
|
|
39
|
-
# Scan a local
|
|
40
|
-
vet scan ./my-
|
|
41
|
+
# Scan a local project
|
|
42
|
+
vet scan ./my-mcp-server
|
|
41
43
|
|
|
42
44
|
# Scan a GitHub repo
|
|
43
45
|
vet scan https://github.com/modelcontextprotocol/servers
|
|
44
46
|
|
|
45
|
-
#
|
|
47
|
+
# JSON output
|
|
46
48
|
vet scan ./SKILL.md --json
|
|
47
49
|
```
|
|
48
50
|
|
|
49
|
-
**Output includes:** trust score, badge (certified/reviewed/unverified/flagged), detected permissions, security issues, risk factors, tools list, and registry link.
|
|
50
|
-
|
|
51
51
|
### `vet audit [path]`
|
|
52
52
|
|
|
53
|
-
Audit all AI tools in a project.
|
|
53
|
+
Audit all AI tools in a project. Auto-discovers MCP configurations from:
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
- Cursor (`.cursor/mcp.json`)
|
|
57
|
-
- Claude Desktop (`claude_desktop_config.json`)
|
|
58
|
-
- VS Code (`settings.json` โ `mcp.servers`)
|
|
59
|
-
- Windsurf (`mcp.json`)
|
|
60
|
-
- Cline (`mcp_settings.json`)
|
|
61
|
-
- Zed (`settings.json` โ `mcp`)
|
|
62
|
-
- Continue (`config.json` โ `mcpServers`)
|
|
63
|
-
- OpenClaw (`openclaw.json`)
|
|
64
|
-
- `SKILL.md` files
|
|
55
|
+
**Claude Desktop** ยท **Cursor** ยท **VS Code** ยท **Windsurf** ยท **Cline** ยท **Zed** ยท **Continue** ยท **OpenClaw**
|
|
65
56
|
|
|
66
57
|
```bash
|
|
67
58
|
# Audit current directory
|
|
@@ -70,7 +61,7 @@ vet audit
|
|
|
70
61
|
# Audit a specific project
|
|
71
62
|
vet audit ./my-project
|
|
72
63
|
|
|
73
|
-
# Strict mode โ exit
|
|
64
|
+
# Strict mode โ exit 1 if any tool is unverified/flagged
|
|
74
65
|
vet audit --strict
|
|
75
66
|
|
|
76
67
|
# JSON output
|
|
@@ -79,12 +70,18 @@ vet audit --json
|
|
|
79
70
|
|
|
80
71
|
### `vet find <query>`
|
|
81
72
|
|
|
82
|
-
Search the getvet.ai registry by description.
|
|
73
|
+
Search the getvet.ai registry for tools by description.
|
|
83
74
|
|
|
84
75
|
```bash
|
|
85
76
|
# Search for tools
|
|
86
|
-
vet find "
|
|
87
|
-
vet find "database
|
|
77
|
+
vet find "web scraping"
|
|
78
|
+
vet find "database access"
|
|
79
|
+
|
|
80
|
+
# Limit results
|
|
81
|
+
vet find "browser automation" --limit 20
|
|
82
|
+
|
|
83
|
+
# Filter by type
|
|
84
|
+
vet find "file management" --type mcp
|
|
88
85
|
|
|
89
86
|
# JSON output
|
|
90
87
|
vet find "weather" --json
|
|
@@ -92,17 +89,14 @@ vet find "weather" --json
|
|
|
92
89
|
|
|
93
90
|
### `vet install <package>`
|
|
94
91
|
|
|
95
|
-
Install a package with a pre-install security audit.
|
|
92
|
+
Install a package with a pre-install security audit.
|
|
96
93
|
|
|
97
94
|
```bash
|
|
98
|
-
# Audit + install
|
|
95
|
+
# Audit + install
|
|
99
96
|
vet install @modelcontextprotocol/server-github
|
|
100
97
|
|
|
101
98
|
# Install globally
|
|
102
99
|
vet install -g some-mcp-server
|
|
103
|
-
|
|
104
|
-
# Install as OpenClaw skill
|
|
105
|
-
vet install --skill weather
|
|
106
100
|
```
|
|
107
101
|
|
|
108
102
|
## Trust Scores
|
|
@@ -110,18 +104,21 @@ vet install --skill weather
|
|
|
110
104
|
| Score | Badge | Meaning |
|
|
111
105
|
|-------|-------|---------|
|
|
112
106
|
| 75+ | โ
Certified | No critical issues, good practices |
|
|
113
|
-
| 50
|
|
114
|
-
| 25
|
|
115
|
-
| 0
|
|
107
|
+
| 50โ74 | ๐ Reviewed | Some concerns, use with caution |
|
|
108
|
+
| 25โ49 | โ ๏ธ Unverified | Not yet reviewed or limited info |
|
|
109
|
+
| 0โ24 | ๐ซ Flagged | Critical security issues found |
|
|
116
110
|
|
|
117
111
|
## What It Detects
|
|
118
112
|
|
|
119
|
-
**Permissions:** shell execution, file
|
|
113
|
+
- **Permissions:** shell execution, file I/O, network access, browser control, database queries, crypto operations
|
|
114
|
+
- **Security issues:** destructive commands, remote code execution, dynamic eval, credential patterns, elevated privileges
|
|
115
|
+
- **MCP-specific:** tool parameter analysis, transport detection (stdio/http/sse), runtime detection
|
|
120
116
|
|
|
121
|
-
|
|
117
|
+
## Links
|
|
122
118
|
|
|
123
|
-
|
|
119
|
+
- ๐ [getvet.ai](https://getvet.ai) โ Browse the registry
|
|
120
|
+
- ๐ฆ [npm](https://www.npmjs.com/package/@getvetai/cli) โ Package page
|
|
124
121
|
|
|
125
122
|
## License
|
|
126
123
|
|
|
127
|
-
MIT
|
|
124
|
+
MIT
|
package/dist/commands/find.d.ts
CHANGED
package/dist/commands/find.js
CHANGED
|
@@ -4,7 +4,7 @@ import { displayFindResults } from '../utils/display.js';
|
|
|
4
4
|
export async function findCommand(query, options) {
|
|
5
5
|
const spinner = ora(`Searching "${query}"...`).start();
|
|
6
6
|
try {
|
|
7
|
-
const items = await searchTools(query);
|
|
7
|
+
const items = await searchTools(query, { limit: Number(options.limit) || 10, type: options.type });
|
|
8
8
|
const results = items.map((x) => ({
|
|
9
9
|
name: x.name,
|
|
10
10
|
slug: x.slug,
|
package/dist/index.js
CHANGED
|
@@ -30,6 +30,8 @@ program
|
|
|
30
30
|
.command('find')
|
|
31
31
|
.description('Search for tools by description')
|
|
32
32
|
.argument('<query>', 'Natural language search query')
|
|
33
|
+
.option('--limit <n>', 'Max results to return (default: 10, max: 48)', '10')
|
|
34
|
+
.option('--type <type>', 'Filter by type: skill, mcp, or all (default: all)')
|
|
33
35
|
.option('--json', 'Output JSON')
|
|
34
36
|
.action(findCommand);
|
|
35
37
|
program
|
package/dist/utils/api.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export declare function lookupTool(slug: string): Promise<any | null>;
|
|
2
|
-
export declare function searchTools(query: string
|
|
2
|
+
export declare function searchTools(query: string, options?: {
|
|
3
|
+
limit?: number;
|
|
4
|
+
type?: string;
|
|
5
|
+
}): Promise<any[]>;
|
|
3
6
|
export declare function requestDeepScan(slug: string): Promise<any | null>;
|
package/dist/utils/api.js
CHANGED
|
@@ -2,7 +2,7 @@ const API_BASE = 'https://getvet.ai';
|
|
|
2
2
|
export async function lookupTool(slug) {
|
|
3
3
|
try {
|
|
4
4
|
const resp = await fetch(`${API_BASE}/api/skills/${encodeURIComponent(slug)}`, {
|
|
5
|
-
headers: { 'User-Agent': 'vet-cli/0.
|
|
5
|
+
headers: { 'User-Agent': 'vet-cli/0.3.0' },
|
|
6
6
|
signal: AbortSignal.timeout(5000),
|
|
7
7
|
});
|
|
8
8
|
if (resp.ok)
|
|
@@ -13,10 +13,14 @@ export async function lookupTool(slug) {
|
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
export async function searchTools(query) {
|
|
16
|
+
export async function searchTools(query, options) {
|
|
17
17
|
try {
|
|
18
|
-
const
|
|
19
|
-
|
|
18
|
+
const limit = Math.min(Math.max(Number(options?.limit) || 10, 1), 48);
|
|
19
|
+
const params = new URLSearchParams({ q: query, limit: String(limit) });
|
|
20
|
+
if (options?.type && options.type !== 'all')
|
|
21
|
+
params.set('type', options.type);
|
|
22
|
+
const resp = await fetch(`${API_BASE}/api/skills/search?${params}`, {
|
|
23
|
+
headers: { 'User-Agent': 'vet-cli/0.3.0' },
|
|
20
24
|
signal: AbortSignal.timeout(5000),
|
|
21
25
|
});
|
|
22
26
|
if (resp.ok) {
|
|
@@ -33,7 +37,7 @@ export async function requestDeepScan(slug) {
|
|
|
33
37
|
try {
|
|
34
38
|
const resp = await fetch(`${API_BASE}/api/tools/${encodeURIComponent(slug)}/deep-scan`, {
|
|
35
39
|
method: 'POST',
|
|
36
|
-
headers: { 'User-Agent': 'vet-cli/0.
|
|
40
|
+
headers: { 'User-Agent': 'vet-cli/0.3.0', 'Content-Type': 'application/json' },
|
|
37
41
|
signal: AbortSignal.timeout(10000),
|
|
38
42
|
});
|
|
39
43
|
if (resp.ok)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getvetai/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Security audit CLI for AI skills and MCP servers โ scan, audit, and score tools before you install them",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -12,13 +12,7 @@
|
|
|
12
12
|
"README.md",
|
|
13
13
|
"LICENSE"
|
|
14
14
|
],
|
|
15
|
-
"repository": {
|
|
16
|
-
"type": "git",
|
|
17
|
-
"url": "https://github.com/getvetai/vet.git",
|
|
18
|
-
"directory": "cli"
|
|
19
|
-
},
|
|
20
15
|
"homepage": "https://getvet.ai",
|
|
21
|
-
"bugs": "https://github.com/getvetai/vet/issues",
|
|
22
16
|
"keywords": [
|
|
23
17
|
"ai",
|
|
24
18
|
"security",
|