@prowl-ai/prowl-skill 0.4.0 → 0.5.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/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.5.0 — 2026-08-15
4
+
5
+ Package `@prowl-ai/prowl-skill` 0.5.0 · plugins `prowl` 0.4.0, `prowl-cli` 0.2.0.
6
+
7
+ Both skills were audited against the running server rather than against each
8
+ other, and both were wrong in ways an agent acts on.
9
+
10
+ ### Fixed
11
+
12
+ - **`prowl_analyze` takes `execution_mode`, not `tier`.** The `prowl` skill said
13
+ `tier`, and had said it for two releases. An unknown key is ignored, so an
14
+ agent following the skill sent `tier: "deep"`, got a **basic** run, was billed
15
+ as basic, and reported back as if it had run deep. The tiers table now names
16
+ the real parameter, for `prowl_start_session` and `prowl_schedule_create` too.
17
+
18
+ - **The subscription gate was documented nowhere.** `deep` requires an Exploit+
19
+ subscription and `max` a Blackops+ one, and a key without it is **not
20
+ refused** — the run silently resolves to `basic` and bills as basic
21
+ (`mcp_server/models.effective_tier`). Both skills now state it where the tier
22
+ is chosen, and point at `prowl_get_wallet` / `prowl wallet` for checking
23
+ before the spend rather than inferring it from a thin report afterwards.
24
+
25
+ - **`prowl_list_tools` no longer returns names by default.** The verify step
26
+ promised "448 tools grouped by category"; the server returns category counts
27
+ and gives names only for `names=true` or a single `category`. The step now
28
+ describes what actually comes back.
29
+
30
+ ### Added
31
+
32
+ - **`prowl_get_wallet`** in the tool table, the billing section and the verify
33
+ steps. It is the only surface that can read a balance for a `prowl_` key:
34
+ `GET /api/v1/wallet` returns the same figures but decodes a JWT, and no REST
35
+ route on the server accepts an API key. The registered MCP tool count moves
36
+ 22 → 23 with it.
37
+
38
+ - **The `prowl-cli` skill was rewritten for the CLI it now documents.**
39
+ `@prowl-ai/cli` 0.2.0 covers all 21 logical MCP tools rather than six —
40
+ sessions, playbooks, schedules, artifacts, export, stats and the error feed —
41
+ so the command list, the long-run guidance (`session start --watch` for CI)
42
+ and the exit-code advice all changed. The old page documented `prowl wallet`
43
+ as working; it could not.
44
+
3
45
  ## v0.4.0 — 2026-08-13
4
46
 
5
47
  Package `@prowl-ai/prowl-skill` 0.4.0 · plugins `prowl` 0.3.0, `prowl-cli` 0.1.1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prowl-ai/prowl-skill",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "The Prowl plugin: install/usage skills, the hosted MCP config, and the live status widget that makes a running Prowl call, its progress and its cost visible in the terminal. This package is the installer CLI.",
5
5
  "keywords": [
6
6
  "prowl",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "prowl",
3
3
  "description": "Prowl market-intelligence skill backed by the hosted Prowl MCP server (448 tools), with a status widget that makes a running call, its progress and its cost visible in the terminal.",
4
- "version": "0.3.0",
4
+ "version": "0.4.0",
5
5
  "author": {
6
6
  "name": "Prowl",
7
7
  "email": "support@prowl.chat",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prowl",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Prowl market-intelligence skill backed by the hosted Prowl MCP server (448 tools), with a status widget that makes a running call, its progress and its cost visible in the terminal.",
5
5
  "author": {
6
6
  "name": "Prowl",
@@ -5,13 +5,15 @@ license: MIT
5
5
  compatibility: Requires network access to prowl.chat and a Prowl API token; the bundled MCP config runs `npx mcp-remote` (needs Node.js 18+).
6
6
  metadata:
7
7
  author: prowl.chat
8
- version: "0.3.0"
8
+ version: "0.4.0"
9
9
  ---
10
10
 
11
11
  # Prowl — market intelligence for your agent
12
12
 
13
13
  Prowl is a single MCP endpoint that exposes **448 market-intelligence API tools** across 15 providers (DataForSEO, SearchAPI, SerpApi, SpyFu, Majestic, Foreplay, Firecrawl, Exa, Perplexity, Gemini, …) plus the full Prowl pipeline — `prowl_analyze`, async research sessions, recurring schedules, artifacts and exports. Call real data instead of guessing.
14
14
 
15
+ Prefer the sibling `prowl-cli` skill when the work belongs in a shell script or a CI job; use this one when the agent should call Prowl as MCP tools inside its own tool loop.
16
+
15
17
  - MCP URL: `https://prowl.chat/mcp`
16
18
  - Transport: Streamable HTTP
17
19
  - Auth header: `Authorization: Bearer prowl_<your_key>`
@@ -30,39 +32,54 @@ For manual per-client setup (Cursor `.cursor/mcp.json`, Claude Code `claude mcp
30
32
 
31
33
  ## Core tools
32
34
 
33
- 22 MCP tools front the catalog. The ones that matter day to day:
35
+ 23 MCP tools front the catalog. The ones that matter day to day:
34
36
 
35
37
  | Tool | Purpose | Cost |
36
38
  |------|---------|------|
37
- | `prowl_list_tools` | Browse the 448 tools by category | free |
39
+ | `prowl_list_tools` | Category **counts**; pass `category` or `names=true` for names | free |
38
40
  | `prowl_search_tools` | Semantic search over the catalog | free |
39
41
  | `prowl_tool_info` | JSON input schema + estimated cost for one tool | free |
40
42
  | `prowl_call_tool` | Invoke any single tool | metered |
41
- | `prowl_analyze` | Full multi-agent research report in one shot | metered, tier-capped |
43
+ | `prowl_analyze` | Full multi-agent research report in one shot | metered, capped by `execution_mode` |
44
+ | `prowl_get_wallet` | Balance + which `execution_mode`s this key can run | free |
42
45
  | `prowl_list_playbooks` | The 8 fixed, persona-tuned report shapes | free |
43
- | `prowl_start_session` / `prowl_session_status` / `prowl_get_session` | Async deep research: kick off, poll, read back | metered |
44
- | `prowl_generate_artifact` / `prowl_export_report` | Visuals, infographics, audio; Markdown/PDF/PPTX export | metered |
46
+ | `prowl_start_session` / `prowl_session_status` / `prowl_get_session` / `prowl_list_sessions` | Async deep research: kick off, poll, read back | metered |
47
+ | `prowl_generate_artifact` / `prowl_export_report` | Infographic, PDF, PPTX, audio, video; Markdown/HTML export | metered |
45
48
  | `prowl_schedule_create` / `_list` / `_pause` / `_resume` / `_cancel` | Recurring hunts | metered per run |
46
49
  | `prowl_get_stats` / `prowl_get_error_feed` / `prowl_reset_session` | Run accounting, failures, state reset | free |
47
50
 
48
51
  MCP tool args are **flat**, not nested.
49
52
 
50
- Recommended flow: `prowl_search_tools` → `prowl_tool_info` → `prowl_call_tool` for one fact; `prowl_analyze` for a complete strategy report. Pass a stable `session_id` across calls to keep the report cache and conversation memory scoped to one conversation.
53
+ `prowl_list_tools` answers with category counts by default — the full name list
54
+ costs about 4k tokens and is returned only for `names=true` or a single
55
+ `category`. Reach for `prowl_search_tools` to find a tool by intent; it is the
56
+ cheap path and ranks by relevance.
57
+
58
+ Recommended flow: `prowl_search_tools` → `prowl_tool_info` → `prowl_call_tool` for one fact; `prowl_analyze` for a complete strategy report. Pass a stable `session_id` across calls to keep the report cache and conversation memory scoped to one conversation — `prowl_generate_artifact` and `prowl_export_report` read the report cached against that session, so they need a prior `prowl_analyze` on the same id.
51
59
 
52
60
  Full reference: [https://prowl.chat/mcp/skill.md](https://prowl.chat/mcp/skill.md)
53
61
 
54
62
  ## Tiers
55
63
 
56
- `prowl_analyze` and `prowl_start_session` take a `tier`, which sets the tool budget and the hard provider-cost cap for the run:
64
+ `prowl_analyze`, `prowl_start_session` and `prowl_schedule_create` take
65
+ **`execution_mode`** — not `tier`. The parameter sets the tool budget and the
66
+ hard provider-cost cap for the run. An unknown key is ignored, so a call that
67
+ sends `tier` runs at the default and reports back as if it had not.
57
68
 
58
- | Tier | Use for | Provider cost cap |
59
- |------|---------|------------------:|
60
- | `basic` | One question, fast turnaround | $2.50 |
61
- | `deep` | Full competitive report | $8.00 |
62
- | `max` | Exhaustive, research-grade | $18.00 |
69
+ | `execution_mode` | Use for | Provider cost cap | Requires |
70
+ |------|---------|------------------:|----------|
71
+ | `basic` | One question, fast turnaround | $2.50 | — |
72
+ | `deep` | Full competitive report | $8.00 | Exploit+ subscription |
73
+ | `max` | Exhaustive, research-grade | $18.00 | Blackops+ subscription |
63
74
 
64
75
  You are never billed more than the reserved hold.
65
76
 
77
+ **A key without the subscription is not refused — it is downgraded.** `deep` and
78
+ `max` resolve to `basic`, and the run executes and bills as `basic` with a notice
79
+ on the stream. Call `prowl_get_wallet` (free) before spending: it returns
80
+ `entitlement.available_execution_modes` for the current key, and
81
+ `downgraded_modes` for the ones that would silently change.
82
+
66
83
  ## Playbooks
67
84
 
68
85
  Pass `playbook_id` to `prowl_analyze` to force a fixed report shape instead of a dynamically composed one:
@@ -74,14 +91,21 @@ Call `prowl_list_playbooks` (free) for what each one covers.
74
91
  ## Verify
75
92
 
76
93
  1. List MCP tools; confirm `prowl_list_tools`, `prowl_tool_info`, `prowl_call_tool`, `prowl_analyze`.
77
- 2. Run `prowl_list_tools` (free) → 448 tools grouped by category.
78
- 3. Connectivity check (no auth): `curl https://prowl.chat/mcp/health`.
94
+ 2. Run `prowl_list_tools` (free) → category counts summing to `total_tools: 448`. (It returns counts, not names — pass `names=true` for the full list.)
95
+ 3. Run `prowl_get_wallet` (free) → the key is valid, and the balance and available modes come back.
96
+ 4. Connectivity check (no auth): `curl https://prowl.chat/mcp/health`.
79
97
 
80
98
  ## Billing
81
99
 
82
100
  - **Subscription pool** (plan renewal, burns at period end) + **extra pool** (top-ups, never expires).
83
101
  - Each `prowl_call_tool` response carries a `billing` object (`estimated_cost_usd`, `actual_cost_usd`, `debited`).
84
102
  - Insufficient balance blocks the call before it runs — top up at MCP Home.
103
+ - Read the balance with **`prowl_get_wallet`** (free). The REST route
104
+ `GET /api/v1/wallet` returns the same figures but decodes a **JWT**, and a
105
+ `prowl_` API key is not one — no REST endpoint accepts an API key, so MCP is
106
+ the only surface that can answer this key.
107
+ - A scoped key can be capped below the wallet (`key_limits` in the same
108
+ response); a batch planned against the balance alone can still be refused.
85
109
 
86
110
  ## The status widget
87
111
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "prowl-cli",
3
3
  "description": "Prowl CLI skill: drive the 448-tool Prowl market-intelligence catalog from the shell with @prowl-ai/cli — no MCP server required.",
4
- "version": "0.1.1",
4
+ "version": "0.2.0",
5
5
  "author": {
6
6
  "name": "Prowl",
7
7
  "email": "support@prowl.chat",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prowl-cli",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Prowl CLI skill: drive the 448-tool Prowl market-intelligence catalog from the shell with @prowl-ai/cli — no MCP server required.",
5
5
  "author": {
6
6
  "name": "Prowl",
@@ -5,7 +5,7 @@ license: MIT
5
5
  compatibility: Requires Node.js 18+, the `@prowl-ai/cli` npm package (installed globally or run via npx) and a Prowl API key; makes network calls to prowl.chat.
6
6
  metadata:
7
7
  author: prowl.chat
8
- version: "0.1.1"
8
+ version: "0.2.0"
9
9
  ---
10
10
 
11
11
  # Prowl CLI — market intelligence from the shell
@@ -32,57 +32,100 @@ mkdir -p ~/.prowl && printf %s 'prowl_...' > ~/.prowl/prowl_mcp_token && chmod 6
32
32
 
33
33
  Never print the key back to the user, never pass it in a command you echo into a log, and never write it into a repo file.
34
34
 
35
- Requires Node.js >= 18.
35
+ Requires Node.js >= 18. Verify with `prowl auth status`, which proves the key by making an authenticated call rather than assuming it works.
36
36
 
37
37
  ## Commands
38
38
 
39
+ Each command maps to one MCP tool; the CLI covers all 21 the server registers.
40
+
39
41
  ```
40
- prowl auth status | login | logout
41
- prowl tools list # 448 tools by category (free)
42
- prowl tools search "<query>" # semantic catalog search (free)
43
- prowl tools info <tool_name> # input schema + estimated cost (free)
44
- prowl call <tool_name> --params '<json>' # invoke one tool (wallet debit)
45
- prowl analyze "<query>" [--tier basic|deep|max] [--playbook <id>] [--session <id>]
46
- prowl wallet # balance
47
- prowl version
42
+ CATALOGUE (free)
43
+ prowl tools list [--category <c>] [--names] [--limit n] [--offset n]
44
+ prowl tools search "<query>" [--category <c>] [--provider <p>] [--limit n] [--offset n]
45
+ prowl tools info <tool_name>
46
+ prowl playbooks
47
+
48
+ RESEARCH (debits the wallet)
49
+ prowl call <tool_name> --params '<json>' [--session <id>]
50
+ prowl analyze "<query>" [--tier basic|deep|max] [--playbook <id>] [--session <id>]
51
+ prowl session start "<query>" [--tier <t>] [--title <s>] [--watch] [--interval <s>]
52
+ prowl session status <id> | get <id> [--messages] | list | reset [<id>]
53
+
54
+ SCHEDULES (each run debits the wallet)
55
+ prowl schedule create "<query>" [--cadence <c>] [--tier <t>] [--playbook <id>]
56
+ prowl schedule list | pause <job_id> | resume <job_id> | cancel <job_id>
57
+
58
+ OUTPUT (debits the wallet; needs a report on the same --session)
59
+ prowl artifact <infographic|pdf|pptx|audio|video> [--theme <t>] [--session <id>]
60
+ prowl export [--format markdown|html] [--session <id>]
61
+
62
+ ACCOUNT (free)
63
+ prowl auth status | login | logout
64
+ prowl wallet
65
+ prowl stats [--session <id>]
66
+ prowl errors [--hours n] [--tool <name>] [--severity <s>] [--limit n]
67
+ prowl version
48
68
  ```
49
69
 
50
- Global flags: `--json` (one machine-readable JSON document on stdout — always use this when parsing), `--key <k>`, `-h`.
70
+ Global flags: `--json` (one machine-readable JSON document on stdout — always use this when parsing), `--key <k>`, `--quiet`, `-h`.
71
+ Environment: `PROWL_API_KEY`, `PROWL_BASE_URL`, `PROWL_MCP_URL`, `PROWL_TIMEOUT_MS`.
72
+
73
+ Recommended flow: `tools search` → `tools info` (check the cost) → `call`. Reach for `analyze` when the goal is a full report rather than one data point. Pass a stable `--session <id>` across consecutive calls to keep the report cache, history and spend scoped to one investigation; `artifact` and `export` read the report cached against that session, so they need a prior `analyze` on the same id.
51
74
 
52
- Recommended flow: `tools search` → `tools info` (check the cost) → `call`. Reach for `analyze` when the goal is a full report rather than one data point. Pass a stable `--session <id>` across consecutive `analyze` calls to keep the report cache and conversation history scoped to one investigation.
75
+ `tools list` returns category **counts**, not names — pass `--names` or `--category <c>` for names, or prefer `tools search`, which is cheaper and ranks by relevance.
53
76
 
54
- ## Tiers and cost control
77
+ ## Tiers, and the downgrade that is not a refusal
55
78
 
56
79
  `analyze` defaults to `--tier basic`. Each tier holds a hard provider-cost cap for the run — billing never exceeds the reserved hold.
57
80
 
58
- | Tier | Use for | Cap |
59
- |------|---------|----:|
60
- | `basic` | one question, fast turnaround | $2.50 |
61
- | `deep` | full competitive report | $8.00 |
62
- | `max` | exhaustive, research-grade | $18.00 |
81
+ | Tier | Use for | Cap | Requires |
82
+ |------|---------|----:|----------|
83
+ | `basic` | one question, fast turnaround | $2.50 | — |
84
+ | `deep` | full competitive report | $8.00 | Exploit+ subscription |
85
+ | `max` | exhaustive, research-grade | $18.00 | Blackops+ subscription |
86
+
87
+ **A key without the subscription is not refused — it is downgraded to `basic`, and the run executes and bills as `basic`.** Nothing in the output announces this loudly, so check before spending:
88
+
89
+ ```bash
90
+ prowl wallet # balance, plus the modes this key can actually run
91
+ ```
63
92
 
64
93
  Check `prowl tools info <tool>` before a `call` in a loop, and `prowl wallet` before a batch. Confirm with the human before running `--tier max` or a batch that could exceed a few dollars.
65
94
 
95
+ ## Long runs
96
+
97
+ `analyze` blocks for 30 seconds to 5 minutes (`max`: up to 10); the CLI waits up to 15 minutes, overridable with `PROWL_TIMEOUT_MS`. In a script, prefer the async form — the run is detached server-side from the first call, so a dropped connection costs nothing:
98
+
99
+ ```bash
100
+ prowl session start "competitors of stripe.com" --tier deep --watch
101
+ ```
102
+
103
+ Without `--watch` it returns a `session_id` immediately; poll with `prowl session status <id>` and read the report with `prowl session get <id>`.
104
+
66
105
  ## Playbooks
67
106
 
68
107
  `--playbook <id>` forces a fixed, persona-tuned report shape:
69
108
 
70
109
  `geo-visibility-audit` · `competitor-teardown` · `content-engine` · `local-and-reputation` · `mobile-aso` · `amazon-marketplace` · `idea-validation` · `channel-economics-audit`
71
110
 
111
+ `prowl playbooks` (free) prints what each one covers.
112
+
72
113
  ## Exit codes
73
114
 
74
115
  `0` ok · `1` runtime/tool error · `2` usage · `3` auth (missing or invalid key) · `4` insufficient balance · `5` network/timeout.
75
116
 
76
- Handle them: `3` means ask the human for a key, `4` means stop and report the balance rather than retrying, `5` is the only one worth a retry.
117
+ Handle them: `3` means ask the human for a key, `4` means stop and report the balance rather than retrying, `5` is the only one worth a retry. A tool that reports failure as text is mapped onto the same codes, so branching on the exit code is safe.
77
118
 
78
119
  ## Examples
79
120
 
80
121
  ```bash
81
- prowl tools search "backlinks"
122
+ prowl tools search "backlinks" --limit 5
82
123
  prowl tools info majestic_get_back_link_data
83
124
  prowl call extract_domain_from_url --params '{"url":"https://stripe.com/pricing"}'
84
125
  prowl analyze "competitors of stripe.com" --tier basic --json
85
126
  prowl analyze "is there demand for an AI receipt scanner" --playbook idea-validation --tier deep
127
+ prowl session start "teardown of vercel.com" --tier deep --watch
128
+ prowl wallet --json
86
129
  ```
87
130
 
88
131
  ## When to use