{
  "markdown": "# pulse-mcp\n\nMCP server for **[Pulse](https://pulse.walls.sh)** — a free, agent-first social-post metrics API.\nGive any MCP client (Claude Desktop, Cursor, …) the numbers behind any public post: hand it a\nURL, get back views, likes, comments, and the publish date as clean JSON. **No signup, no API key.**\n\n```json\n{ \"mcpServers\": { \"pulse\": { \"command\": \"npx\", \"args\": [\"-y\", \"pulse-mcp\"] } } }\n```\n\nThat's it — drop it in your MCP config and your agent has five new tools.\n\n## Tools\n\n| Tool | Input | Output |\n|---|---|---|\n| `metrics` | one post URL (short links like `vm.tiktok.com`/`t.co` OK) | `{ platform, views, likes, comments, shares, quotes, bookmarks, publishedAt, title, author, thumbnail }` |\n| `metrics_batch` | many URLs (mixed post + profile URLs welcome) | the same, one per URL (partial failures don't fail the batch) |\n| `history` | one post or profile URL (+ optional `since` for the delta) | the recorded growth curve — `{ count, points }` (posts: `{ t, views, likes, comments }`, profiles: `{ t, followers, posts }`), a snapshot per fresh fetch |\n| `profile` | one profile URL | account-level metrics — `{ handle, name, followers, following, posts, verified, avatar }` (YouTube, TikTok, Instagram, X, Bluesky, Mastodon) |\n| `profile_batch` | many profile URLs (max 50) | same as `profile`, one per URL — order preserved; partial failures don't fail the batch. Compare follower counts across a list of creators. |\n\n**Example** — ask your agent \"how did this video do?\" with a link, and it gets:\n\n```json\n{\n  \"platform\": \"youtube\",\n  \"views\": 1781088936,\n  \"likes\": 19147197,\n  \"comments\": null,\n  \"publishedAt\": \"2009-10-25T06:57:33.000Z\",\n  \"title\": \"Rick Astley - Never Gonna Give You Up (Official Video)\"\n}\n```\n\n## Platform coverage\n\n| Platform | Returns | Notes |\n|---|---|---|\n| YouTube | views, likes | |\n| X / Twitter | views, likes, comments, shares (retweets), quotes, bookmarks | views via X's own guest API (tweets since ~Dec 2022) |\n| TikTok | views, likes, comments, shares | |\n| Bluesky | likes, comments, shares (reposts), quotes | public AppView API; Bluesky has no view counts |\n| Mastodon | likes, boosts, replies | per-instance public REST API (major instances) |\n| Instagram | views, likes, comments | public posts via the guest API |\n| Threads | post metrics need a login | post metrics → `login_required`; profile metrics (followers/verified) work via `/profile` |\n| LinkedIn | — (posts need login) | post metrics → `login_required`; profiles also login-walled |\n\nIt reads each platform's own public pages from a **residential IP**, so it sees what a browser\nsees — and it's **honest about the edges**: a deleted/private post comes back `content_unavailable`,\na login-walled one `login_required`, never a silent row of zeros.\n\n## Config\n\n- **Free** — no account, no key, no wallet.\n- `PULSE_API_URL` — override the backend (defaults to `https://pulse.walls.sh`).\n\nBuilt in public as Wall #002 of [walls.sh](https://walls.sh). Docs: <https://pulse.walls.sh/docs> ·\nmachine-readable: [`/llms.txt`](https://pulse.walls.sh/llms.txt) · [OpenAPI](https://pulse.walls.sh/openapi.json).\n\nMIT.\n",
  "bytes": 3129,
  "sha": "365ac84d0897b7fb99e2abe44f944905d5d67c5c181cc3e9ccba59fa4ad41f0b",
  "repo_slug": "patwalls/pulse-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_patwalls_pulse_mcp_3e3d967f/readme"
}