Koskamo

The Networkery MCP

An official MCP server providing AI assistants with read-only access to network diagnostic tools including DNS, email authentication, TLS/SSL, BGP/RPKI, WHOIS, and subnet calculators, returning plain-English verdicts and fixes.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

The Networkery MCP logo, by The NetworkeryVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by The Networkery
MCP endpoint (Streamable HTTP)
https://thenetworkery.com/mcp
Vendor documentation

What you can do with it

  • Check DNS records and propagation for a domain
  • Verify email security settings like SPF and DMARC
  • Inspect SSL/TLS certificates and HTTP headers
  • Look up ASN, BGP prefixes, and RPKI status

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
thenetworkery 1.0.0
MCP protocol
2025-06-18
Tools
30 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Network diagnostics from thenetworkery: DNS lookups, email authentication (SPF/DKIM/DMARC/MTA-STS), RDAP/WHOIS, subnet maths and more, plus webhook URLs that record the requests sent to them (create_webhook_url, list_webhook_requests, get_webhook_request). Each tool returns a verdict, findings with plain-English fixes and suggested records, and the raw data. The diagnostic tools only read public information; they do not change anything.

Tools

30 advertised

domain_report — Domain health report
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

DNS, DNSSEC, email security, blocklists, certificates, HTTPS and registration in one scored report, with what to fix first. Inputs – domain: Domain. Results include plain-English findings with fixes and a shareable link.

domain_report input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain (e.g. example.com)"
    }
  }
}
domain_report annotations
{
  "title": "Domain health report",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
dns_lookup — DNS lookup
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Every record for a name, straight from its authoritative nameservers or from a public resolver, with plain-English notes. Inputs – name: Domain or host name; type: Record type; resolver: Resolver. Results include plain-English findings with fixes and a shareable link.

dns_lookup input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Domain or host name (e.g. example.com)"
    },
    "type": {
      "enum": [
        "ALL",
        "A",
        "AAAA",
        "CNAME",
        "MX",
        "NS",
        "TXT",
        "SOA",
        "CAA",
        "SRV",
        "PTR",
        "HTTPS",
        "TLSA",
        "DS",
        "DNSKEY"
      ],
      "type": "string",
      "default": "ALL",
      "description": "Record type"
    },
    "resolver": {
      "enum": [
        "authoritative",
        "cloudflare",
        "google",
        "quad9"
      ],
      "type": "string",
      "default": "authoritative",
      "description": "Resolver"
    }
  }
}
dns_lookup annotations
{
  "title": "DNS lookup",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
dns_propagation — DNS propagation check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Ask 13 public resolvers around the world the same question and see who has your change. Inputs – name: Domain or host name; type: Record type. Results include plain-English findings with fixes and a shareable link.

dns_propagation input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Domain or host name (e.g. www.example.com)"
    },
    "type": {
      "enum": [
        "A",
        "AAAA",
        "CNAME",
        "MX",
        "NS",
        "TXT",
        "SOA",
        "CAA",
        "SRV",
        "PTR",
        "HTTPS",
        "TLSA",
        "DS",
        "DNSKEY"
      ],
      "type": "string",
      "default": "A",
      "description": "Record type"
    }
  }
}
dns_propagation annotations
{
  "title": "DNS propagation check",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
dnssec — DNSSEC check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Is the zone signed, does the chain of trust validate, and are the algorithms current? Inputs – name: Domain. Results include plain-English findings with fixes and a shareable link.

dnssec input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Domain (e.g. example.com)"
    }
  }
}
dnssec annotations
{
  "title": "DNSSEC check",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
nameserver_check — Nameserver health check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Tests every nameserver of a domain directly: lame or unreachable servers, NS and glue mismatches, SOA serials, open recursion, TCP and EDNS. Inputs – zone: Domain. Results include plain-English findings with fixes and a shareable link.

nameserver_check input schema
{
  "type": "object",
  "required": [
    "zone"
  ],
  "properties": {
    "zone": {
      "type": "string",
      "description": "Domain (e.g. example.com)"
    }
  }
}
nameserver_check annotations
{
  "title": "Nameserver health check",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
email_auth — Email security check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

SPF, DKIM, DMARC, MTA-STS, TLS-RPT and BIMI graded, with the exact records to fix what is missing. Inputs – domain: Domain. Results include plain-English findings with fixes and a shareable link.

email_auth input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain (e.g. example.com)"
    }
  }
}
email_auth annotations
{
  "title": "Email security check",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
email_headers — Email header analyser
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Paste a message's headers to see its route and delays, SPF, DKIM and DMARC results with alignment, and why it may have gone to spam. Inputs – headers: Message headers. Results include plain-English findings with fixes and a shareable link.

email_headers input schema
{
  "type": "object",
  "required": [
    "headers"
  ],
  "properties": {
    "headers": {
      "type": "string",
      "description": "Message headers (e.g. Received: from …\nAuthentication-Results: …\nFrom: …)"
    }
  }
}
email_headers annotations
{
  "title": "Email header analyser",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
spf_builder — SPF record builder
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Pick the services that send your mail and get one SPF record, its DNS lookup count and a comparison with the record you publish now. Inputs – domain: Domain; all: Mail from anywhere else; providers: Services that send mail as this domain; extra: Extra entries (optional). Results include plain-English findings with fixes and a shareable link.

spf_builder input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "all": {
      "enum": [
        "~all",
        "-all"
      ],
      "type": "string",
      "default": "~all",
      "description": "Mail from anywhere else"
    },
    "extra": {
      "type": "string",
      "description": "Extra entries (optional) (e.g. ip4:192.0.2.10 ip6:2001:db8::/48 include:_spf.example.net)"
    },
    "domain": {
      "type": "string",
      "description": "Domain (e.g. example.com)"
    },
    "providers": {
      "type": "string",
      "description": "Services that send mail as this domain"
    }
  }
}
spf_builder annotations
{
  "title": "SPF record builder",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
dmarc_builder — DMARC record builder
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Choose a policy, report addresses and alignment and get a DMARC record with every tag explained, compared with the one you publish now. Inputs – domain: Domain; p: Policy (p); sp: Subdomain policy (sp); rua: Aggregate reports to (rua); ruf: Failure reports to (ruf, optional); adkim: DKIM alignment (adkim); aspf: SPF alignment (aspf); t: Test mode (t); pct: pct (legacy, optional). Results include plain-English findings with fixes and a shareable link.

dmarc_builder input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "p": {
      "enum": [
        "none",
        "quarantine",
        "reject"
      ],
      "type": "string",
      "default": "none",
      "description": "Policy (p)"
    },
    "t": {
      "enum": [
        "n",
        "y"
      ],
      "type": "string",
      "default": "n",
      "description": "Test mode (t)"
    },
    "sp": {
      "enum": [
        "",
        "none",
        "quarantine",
        "reject"
      ],
      "type": "string",
      "default": "",
      "description": "Subdomain policy (sp)"
    },
    "pct": {
      "type": "string",
      "description": "pct (legacy, optional) (e.g. 100)"
    },
    "rua": {
      "type": "string",
      "description": "Aggregate reports to (rua) (e.g. dmarc-reports@example.com)"
    },
    "ruf": {
      "type": "string",
      "description": "Failure reports to (ruf, optional) (e.g. dmarc-failures@example.com)"
    },
    "aspf": {
      "enum": [
        "r",
        "s"
      ],
      "type": "string",
      "default": "r",
      "description": "SPF alignment (aspf)"
    },
    "adkim": {
      "enum": [
        "r",
        "s"
      ],
      "type": "string",
      "default": "r",
      "description": "DKIM alignment (adkim)"
    },
    "domain": {
      "type": "string",
      "description": "Domain (e.g. example.com)"
    }
  }
}
dmarc_builder annotations
{
  "title": "DMARC record builder",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
blacklist — Blacklist check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Is an IP, a domain or its mail servers on the spam blocklists receivers use – and how to get delisted. Inputs – target: IP address or domain. Results include plain-English findings with fixes and a shareable link.

blacklist input schema
{
  "type": "object",
  "required": [
    "target"
  ],
  "properties": {
    "target": {
      "type": "string",
      "description": "IP address or domain (e.g. 192.0.2.10 or example.com)"
    }
  }
}
blacklist annotations
{
  "title": "Blacklist check",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
ssl_check — SSL/TLS certificate check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Certificate, chain, expiry, hostname match, key strength and the TLS version a server negotiates. Inputs – host: Host name; port: Port. Results include plain-English findings with fixes and a shareable link.

ssl_check input schema
{
  "type": "object",
  "required": [
    "host"
  ],
  "properties": {
    "host": {
      "type": "string",
      "description": "Host name (e.g. example.com)"
    },
    "port": {
      "enum": [
        "443",
        "8443",
        "465",
        "993",
        "995",
        "636",
        "853",
        "5061"
      ],
      "type": "string",
      "default": "443",
      "description": "Port"
    }
  }
}
ssl_check annotations
{
  "title": "SSL/TLS certificate check",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
http_headers — HTTP headers & security check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Redirect chain, response headers and a graded check of HSTS, CSP and the other security headers. Inputs – url: URL or host name. Results include plain-English findings with fixes and a shareable link.

http_headers input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "URL or host name (e.g. https://example.com)"
    }
  }
}
http_headers annotations
{
  "title": "HTTP headers & security check",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
ct_search — Certificate Transparency search
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Every publicly logged certificate for a domain and its subdomains – find forgotten hosts and unexpected issuers. Inputs – domain: Domain. Results include plain-English findings with fixes and a shareable link.

ct_search input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain (e.g. example.com)"
    }
  }
}
ct_search annotations
{
  "title": "Certificate Transparency search",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
whois — WHOIS / RDAP lookup
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Who holds a domain, IP address or AS number – from the registry, via RDAP. Inputs – query: Domain, IP, prefix or AS number. Results include plain-English findings with fixes and a shareable link.

whois input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Domain, IP, prefix or AS number (e.g. example.com, 1.1.1.1, AS13335)"
    }
  }
}
whois annotations
{
  "title": "WHOIS / RDAP lookup",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
bgp — ASN & BGP prefix lookup
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Origin AS, visibility, RPKI validity, upstreams and announced prefixes from the global routing table. Inputs – query: AS number, IP address or prefix. Results include plain-English findings with fixes and a shareable link.

bgp input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "AS number, IP address or prefix (e.g. AS13335 or 1.1.1.0/24)"
    }
  }
}
bgp annotations
{
  "title": "ASN & BGP prefix lookup",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
rpki — RPKI / ROA validator
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Is a route RPKI valid, invalid or not found? The ROAs covering a prefix, max-length mistakes and how to fix them. Inputs – prefix: Prefix; asn: Origin AS (optional). Results include plain-English findings with fixes and a shareable link.

rpki input schema
{
  "type": "object",
  "required": [
    "prefix"
  ],
  "properties": {
    "asn": {
      "type": "string",
      "description": "Origin AS (optional) (e.g. AS64500)"
    },
    "prefix": {
      "type": "string",
      "description": "Prefix (e.g. 192.0.2.0/24)"
    }
  }
}
rpki annotations
{
  "title": "RPKI / ROA validator",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
peeringdb — PeeringDB lookup
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

A network’s peering policy, internet exchange ports, facilities and NOC contacts from PeeringDB. Inputs – asn: AS number. Results include plain-English findings with fixes and a shareable link.

peeringdb input schema
{
  "type": "object",
  "required": [
    "asn"
  ],
  "properties": {
    "asn": {
      "type": "string",
      "description": "AS number (e.g. AS64500)"
    }
  }
}
peeringdb annotations
{
  "title": "PeeringDB lookup",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
reverse_dns — Reverse DNS (PTR) check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

The PTR name of an IP address, whether it resolves back to the same IP (FCrDNS), and whether it looks generic. Inputs – query: IP address or host name. Results include plain-English findings with fixes and a shareable link.

reverse_dns input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "IP address or host name (e.g. 192.0.2.25 or mail.example.com)"
    }
  }
}
reverse_dns annotations
{
  "title": "Reverse DNS (PTR) check",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
port_check — Open port check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Is a TCP port open, closed or filtered when reached from the internet? One connection from our server, timed. Inputs – host: Host name or IP address; port: TCP port. Results include plain-English findings with fixes and a shareable link.

port_check input schema
{
  "type": "object",
  "required": [
    "host",
    "port"
  ],
  "properties": {
    "host": {
      "type": "string",
      "description": "Host name or IP address (e.g. example.com)"
    },
    "port": {
      "type": "string",
      "description": "TCP port (e.g. 443)"
    }
  }
}
port_check annotations
{
  "title": "Open port check",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
subnet_calculator — Subnet calculator
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

IPv4 and IPv6 prefixes: ranges, masks, host counts, reverse zones and splitting. Inputs – cidr: Address or prefix; split: Split into prefix length (optional). Results include plain-English findings with fixes and a shareable link.

subnet_calculator input schema
{
  "type": "object",
  "required": [
    "cidr"
  ],
  "properties": {
    "cidr": {
      "type": "string",
      "description": "Address or prefix (e.g. 192.168.10.0/24 or 2001:db8::/48)"
    },
    "split": {
      "type": "string",
      "description": "Split into prefix length (optional) (e.g. 26)"
    }
  }
}
subnet_calculator annotations
{
  "title": "Subnet calculator",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
ipv6_tools — IPv6 address tools
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Expand and compress IPv6 addresses, see their type, convert MAC addresses to EUI-64 and back, and get the ip6.arpa name. Inputs – address: IPv6 address or MAC address; prefix: Prefix for EUI-64 (optional). Results include plain-English findings with fixes and a shareable link.

ipv6_tools input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "prefix": {
      "type": "string",
      "description": "Prefix for EUI-64 (optional) (e.g. fe80::/64)"
    },
    "address": {
      "type": "string",
      "description": "IPv6 address or MAC address (e.g. 2001:db8::1 or 00:1a:2b:3c:4d:5e)"
    }
  }
}
ipv6_tools annotations
{
  "title": "IPv6 address tools",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
cidr_merge — CIDR aggregation
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Merge a list of IPs, ranges and CIDRs into the fewest prefixes, subtract ranges, and turn start–end ranges into CIDRs. Inputs – list: Addresses, ranges and CIDRs (one per line); exclude: Exclude (optional). Results include plain-English findings with fixes and a shareable link.

cidr_merge input schema
{
  "type": "object",
  "required": [
    "list"
  ],
  "properties": {
    "list": {
      "type": "string",
      "description": "Addresses, ranges and CIDRs (one per line) (e.g. 192.0.2.0/25\n192.0.2.128/25\n198.51.100.10-198.51.100.20\n2001:db8::/33\n2001:db8:8000::/33)"
    },
    "exclude": {
      "type": "string",
      "description": "Exclude (optional) (e.g. 192.0.2.64/26)"
    }
  }
}
cidr_merge annotations
{
  "title": "CIDR aggregation",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
mcp_server_test — MCP server tester
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Connect to a remote MCP server like an AI assistant would: handshake, tools, resources, prompts, OAuth discovery and context cost, checked against the spec. Inputs – url: MCP server URL; token: Bearer token (optional, never stored); tool: Call a tool (optional); arguments: Tool arguments as JSON (optional). Results include plain-English findings with fixes and a shareable link.

mcp_server_test input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "MCP server URL (e.g. https://example.com/mcp)"
    },
    "tool": {
      "type": "string",
      "description": "Call a tool (optional) (e.g. tool_name)"
    },
    "token": {
      "type": "string",
      "description": "Bearer token (optional, never stored) (e.g. sk-…)"
    },
    "arguments": {
      "type": "string",
      "description": "Tool arguments as JSON (optional) (e.g. {\"query\": \"example\"})"
    }
  }
}
mcp_server_test annotations
{
  "title": "MCP server tester",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
mac_lookup — MAC address vendor lookup
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Who made a network card, from the IEEE registry – and whether the address is randomised. Inputs – mac: MAC address or prefix. Results include plain-English findings with fixes and a shareable link.

mac_lookup input schema
{
  "type": "object",
  "required": [
    "mac"
  ],
  "properties": {
    "mac": {
      "type": "string",
      "description": "MAC address or prefix (e.g. 00:1A:2B:3C:4D:5E)"
    }
  }
}
mac_lookup annotations
{
  "title": "MAC address vendor lookup",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
dn42_registry — DN42 registry search
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Look up any DN42 object – AS, IP, prefix, maintainer, person or .dn42 domain – with everything linked to it. Inputs – query: AS number, IP, prefix, maintainer, person or domain. Results include plain-English findings with fixes and a shareable link.

dn42_registry input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "AS number, IP, prefix, maintainer, person or domain (e.g. AS4242421711, 172.23.141.33, THENETWORKERY-MNT)"
    }
  }
}
dn42_registry annotations
{
  "title": "DN42 registry search",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
dn42_free — DN42 free resource finder
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Unregistered AS numbers, free IPv4 blocks and a random unused IPv6 /48 – checked against the live registry. Inputs – size: IPv4 block size. Results include plain-English findings with fixes and a shareable link.

dn42_free input schema
{
  "type": "object",
  "properties": {
    "size": {
      "enum": [
        "29",
        "28",
        "27",
        "26",
        "25",
        "24"
      ],
      "type": "string",
      "default": "27",
      "description": "IPv4 block size"
    }
  }
}
dn42_free annotations
{
  "title": "DN42 free resource finder",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
dn42_peering_config — DN42 peering config generator
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

WireGuard, BIRD 2 and RouterOS 7 configs for a DN42 peering, following the wiki conventions. Inputs – our_asn: Your AS number; peer_asn: Peer AS number; peer_ll6: Peer link-local IPv6; our_ll6: Your link-local IPv6 (optional); peer_ipv4: Peer tunnel IPv4 (optional); our_ipv4: Your DN42 IPv4 (optional); endpoint: Peer endpoint host:port (optional); peer_pubkey: Peer WireGuard public key (optional); enh: Session type. Results include plain-English findings with fixes and a shareable link.

dn42_peering_config input schema
{
  "type": "object",
  "required": [
    "our_asn",
    "peer_asn",
    "peer_ll6"
  ],
  "properties": {
    "enh": {
      "enum": [
        "yes",
        "no"
      ],
      "type": "string",
      "default": "yes",
      "description": "Session type"
    },
    "our_asn": {
      "type": "string",
      "description": "Your AS number (e.g. 4242421711)"
    },
    "our_ll6": {
      "type": "string",
      "description": "Your link-local IPv6 (optional) (e.g. fe80::1711)"
    },
    "endpoint": {
      "type": "string",
      "description": "Peer endpoint host:port (optional) (e.g. uk1.example.net:21711)"
    },
    "our_ipv4": {
      "type": "string",
      "description": "Your DN42 IPv4 (optional) (e.g. 172.23.141.33)"
    },
    "peer_asn": {
      "type": "string",
      "description": "Peer AS number (e.g. 4242423914)"
    },
    "peer_ll6": {
      "type": "string",
      "description": "Peer link-local IPv6 (e.g. fe80::3914)"
    },
    "peer_ipv4": {
      "type": "string",
      "description": "Peer tunnel IPv4 (optional) (e.g. 172.20.53.97)"
    },
    "peer_pubkey": {
      "type": "string",
      "description": "Peer WireGuard public key (optional) (e.g. base64…=)"
    }
  }
}
dn42_peering_config annotations
{
  "title": "DN42 peering config generator",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
create_webhook_url — Create a webhook URL
Advertised by the server during the last successful anonymous check.
Open-world

Creates a public HTTPS URL that records every request sent to it (any method, any sub-path, headers, query and body), so you can receive webhooks and callbacks without a server of your own. Use it when something needs a URL to call back – a payment provider, a CI job, an OAuth or API integration, your own code under test – then give that URL to the sender and read what arrived with list_webhook_requests. Returns the capture URL, the bin id and a secret key (pass both to the other webhook tools), a private page link for a person to watch requests live in a browser, and the expiry (7 days). The URL answers every request with HTTP 200 {"ok":true} unless you set response_status/response_type/response_body.

create_webhook_url input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Optional label for the bin, e.g. what it is for (at most 80 characters)."
    },
    "response_body": {
      "type": "string",
      "description": "Body of the answer. Default {\"ok\":true}."
    },
    "response_type": {
      "enum": [
        "application/json",
        "text/plain",
        "application/xml",
        "text/xml",
        "text/csv",
        "application/x-www-form-urlencoded"
      ],
      "type": "string",
      "description": "Content-Type of the answer. Default application/json."
    },
    "response_status": {
      "type": "integer",
      "maximum": 599,
      "minimum": 200,
      "description": "HTTP status the URL answers with. Default 200."
    }
  }
}
create_webhook_url annotations
{
  "title": "Create a webhook URL",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
list_webhook_requests — List requests received by a webhook URL
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the requests a webhook URL from create_webhook_url has received, oldest first, with method, path, query, headers and body (long bodies shortened; get_webhook_request has them in full). Pass after_id = the last id you have seen to get only newer requests; the answer ends with the id to use next time. Set wait_seconds (up to 10) to wait briefly for a request to arrive, e.g. right after triggering the sender; for longer waits call it again rather than waiting in one call.

list_webhook_requests input schema
{
  "type": "object",
  "required": [
    "bin"
  ],
  "properties": {
    "bin": {
      "type": "string",
      "description": "The bin id from create_webhook_url (e.g. abc123def456). Its capture URL or private bin page URL also work."
    },
    "key": {
      "type": "string",
      "description": "The bin's secret key from create_webhook_url. Not needed if \"bin\" is the private bin page URL, which contains it."
    },
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Most requests to return. Default 10."
    },
    "after_id": {
      "type": "integer",
      "minimum": 0,
      "description": "Only requests with a higher id than this. Default 0: from the oldest kept request."
    },
    "wait_seconds": {
      "type": "integer",
      "maximum": 10,
      "minimum": 0,
      "description": "If nothing newer has arrived yet, wait up to this many seconds for it. Default 0 (answer at once)."
    }
  }
}
list_webhook_requests annotations
{
  "title": "List requests received by a webhook URL",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_webhook_request — Get one request received by a webhook URL
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns one request captured by a webhook URL from create_webhook_url, in full: method, path, query, every header the sender set, the body (base64 if it is binary), and a curl command that sends the same request again. Use it after list_webhook_requests when you need the exact bytes, e.g. to check a signature header against the body.

get_webhook_request input schema
{
  "type": "object",
  "required": [
    "bin",
    "request_id"
  ],
  "properties": {
    "bin": {
      "type": "string",
      "description": "The bin id from create_webhook_url (e.g. abc123def456). Its capture URL or private bin page URL also work."
    },
    "key": {
      "type": "string",
      "description": "The bin's secret key from create_webhook_url. Not needed if \"bin\" is the private bin page URL, which contains it."
    },
    "request_id": {
      "type": "integer",
      "minimum": 1,
      "description": "The request id (the #number from list_webhook_requests)."
    }
  }
}
get_webhook_request annotations
{
  "title": "Get one request received by a webhook URL",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
2234 ms
95th percentile latency
2234 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 2234 ms · metadata changed · 30 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http the-networkery-mcp https://thenetworkery.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add the-networkery-mcp --url https://thenetworkery.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable the-networkery-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "the-networkery-mcp": {
      "url": "https://thenetworkery.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "the-networkery-mcp": {
      "type": "streamableHttp",
      "url": "https://thenetworkery.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start the-networkery-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "the-networkery-mcp": {
      "type": "http",
      "url": "https://thenetworkery.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http the-networkery-mcp https://thenetworkery.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "the-networkery-mcp": {
      "url": "https://thenetworkery.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "the-networkery-mcp": {
      "serverUrl": "https://thenetworkery.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like The Networkery MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run The Networkery MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing