bgphorizon-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BGPHORIZON_API_KEY | Yes | BGPHorizon API key, used as Authorization: Bearer. Required to authenticate. | |
| BGPHORIZON_API_URL | No | BGPHorizon base URL. Set to point at a non-production API. | https://bgphorizon.com |
| BGPHORIZON_TIMEOUT | No | Per-request timeout in seconds. | 30 |
| BGPHORIZON_LOG_LEVEL | No | Log level. DEBUG surfaces every upstream request. | INFO |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| identifyA | Who is this ASN or prefix? Registry, RPKI, IRR and PeeringDB in one call. The right first step in almost any investigation. Give either |
| inventoryA | What does this ASN announce, and does it stick? Returns each prefix with a server-computed persistence classification (persistent | intermittent | transient). Do not infer persistence from first_seen — use this. |
| timelineA | Counts over time for |
| origin_historyA | Day-by-day origins for a prefix — THE persistence check. Returns each day's origin set, MOAS days, and classified transitions (handover vs episode vs intermittent). This is the direct fix for mistaking a transient blip for a migration. |
| reachabilityA | How many observing peers had no route, and when. Returns an event-driven series plus server-computed outage windows (>=5% of peers routeless). Accepts multiple prefixes so a multi-prefix event resolves in one call. Keep the window tight — this reads raw events. |
| detectionsB | Platform findings for an ASN or prefix, with direction made explicit.
|
| pathsC | Transit structure for a prefix with prepending resolved: immediate upstreams and their share, plus top paths with collapsed_path / prepend_count. |
| relationshipsA | An ASN's transit hierarchy over a window: upstreams (its providers) and downstreams (its customers), plus observed neighbours whose relationship is unknown. Relationships are inferred provider->customer, Tier-1-anchored (~94% agreement
with CAIDA). Peering is NOT inferred: This is the transit TOPOLOGY (who provides transit to whom). For observed USAGE —
which of those upstreams actually carry the network's routes and how lopsided that
is — use |
| path_diversityA | How an origin's announcements FAN OUT through its upstreams toward our collectors — the observed propagation / path-diversity tree, weighted by how many vantage points take each branch. Built ONLY from real observed AS paths (no inference), so it answers with high
confidence: which upstreams actually carry this network's routes, and how
lopsided that is. Each level-1 branch's Pass NOT a traceroute: this is the control-plane spread of routes across upstreams as
seen from route collectors, not the data-plane path a packet takes (peering and
IXP handoffs are invisible to collectors). |
| translate_communitiesA | Translate raw BGP community strings (e.g. "3356:2065", "1299:2731") into their meaning, from a dictionary harvested from operators' own IRR objects, NLNOG, and the IANA/RFC well-knowns. Each result carries: |
| compare_windowsA | Baseline (window_a) vs event (window_b) for a target. Each window is
{from, to}. |
| locateA | Facility/IX intersection across an entity's upstreams — routing-only geolocation. Finds cities common to all upstreams' PeeringDB presence, which is far more reliable than GeoIP for leased/anycast space. Give a prefix (or an ASN, whose top prefix is used to derive upstreams). |
| subprefixesC | Announced more-specifics inside a block, plus an estimate of unrouted space — allocated addresses never seen in the table, the easiest kind to announce unnoticed. |
| events_sampleA | Bounded raw events for a NARROW window — last resort. Capped at 500 events; rejects windows over ~24h. Use only after timeline/reachability/origin_history have localised what you need to see at the message level. |
| platform_baselineA | Is today unusual, platform-wide? Aggregates recent anomalous detections so you can tell an ordinary busy day from a real event. Call this BEFORE describing anything as anomalous — an apparent spike is often just the platform's normal volume. |
| health_checkA | Full hygiene + exposure audit for an ASN you control — the single most valuable operator call. Checks RPKI/IRR coverage, MOAS, ROA max-length exposure, transit diversity and visibility, each with remediation. Sampling bounds the per-prefix checks to keep it fast. |
| validate_announcementA | Pre-flight: will announcing |
| visibilityA | Where can the internet see this prefix, and where can it not? Peer and collector reach, upstreams, and — the useful part — a ratio against sibling prefixes. Absolute peer counts mean little; a prefix seen by 40 peers when its siblings are seen by 330 is being filtered. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| investigate_entity | Full workup of an ASN or prefix — findings only, no prose report. |
| write_report | Complete HTML report following the house methodology and template. |
| triage_incident | Fast assessment: real event, measurement artifact, or nothing. |
| locate_infrastructure | Routing-only geolocation workup with a confidence assessment. |
| audit_my_network | Hygiene report for your ASN with a prioritised remediation list. |
| preflight_change | Go / no-go assessment for an announcement or renumbering. |
| explain_incident | Plain-language incident summary for a non-technical audience. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Detection types | Every detection type, its severity split, and how to read actor_as vs baseline_asns. |
| Route collectors | RouteViews / RIPE RIS collector inventory and how to use concentration metadata. |
| BGP glossary | BGP terms in plain language, reusable directly in report output. |
| Data horizon & caveats | Retention floor, rollup vs raw_events, and the first_seen trap. |
| Report template | The house HTML report skeleton, with the real house CSS already inlined — use it as-is, do not write substitute styles. |
| Report writing guide | House voice rules and the explicit 'avoid' table (em-dash density, 'not X but Y', observation-vs-inference, correction blocks). Read before writing. |
| Report QA checklist | The pre-publication pass every report must clear (claims trace to evidence, colour semantics, no unverified pattern-matching, live-badge accuracy). |
| Report methodology | The investigation procedure — evidence order and the checks that keep conclusions defensible. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bgphorizon/bgphorizon-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server