# Machinepulse

> Market data tools for the MCP ecosystem: server stats, events, search, leaderboards, package trends.

- name: tech.machinepulse/machinepulse
- version: 4.1.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 87/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/tech.machinepulse%2Fmachinepulse
- tools: https://api.protogrid.dev/v1/servers/tech.machinepulse%2Fmachinepulse/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "machinepulse": {
      "type": "http",
      "url": "https://machinepulse.tech/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 45
- drivers: +dns-namespace +reachable +uptime-100% +updated-23d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 87/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 88 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 16 of 16 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_npm_trends (openWorldHint); get_pypi_trends (openWorldHint); get_ecosystem_events (openWorldHint); …
- pass `tools.token_cost`: about 2,651 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 83 (weight 15)

- warn `stability.changes`: 21 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 16, about 2,651 tokens to load them all
- tool set hash: 4c7e69249100575af3503fada12db968
- tools last changed: 2026-10-26T20:55:37.168Z
- badge: [![protogrid quality](https://protogrid.dev/badge/tech.machinepulse/machinepulse.svg)](https://protogrid.dev/servers/tech.machinepulse/machinepulse)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-26 `search_mcp_servers` changed (description)
  - before: Search MCP servers by canonical_key, name or description — substring match, not fuzzy search, ordered by stars when available; optional filters archived, has_repo, category, min_stars, pushed_before run in one request; limit/offset page through the matches. Read-only aggregation of daily-collected observatory data; no side effects. Name/keyword lookup over MCP servers only; for the card of a known entity use `get_entity_profile`. Use when the user gives a name, a task word (PDF, payment) or a filter and wants keys and facts.
  - after: Search MCP servers by canonical_key (former keys included, they stay as aliases), name or description — substring match, not fuzzy search, ordered by stars when available; optional filters archived, has_repo, category, min_stars, pushed_before run in one request; limit/offset page through the matches. Read-only aggregation of daily-collected observatory data; no side effects. Name/keyword lookup over MCP servers only; for the card of a known entity use `get_entity_profile`. Use when the user gives a name, a task word (PDF, payment) or a filter and wants keys and facts.
- 2026-10-22 `data_quality` removed
  - Report collector health — coverage, per-source freshness and missed snapshot runs with reasons, separating recent misses from the whole recorded history; internal-only sources are excluded. Use when the user asks whether the observatory data is fresh or complete.
- 2026-10-22 `market_overview` removed
  - Fetch the observatory front page in one call — MCP servers, A2A agents, HF models, x402 money, top-5 growth with one catalog line each, new arrivals per category and data coverage, a few headline numbers each. Use when the user wants the state of the whole market in a single request.
- 2026-10-22 `leaderboard` removed
  - Rank tracked entities (servers, agents, models) by a project-level metric — project_momentum (score: middle of star/download/HF-derivative growth ranks) or trend_days (days on GitHub Trending) over the 7d window; limit/offset page through the full ranked list. Numbers and catalog facts only, no quality scores. Use when the user asks what is rising.
- 2026-10-22 `pulse` removed
  - Snapshot every observatory metric for a day — window values with formula, formula_plain (one English line), basis, and per-metric history depth (metric_history_from); insufficient history is reported as a fact, never a fake zero. Use when the user asks for the current state of the AI agent ecosystem.
- 2026-10-22 `get_protocols_timeline` changed (description, annotations)
  - before: List the protocol chronicle (MCP, A2A, AP2, x402) — releases and milestones, newest first, optionally filtered by protocol; limit/offset page through the entries. Use when the user asks when a protocol shipped something.
  - after: List the protocol chronicle (MCP, A2A, AP2, x402) — releases and milestones, newest first, optionally filtered by protocol; limit/offset page through the entries. Read-only aggregation of daily-collected observatory data; no side effects. Use when the user asks when a protocol shipped something.
- 2026-10-22 `get_finance_summary` changed (description, annotations)
  - before: Summarize x402 agent-payment volume (DefiLlama) — latest stored day and the 7-day window split by chains with non-zero volume, with the data lag stated. Use when the user asks about agent payments or x402 volume.
  - after: Summarize x402 agent-payment volume (DefiLlama) — latest stored day and the 7-day window split by chains with non-zero volume, with the data lag stated. Read-only aggregation of daily-collected observatory data; no side effects. Use when the user asks about agent payments or x402 volume.
- 2026-10-22 `get_llm_summary` changed (description, annotations)
  - before: Summarize the Hugging Face model watchlist — model count, new arrivals, derivative net flow and the license tier mix. Use when the user asks about open LLMs and their licenses.
  - after: Summarize the Hugging Face model watchlist — model count, new arrivals, derivative net flow and the license tier mix. Read-only aggregation of daily-collected observatory data; no side effects. Use when the user asks about open LLMs and their licenses.
- 2026-10-22 `get_agents_summary` changed (description, annotations)
  - before: Summarize the A2A agent registry — snapshot total and verified counts plus new and left agents over the last 7 days. Use when the user asks how the AI agent registry is growing.
  - after: Summarize the A2A agent registry — snapshot total and verified counts plus new and left agents over the last 7 days. Read-only aggregation of daily-collected observatory data; no side effects. Use when the user asks how the AI agent registry is growing.
- 2026-10-22 `get_data_quality` added
  - Report collector health — coverage, per-source freshness and missed snapshot runs with reasons, separating recent misses from the whole recorded history; internal-only sources are excluded. Read-only aggregation of daily-collected observatory data; no side effects. Use when the user asks whether the observatory data is fresh or complete.

Full history: https://api.protogrid.dev/v1/servers/tech.machinepulse%2Fmachinepulse/changes

## Remotes

- https://machinepulse.tech/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (16)

- `get_agents_summary`: Summarize the A2A agent registry — snapshot total and verified counts plus new and left agents over the last 7 days. Read-only aggregation of daily-collected observatory data; no side effects. Use when the user asks how the AI agent registry is growing.
- `get_data_quality`: Report collector health — coverage, per-source freshness and missed snapshot runs with reasons, separating recent misses from the whole recorded history; internal-only sources are excluded. Read-only aggregation of daily-collected observatory data; no side effects. Use when the user asks whether the observatory data is fresh or complete.
- `get_ecosystem_events`: List tracked ecosystem events — without filters, counts per event type over the last 7 days plus the latest event of each type and a plain-word legend; set event_type or canonical_key for the full feed (limit/offset page through it), set since=YYYY-MM-DD to widen the window. Read-only aggregation of daily-collected observatory data; no side effects. For counts rather than the feed use the `get_*_summary` tools. Use when the user asks what changed recently in the ecosystem.
- `get_entity_profile`: Fetch the entity card for any tracked type (MCP server, agent, HF model, package) by canonical_key or natural name — all linked facts, categories, HF model license tiers, how to connect, recent events; field captions in fields_note. Name lookup matches exact aliases and canonical keys, not free-form text. Read-only aggregation of daily-collected observatory data; no side effects. Package download days may be missing (npm/PyPI reporting delay); missing days are null with notes, never fake zeros. Use when the user asks about a specific server, agent, model or package.
- `get_finance_summary`: Summarize x402 agent-payment volume (DefiLlama) — latest stored day and the 7-day window split by chains with non-zero volume, with the data lag stated. Read-only aggregation of daily-collected observatory data; no side effects. Use when the user asks about agent payments or x402 volume.
- `get_github_trending`: List repositories seen on GitHub Trending — last N days (1-100), newest first, with rank and stars gained today; limit/offset page through the list. Read-only aggregation of daily-collected observatory data; no side effects. For a project ranking by measured change use `get_leaderboard` instead. Use when the user asks what is trending on GitHub.
- `get_leaderboard`: Rank tracked entities (servers, agents, models) by a project-level metric — project_momentum (score: middle of star/download/HF-derivative growth ranks) or trend_days (days on GitHub Trending) over the 7d window; limit/offset page through the full ranked list. Numbers and catalog facts only, no quality scores. Read-only aggregation of daily-collected observatory data; no side effects. Package download days may be missing (npm/PyPI reporting delay); missing days are null with notes, never fake zeros. Use when the user asks what is rising; for the daily GitHub Trending list use `get_github_trending`.
- `get_llm_summary`: Summarize the Hugging Face model watchlist — model count, new arrivals, derivative net flow and the license tier mix. Read-only aggregation of daily-collected observatory data; no side effects. Use when the user asks about open LLMs and their licenses.
- `get_market_overview`: Fetch the observatory front page in one call — MCP servers, A2A agents, HF models, x402 money, top-5 growth with one catalog line each, new arrivals per category and data coverage, a few headline numbers each. Read-only aggregation of daily-collected observatory data; no side effects; money figures carry their stated data lag. Use when the user wants the state of the whole market in a single request; for per-metric values with formulas use `get_pulse`.
- `get_mcp_ecosystem_summary`: Summarize the MCP server ecosystem — unique servers, 7-day arrivals vs the previous 7 days, per-registry counts and new arrivals per category. Read-only aggregation of daily-collected observatory data; no side effects. Use when the user asks how big or how fast-growing the MCP ecosystem is.
- `get_npm_trends`: Fetch daily download counts for an npm package — up to 100 days, with total, latest day and average over days that have data; days without collection are null with a note. Read-only aggregation of daily-collected observatory data; no side effects. Days inside the npm reporting delay are partial (shown, excluded from latest and average), never fake zeros. Use when the user asks how an npm package is growing; for side-by-side comparison use `get_package_comparison`.
- `get_package_comparison`: Compare npm/PyPI download activity for up to 20 packages — last 30 days: total, latest day and average (a longer list is cut and says so). Read-only aggregation of daily-collected observatory data; no side effects. Package download days may be missing (npm/PyPI reporting delay); missing days are null with notes, never fake zeros. Use when the user wants to compare package popularity side by side; for a single package's history use `get_npm_trends` or `get_pypi_trends`.
- `get_protocols_timeline`: List the protocol chronicle (MCP, A2A, AP2, x402) — releases and milestones, newest first, optionally filtered by protocol; limit/offset page through the entries. Read-only aggregation of daily-collected observatory data; no side effects. Use when the user asks when a protocol shipped something.
- `get_pulse`: Snapshot every observatory metric for one day — window values with formula, formula_plain, basis, and per-metric history depth (`metric_history_from`); insufficient history is a fact, never a fake zero. Read-only; daily collection, package download windows may lag. Use when the user asks for the current state of the AI agent ecosystem; for a narrative overview use `get_market_overview`, for one domain use the `get_*_summary` tools.
- `get_pypi_trends`: Fetch daily download counts for a PyPI package — up to 100 days, with total, latest day and average over days that have data; days without collection are null with a note. Read-only aggregation of daily-collected observatory data; no side effects. Days inside the PyPI reporting delay are partial (shown, excluded from latest and average), never fake zeros. Use when the user asks how a PyPI package is growing; for side-by-side comparison use `get_package_comparison`.
- `search_mcp_servers`: Search MCP servers by canonical_key (former keys included, they stay as aliases), name or description — substring match, not fuzzy search, ordered by stars when available; optional filters archived, has_repo, category, min_stars, pushed_before run in one request; limit/offset page through the matches. Read-only aggregation of daily-collected observatory data; no side effects. Name/keyword lookup over MCP servers only; for the card of a known entity use `get_entity_profile`. Use when the user gives a name, a task word (PDF, payment) or a filter and wants keys and facts.
