npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

agent-signal

v0.4.0

Published

Collective intelligence for AI shopping agents — every agent that connects makes every other agent smarter

Readme

AgentSignal

The collective intelligence layer for AI shopping agents.

Every agent that connects makes every other agent smarter. 1,200+ shopping sessions, 95 products, 50 merchants, 10 categories — and growing.

Why this exists: When AI agents shop for users, each agent starts from zero. AgentSignal pools decision signals across all agents so every session benefits from what every other agent has already learned — selection rates, rejection patterns, price intelligence, merchant reliability, and proven constraint matches.

Quick Start (30 seconds)

Remote — zero install, instant intelligence:

{
  "mcpServers": {
    "agent-signal": {
      "url": "https://agent-signal-production.up.railway.app/mcp"
    }
  }
}

Local via npx:

npx agent-signal

Claude Desktop / Claude Code:

{
  "mcpServers": {
    "agent-signal": {
      "command": "npx",
      "args": ["agent-signal"]
    }
  }
}

One Call to Start Shopping Smarter

The smart_shopping_session tool logs your session AND returns all available intelligence in a single call:

smart_shopping_session({
  raw_query: "lightweight running shoes with good cushioning",
  category: "footwear/running",
  budget_max: 200,
  constraints: ["lightweight", "cushioned"]
})

Returns:

  • Your session ID for subsequent logging
  • Top picks from other agents in that category
  • What constraints and factors mattered most
  • How similar sessions ended (purchased vs abandoned)
  • Network-wide stats

19 MCP Tools

Smart Combo Tools (recommended)

| Tool | What it does | |------|-------------| | smart_shopping_session | Start session + get category intelligence + similar session outcomes — all in one call | | evaluate_and_compare | Log product evaluation + get product intelligence + deal verdict — all in one call |

Buyer Intelligence — Shop Smarter

| Tool | What it tells you | |------|-------------------| | get_product_intelligence | Selection rate, rejection reasons, which competitors beat it and why | | get_category_recommendations | Top picks, decision factors, common requirements, average budgets | | check_merchant_reliability | Stock accuracy, selection rate, purchase outcomes by merchant | | get_similar_session_outcomes | What agents with similar constraints ended up choosing | | detect_deal | Price verdict against historical data — best_price_ever to above_average | | get_warnings | Stock issues, high rejection rates, abandonment signals | | get_constraint_match | Products that exactly match your constraints — skip the search |

Seller Intelligence — Understand Your Market

| Tool | What it tells you | |------|-------------------| | get_competitive_landscape | Category rank, head-to-head win rate, who beats you and why, price positioning | | get_rejection_analysis | Why agents reject your product, weekly trends, what they chose instead | | get_category_demand | What agents are searching for, unmet needs, budget distribution, market gaps | | get_merchant_scorecard | Full merchant report — stock reliability, price competitiveness, selection rates by category |

Write Tools — Contribute Back

| Tool | What it captures | |------|-----------------| | log_shopping_session | Shopping intent, constraints, budget, exclusions | | log_product_evaluation | Product considered, match score, disposition + rejection reason | | log_comparison | Products compared, dimensions, winner, deciding factor | | log_outcome | Final result — purchased, recommended, abandoned, or deferred | | import_completed_session | Bulk import a completed session retroactively | | get_session_summary | Retrieve full session details |

Example: Full Agent Workflow

# 1. Start smart — one call gets you session ID + intelligence
smart_shopping_session(category: "electronics/headphones", constraints: ["noise-cancelling", "wireless"], budget_max: 400)

# 2. Evaluate products — get intel as you log
evaluate_and_compare(session_id: "...", product_id: "sony-wh1000xm5", price_at_time: 349, disposition: "selected")
evaluate_and_compare(session_id: "...", product_id: "bose-qc45", price_at_time: 279, disposition: "rejected", rejection_reason: "inferior ANC")

# 3. Compare and close
log_comparison(products_compared: ["sony-wh1000xm5", "bose-qc45"], winner: "sony-wh1000xm5", deciding_factor: "noise cancellation quality")
log_outcome(session_id: "...", outcome_type: "purchased", product_chosen_id: "sony-wh1000xm5")

Every step feeds the network. The next agent shopping for headphones benefits from your data.

Example: Seller Intelligence Workflow

# 1. How is my product performing vs competitors?
get_competitive_landscape(product_id: "sony-wh1000xm5")
# → Category rank #1, 68% head-to-head win rate, beats bose-qc45 on ANC quality

# 2. Why are agents rejecting my product?
get_rejection_analysis(product_id: "bose-qc45")
# → 45% rejected for "inferior ANC", agents chose sony-wh1000xm5 instead 3x more

# 3. What do agents want in my category?
get_category_demand(category: "electronics/headphones")
# → Top demands: noise-cancelling (89%), wireless (82%), unmet need: "spatial audio"

# 4. How does my store perform?
get_merchant_scorecard(merchant_id: "amazon")
# → 34% selection rate, 2% out-of-stock, cheapest option 41% of the time

Categories with Active Intelligence

| Category | Sessions | |----------|----------| | footwear/running | 150+ | | electronics/headphones | 140+ | | gaming/accessories | 130+ | | electronics/tablets | 130+ | | home/furniture/desks | 120+ | | fitness/wearables | 118+ | | electronics/phones | 115+ | | home/smart-home | 107+ | | kitchen/appliances | 105+ | | electronics/laptops | 98+ |

Agent Framework Examples

Ready-to-run examples in /examples:

| Framework | File | Description | |-----------|------|-------------| | LangChain | langchain-shopping-agent.py | ReAct agent with LangGraph + MCP adapter | | CrewAI | crewai-shopping-crew.py | Two-agent crew (researcher + shopper) | | AutoGen | autogen-shopping-agent.py | AutoGen agent with MCP tools | | OpenAI Agents | openai-agents-shopping.py | OpenAI Agents SDK with Streamable HTTP | | Claude | claude-system-prompt.md | Optimized system prompt for Claude Desktop/Code |

All examples connect to the hosted MCP endpoint — no setup beyond pip install required.

REST API

Merchant-facing analytics at https://agent-signal-production.up.railway.app/api:

| Endpoint | Description | |----------|-------------| | GET /api/products/:id/insights | Product analytics — consideration rate, rejection reasons | | GET /api/categories/:category/trends | Category trends — top factors, budgets, attributes | | GET /api/competitive/lost-to?product_id=X | Competitive losses — what X loses to and why | | GET /api/sessions | Recent sessions (paginated) | | GET /api/sessions/:id | Full session detail | | POST /api/admin/aggregate | Trigger insight computation | | GET /api/health | Health check |

Self-Hosting

git clone https://github.com/dan24ou-cpu/agent-signal.git
cd agent-signal
npm install
cp .env.example .env  # set DATABASE_URL to your PostgreSQL
npm run migrate
npm run seed           # optional: sample data
npm run dev            # starts API + MCP server on port 3100

Architecture

  • MCP Server — Stdio transport (local) + Streamable HTTP (remote)
  • REST API — Express on the same port
  • Database — PostgreSQL (Neon-compatible)
  • 19 MCP tools — 13 read (buyer + seller intelligence) + 6 write

License

MIT