@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 +42 -0
- package/package.json +1 -1
- package/plugins/prowl/.claude-plugin/plugin.json +1 -1
- package/plugins/prowl/.codex-plugin/plugin.json +1 -1
- package/plugins/prowl/skills/prowl/SKILL.md +39 -15
- package/plugins/prowl-cli/.claude-plugin/plugin.json +1 -1
- package/plugins/prowl-cli/.codex-plugin/plugin.json +1 -1
- package/plugins/prowl-cli/skills/prowl-cli/SKILL.md +63 -20
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.
|
|
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.
|
|
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
|
+
"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.
|
|
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
|
-
|
|
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` |
|
|
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,
|
|
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` |
|
|
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
|
-
|
|
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 `
|
|
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
|
-
|
|
|
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
|
|
78
|
-
3.
|
|
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.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Prowl",
|
|
7
7
|
"email": "support@prowl.chat",
|
|
@@ -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.
|
|
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
|
-
|
|
41
|
-
prowl tools list
|
|
42
|
-
prowl tools search "<query>"
|
|
43
|
-
prowl tools info <tool_name>
|
|
44
|
-
prowl
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
prowl
|
|
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
|
-
|
|
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
|
|
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
|