Prominent domains of the Nostr ecosystem, observed from the raw events: in charts and stats for you, and an MCP endpoint for your agent. One daily-fresh archive serving both.
Every figure traces back to Nostr events we read off the relays ourselves - no third-party index in the chain, and no number without the rule that produced it.
Continuous raw Nostr event acquisition across public relays.
Data engine that scales with the growth of the Nostr network itself.
Each metric states its population, its partition, and what it deliberately excludes.
Same underlying data powering MCP and the charts, so they cannot disagree.
Same archive, any angle: slice, dice and compare the numbers however your question needs.
$ claude mcp add --transport http nostrology https://nostrolo.gy/mcp Added nostrology - 3 tools (1 paid), 1 resource, no auth > Which apps do Nostr users actually put in their public app stacks? tool nostrology_query_metric { metric: "app_stack_count" } metric: zapstore.app_stack_count | grain: current | unit: stacks state: current snapshot, no time axis - never summed across calls methodology: distinct kind-30267 (zapstore-app-stacks) lists referencing each app. app_name stack_count Amber 57 Amethyst 46 Zapstore 32 bitchat 25 answer a snapshot, so the agent knows not to trend it.
claude mcp add --transport http nostrology https://nostrolo.gy/mcp Applies to new sessions. An agent with shell access can run this itself.
Edit ~/.codex/config.toml
[mcp_servers.nostrology]
url = "https://nostrolo.gy/mcp" Edit ~/.hermes config.yaml (or: hermes mcp)
mcp_servers:
nostrology:
url: "https://nostrolo.gy/mcp" MCP support ships with the standard install; /reload-mcp applies config edits.
Edit opencode.json
{
"mcp": {
"nostrology": {
"type": "remote",
"url": "https://nostrolo.gy/mcp",
"enabled": true
}
}
} Settings -> Connectors -> Add custom connector -> URL: https://nostrolo.gy/mcp Edit ~/.cursor/mcp.json (or .cursor/mcp.json per-project)
{
"mcpServers": {
"nostrology": {
"url": "https://nostrolo.gy/mcp"
}
}
} Edit .vscode/mcp.json (or MCP: Add Server)
{
"servers": {
"nostrology": {
"type": "http",
"url": "https://nostrolo.gy/mcp"
}
}
} Edit cline_mcp_settings.json
{
"mcpServers": {
"nostrology": {
"type": "streamableHttp",
"url": "https://nostrolo.gy/mcp"
}
}
} type streamableHttp matters: omitting it falls back to legacy SSE.
Edit mcp_config.json
{
"mcpServers": {
"nostrology": {
"serverUrl": "https://nostrolo.gy/mcp"
}
}
} Edit settings.json (Settings -> AI -> MCP Servers -> Add Remote Server)
{
"context_servers": {
"nostrology": {
"url": "https://nostrolo.gy/mcp"
}
}
} Edit ~/.config/goose/config.yaml
extensions:
nostrology:
type: streamable_http
enabled: true
name: nostrology
uri: https://nostrolo.gy/mcp
timeout: 300 One-off alternative: goose session --with-streamable-http-extension <the endpoint URL above>
gemini mcp add --transport http nostrology https://nostrolo.gy/mcp Edit config.yaml
mcpServers:
- name: Nostrology
type: streamable-http
url: https://nostrolo.gy/mcp Streamable HTTP, so native remote-MCP clients take the URL directly.
Bridge the endpoint into a local stdio server with mcp-remote:
npx mcp-remote https://nostrolo.gy/mcp