@getvetai/cli 0.3.0 → 0.4.1

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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
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) — 20,000+ AI tools cataloged and scored
5
+ 🌐 **Registry:** [getvet.ai](https://getvet.ai) — 23,000+ AI tools verified and scored
6
6
 
7
7
  ## Install
8
8
 
@@ -16,12 +16,6 @@ Or run without installing:
16
16
  npx @getvetai/cli scan .
17
17
  ```
18
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
24
-
25
19
  ## Commands
26
20
 
27
21
  ### `vet scan <target>`
@@ -99,20 +93,41 @@ vet install @modelcontextprotocol/server-github
99
93
  vet install -g some-mcp-server
100
94
  ```
101
95
 
102
- ## Trust Scores
96
+ ## Verification Levels
103
97
 
104
- | Score | Badge | Meaning |
98
+ | Level | Badge | Meaning |
105
99
  |-------|-------|---------|
106
- | 75+ | ✅ Certified | No critical issues, good practices |
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 |
100
+ | L2 | ✅ Verified | Installs, boots, tools discovered and tested |
101
+ | L1 | 🔍 Boots | Installs and boots successfully |
102
+ | L0 | ⚠️ Indexed | Cataloged, not yet verified |
110
103
 
111
104
  ## What It Detects
112
105
 
113
106
  - **Permissions:** shell execution, file I/O, network access, browser control, database queries, crypto operations
114
107
  - **Security issues:** destructive commands, remote code execution, dynamic eval, credential patterns, elevated privileges
115
108
  - **MCP-specific:** tool parameter analysis, transport detection (stdio/http/sse), runtime detection
109
+ - **Requirements:** environment variables, API keys, Docker dependencies
110
+
111
+ ## API Access
112
+
113
+ Access verified tool schemas programmatically. Create a free API key at [getvet.ai/dashboard](https://getvet.ai/dashboard) → API Keys.
114
+
115
+ ```bash
116
+ # Fetch tool schemas
117
+ curl -H "x-api-key: vet_sk_YOUR_KEY" https://getvet.ai/api/v1/tools/TOOL_SLUG/schemas
118
+
119
+ # Or use Bearer token
120
+ curl -H "Authorization: Bearer vet_sk_YOUR_KEY" https://getvet.ai/api/v1/tools/TOOL_SLUG/schemas
121
+
122
+ # Bulk fetch (multiple tools at once)
123
+ curl -X POST \
124
+ -H "x-api-key: vet_sk_YOUR_KEY" \
125
+ -H "Content-Type: application/json" \
126
+ -d '{"slugs":["tool-1","tool-2"]}' \
127
+ https://getvet.ai/api/v1/tools/schemas/bulk
128
+ ```
129
+
130
+ See [getvet.ai/get-started](https://getvet.ai/get-started) for full documentation.
116
131
 
117
132
  ## Links
118
133
 
package/dist/index.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getvetai/cli",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
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,6 +12,11 @@
12
12
  "README.md",
13
13
  "LICENSE"
14
14
  ],
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/getvetai/cli.git"
18
+ },
19
+ "bugs": "https://github.com/getvetai/cli/issues",
15
20
  "homepage": "https://getvet.ai",
16
21
  "keywords": [
17
22
  "ai",
@@ -1,6 +0,0 @@
1
- export interface FetchedContent {
2
- content: string;
3
- type: 'skill' | 'mcp' | 'unknown';
4
- name: string;
5
- }
6
- export declare function fetchTarget(target: string): Promise<FetchedContent>;
@@ -1,38 +0,0 @@
1
- import { readFileSync, existsSync } from 'fs';
2
- function detect(content, source) {
3
- if (/SKILL\.md/i.test(source) || /^#\s+.*skill/im.test(content))
4
- return 'skill';
5
- if (/mcp|model.context.protocol/i.test(content))
6
- return 'mcp';
7
- if (/^#\s+/m.test(content))
8
- return 'skill';
9
- return 'unknown';
10
- }
11
- export async function fetchTarget(target) {
12
- if (existsSync(target)) {
13
- const c = readFileSync(target, 'utf-8');
14
- return { content: c, type: detect(c, target), name: target.split('/').pop() || target };
15
- }
16
- if (/^https?:\/\//i.test(target)) {
17
- const r = await fetch(target);
18
- if (!r.ok)
19
- throw new Error('HTTP ' + r.status);
20
- const c = await r.text();
21
- return { content: c, type: detect(c, target), name: target.split('/').pop()?.replace(/\?.*$/, '') || target };
22
- }
23
- if (/^[\w-]+\/[\w.-]+$/.test(target) && !target.startsWith('@')) {
24
- const r = await fetch('https://raw.githubusercontent.com/' + target + '/main/README.md');
25
- if (r.ok)
26
- return { content: await r.text(), type: 'mcp', name: target.split('/')[1] };
27
- throw new Error('GitHub fetch failed: ' + target);
28
- }
29
- if (/^@?[\w-]/.test(target)) {
30
- const r = await fetch('https://registry.npmjs.org/' + encodeURIComponent(target));
31
- if (r.ok) {
32
- const d = await r.json();
33
- return { content: d.readme || '', type: 'mcp', name: d.name || target };
34
- }
35
- throw new Error('npm not found: ' + target);
36
- }
37
- throw new Error('Unknown target: ' + target);
38
- }