# Ripe Stat

> RIPE Stat MCP — IP/ASN/BGP data

- name: io.github.pipeworx-io/ripe-stat
- version: 0.1.2
- connection class: R0 (autonomous)
- trust: 95/100
- quality: –/100 (not scored)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.pipeworx-io%2Fripe-stat
- tools: https://api.protogrid.dev/v1/servers/io.github.pipeworx-io%2Fripe-stat/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "ripe-stat": {
      "type": "http",
      "url": "https://gateway.pipeworx.io/ripe-stat/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 85
- drivers: +repository +namespace-matches-repo +website -thin-description +reachable +uptime-97% +updated-24d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality –/100 (not scored)

Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-03-26; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### 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: n/a (weight 30)

- n/a `tools.descriptions`, `tools.description_length`, `tools.schemas`, `tools.annotations`, `tools.directory_hints`, `tools.token_cost`, `tools.api_dump`: tool list unknown (behind auth, not probed, or empty)

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

- n/a `stability.changes`, `stability.rug_pull`: tool list unknown

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

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

- tools: unknown
- tools last changed: 2026-10-17T07:13:32.513Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.pipeworx-io/ripe-stat.svg)](https://protogrid.dev/servers/io.github.pipeworx-io/ripe-stat)
- 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-17 `ripestat_asn_search` removed
  - "What is [company]'s ASN" / "find the AS number for [organisation]" / "search ASNs by name" — resolve an organisation or network name to its AS numbers and prefixes using RIPEstat's resource autocomplete. Returns candidate ASNs with their holder descriptions, so it is the lookup step BEFORE as_overview / ripestat_announced_prefixes / asn_neighbours when you only know the company name. Matches on the registered AS name and holder description across all five RIRs.
- 2026-10-17 `ripestat_announced_prefixes` removed
  - "What IP ranges does AS[N] announce" / "all prefixes for [ASN]" / "what IP blocks does Cloudflare / Google / AWS own" / "netblocks announced by [AS]" — every IPv4 and IPv6 prefix currently announced in global BGP by an Autonomous System, as seen by RIPE's RIS route collectors. AUTHORITATIVE for "which IP ranges belong to this network": use it to build allowlists, attribute traffic to a provider, or size a network's address footprint. Note RIPEstat excludes prefixes seen by fewer than 10 full-feed peers, so very low-visibility announcements are omitted.
- 2026-10-17 `geoloc` removed
  - "What country is IP [X] in" / "geolocate [IP]" / "RIR country for [resource]" — country geolocation of an IP or prefix derived from RIR registration data. NOTE: registration-based geo, not GeoIP — accurate for ownership country but not necessarily the host's physical location. Use for compliance / jurisdiction questions where registry truth matters.
- 2026-10-17 `abuse_contact` removed
  - "Abuse contact for IP [X]" / "where to report abuse on [IP / ASN]" / "report spam from [resource]" — official abuse-contact email(s) for an IP, prefix, or ASN drawn from RIR records (inetnum / aut-num objects). Use for spam/abuse/DDoS report routing.
- 2026-10-17 `asn_neighbours` removed
  - "BGP peers / neighbours of AS[N]" / "who does [ASN] peer with" / "upstream providers for [AS]" — BGP neighbours of an AS observed by RIPE's RIS (Routing Information Service) route collectors. Use for transit / peering analysis, network topology mapping.
- 2026-10-17 `whois` removed
  - "Whois lookup for IP / ASN / prefix" / "who owns IP [X]" / "WHOIS for [resource]" — aggregated whois data for an IP address, IP prefix, or AS number across all five RIRs (ARIN, RIPE, APNIC, LACNIC, AFRINIC). Returns registrant org, registration country, abuse contacts, allocation date. Use for IP ownership, abuse-response, network forensics.
- 2026-10-17 `recall` removed
  - Retrieve a value previously saved via remember, or list all saved keys (omit the key argument). Use to look up context the agent stored earlier — the user's target ticker, an address, prior research notes — without re-deriving it from scratch. Scoped to your identifier (anonymous IP, BYO key hash, or account ID). Pair with remember to save, forget to delete.
- 2026-10-17 `pipeworx_trending` removed
  - What other AI agents are calling on Pipeworx right now. Returns the top tools, top packs, and total call volume over a recent window (24h, 7d, or 30d). Useful for: (1) discovering what data sources are hot for current events, (2) confirming a popular tool is the canonical choice before asking your own question, (3) seeing whether your use case aligns with what most agents need. Self-aggregating signal — derived from CF analytics-engine, no PII, just (pack, tool, count). Cached 5min-1h depending on window.
- 2026-10-17 `classify_row` removed
  - Cheap categorization: given a company and a list of candidate labels, decide which labels apply — the most common GTM/AI usage shape (tagging a list by industry, ICP fit, etc.), one small model call. Same evidence contract as research_row: each label comes back {label, applies, evidence_url, quote, status: found|inferred|not_established} — "found" only when the model's quote is independently verified as a verbatim substring of the text used. Pass text directly (cheapest — no fetch) or entity.domain to fetch the homepage once as a fallback. No text and no domain means every label is not_established with no model call made.
- 2026-10-17 `research_row` removed
  - Claygent-style per-row research: answer ONE question about ONE company and return a JSON object matching your output_schema, with every field wrapped in its own evidence — {value, evidence_url, quote, status}. status is NEVER self-reported by the model: "found" means this code independently verified the model's quote is a VERBATIM substring of text actually fetched; "inferred" means a value was given but the quote could not be verified; "not_established" means no source answered the field, and its value is always null — never guessed, never a blended score. Sources: "web" fetches the company's own site (entity.domain required — homepage, /about, /leadership) via fetch_url; "catalog" checks entity_profile (SEC EDGAR; resolved:false for a private company is expected, not a failure); "both" (default) tries both. max_cost (USD, default 0.02, max 0.50) scales how many pages are fetched and refuses up front if it is too small to pay for even one extraction call (floor $0.002) — never silently overspends. A row where every source comes back empty costs nothing: every field is mechanically not_established with NO model call made. For a boolean/derived field (e.g. "does this company sell to healthcare"), the quote only has to SUPPORT the value — a descriptive sentence about customers/products counts, the source need not state the answer verbatim. leadership_page_status ("fetched"|"not_found"|"not_attempted", plus leadership_note) says plainly whether a leadership/team page was actually read, so a named-person field (head_of_sales) coming back not_established is distinguishable from "this company just doesn't publish one" vs. "we never checked". model_output_empty:true means the model returned nothing usable (a transport/budget problem) — every field is not_established for THAT reason, never read as 20 individual "no" judgments. Use with a fixed question + schema across many rows for "Claygent over N companies with a hard cost cap" (composes with batch callers). For picking from a fixed label list instead of extracting open fields, use classify_row (cheaper, one model call).

Full history: https://api.protogrid.dev/v1/servers/io.github.pipeworx-io%2Fripe-stat/changes

## Remotes

- https://gateway.pipeworx.io/ripe-stat/mcp (streamable-http, auth none, reachable true, uptime30d 0.9655172)

## Packages

_none_

## Tools (0)

_none observed_
