Data / routstr / exclusions

exclusions

Who is NOT counted in the Routstr network aggregates and why - the exclusion ledger shown on dev.nostrolo.gy/routstr: three categories with the number of pubkeys in each and the rule in words. Answer 'why is provider X missing from the totals' with this plus routstr.provider_profile (its excl_reason column). Takes no entity scope.

kind

reference data

series

current state

row cap

1,000

key

routstr.exclusions

Parameters

paramaccepted values
(no entity scope)this record takes no entity scope; any scope argument is rejected
formatcsv | markdown

Responses are capped at 1,000 rows; a capped response carries an explicit truncated: envelope line naming the remedy.

Query it

MCP tool call against https://dev.nostrolo.gy/mcp (connect your agent):

{
  "name": "nostrology_query_reference",
  "arguments": {
    "record": "exclusions",
    "domain": "routstr"
  }
}

Response: a plain-text envelope (scope, state, freshness, column contract, this page's caveats) followed by the table (csv, or format: "markdown").

Response columns

nametypedescription
categorytextTest / staging nodes | Private-endpoint-only nodes | Kind squatters
providersintegerpubkeys in the category at this refresh
whytextthe rule, in words

Population

Precedence-ordered, one bucket per pubkey: test/staging-marked nodes first, then private-endpoint-only nodes; kind squatters (kind-38421 (routstr-provider-announcements) events without the u+d tag shape) were never providers and are a registry-side entry only.

Caveats

  • Excluded providers stay visible with their reported numbers in routstr.provider_leaderboard - excluded means 'not in the network totals', never hidden. The '.dev' and '.test' TLDs are NOT test markers (routstr.rewolf.dev is a production node).

Freshness in every response is data-derived: the newest routstr refresh's generation instant (nightly 02:45 UTC).