What it does
Bundle #3, and the first production consumer of Sentinel Stage 2. You give it competitors; it scrapes each one's homepage, /pricing, /changelog (or /blog) and /careers via Sentinel (JS-rendered via Crawl4AI/Chromium, Trafilatura extraction, Jina fallback on Cloudflare block), pulls recent tweets, then diffs everything against last week's stored snapshot — surfacing only what changed: new pricing tiers, shipped features, hiring signals, notable tweets, funding/exec moves. First run per competitor is a flagged baseline. The change-detection (own weekly snapshot store, separate from settlement data) is the moat — anyone can scrape a /pricing page once; the value is what changed since last week. LLM synthesis + an 8-signal QC critic gate (charge-on-success-only); immutable shareable snapshot + 30-day receipt per run.
When to use it
- A founder agent runs a weekly read on 3-10 competitors without tab-hopping
- A product team tracks competitor pricing/feature/ hiring deltas week over week
- An investor agent monitors portfolio-adjacent companies for funding/exec/launch signals
- An agent embeds the immutable snapshot URL in a board update for verifiable provenance
Request schema
{
"competitors": [
{
"name": "Linear",
"url": "linear.app",
"twitter": "@linear"
},
{
"name": "Notion",
"url": "notion.so"
},
{
"name": "Cursor",
"url": "cursor.com"
}
],
"format": "html"
} Response schema
{
"snapshotUrl": "/brief/competitor-intel/snap_1387c9b29b1a",
"signalsPassed": 6,
"pagesScraped": 15,
"costUsdc": 0.071
} Code example — TypeScript via MCP
Install the MCP server once; all 22 services become tool calls.
// Configure @melis-ai/x402-tools-mcp in your MCP client
// Then call the tool:
const result = await mcpClient.callTool("competitor_intel", {
"competitors": [
{
"name": "Linear",
"url": "linear.app",
"twitter": "@linear"
},
{
"name": "Notion",
"url": "notion.so"
},
{
"name": "Cursor",
"url": "cursor.com"
}
],
"format": "html"
});
console.log(result);
// ["snapshotUrl","signalsPassed","pagesScraped","costUsdc"]... → MCP setup guide Code example — Python via direct HTTP
import requests
# x402 payment header must be set by your wallet client
# See x402.org for client libraries
headers = {
"Content-Type": "application/json",
"x-payment": "<signed-x402-payment-header>",
}
resp = requests.post(
"https://agents.melis.ai/brief/competitor-intel",
json={
"competitors": [
{
"name": "Linear",
"url": "linear.app",
"twitter": "@linear"
},
{
"name": "Notion",
"url": "notion.so"
},
{
"name": "Cursor",
"url": "cursor.com"
}
],
"format": "html"
},
headers=headers,
)
print(resp.json()) Code example — curl with internal key bypass
For testing with an issued internal key (skips x402 payment flow):
curl -X POST https://agents.melis.ai/brief/competitor-intel \
-H "Content-Type: application/json" \
-H "x-internal-key: YOUR_KEY" \
-d '{"competitors":[{"name":"Linear","url":"linear.app","twitter":"@linear"},{"name":"Notion","url":"notion.so"},{"name":"Cursor","url":"cursor.com"}],"format":"html"}' How is this different from alternatives?
Competitor Intel vs Scrape competitor pages yourself
Anyone can fetch a /pricing page. What you cannot trivially replicate is the weekly change-detection (stored snapshot diff so you see what *changed*, not a re-dump), JS-rendered + Cloudflare-resilient scraping (Sentinel Stage 2), and an editorial QC-gated synthesis across competitors.
Competitor Intel vs A competitive-intel SaaS subscription
Those are human-paced dashboards on a monthly contract. This is a charge-per-run x402 endpoint an agent calls weekly on demand, with a verifiable immutable snapshot and accumulating private snapshot history (the switching cost).
FAQ
Does it work without an account?
Yes. x402 is account-less. Your agent's wallet signs the payment and retries automatically. No registration, no API key, no subscription.
What happens on failure?
Returns HTTP 502 with no_settlement:true if the digest cannot clear 6/8 QC signals (charge-on-success-only). Per-page scrape failures degrade gracefully (failed pages noted in meta, run still completes); Twitter degrades to empty. First run per competitor is a flagged baseline (full snapshot, no diff). Snapshot + receipt URLs are always free and never re-bill.
What is the rate limit?
Run weekly by the buyer (not cron’d by us). Cold run ~75s for 3 competitors (15 page scrapes). Snapshot + receipt URLs are free and never re-bill.
Is this open-source?
The service code is closed-source for security reasons. The MCP wrapper that calls it is open-source and MIT-licensed: github.com/mizukaizen/x402-tools-mcp .
Who built this?
Part of the melis.ai agent infrastructure stack. Running on a dedicated Helsinki VPS since early 2026. Contact sean@melis.ai.