AnchoredIP

Dedicated static outbound IPv4 over WireGuard. Free 7-day trial, no card, no sales call.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
89%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,264Tokens (tool definitions)
~992 BTypical response size
Moderate attention impact (0.99% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "anchoredip": {
      "url": "https://api.anchoredip.com/api/mcp/"
    }
  }
}

Remote endpoints

https://api.anchoredip.com/api/mcp/streamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_plans

The published catalogue with live prices and which payment methods each plan accepts. Prices are never hardcoded; read them here.

Input Schema

{
  "type": "object",
  "properties": {}
}
⚪order_lease(plan, organization_name, country, billing_email)

Place an order. The trial plan is free and activates immediately; paid plans return payment details and stay pending until settled. No account or card is needed to order. A second trial for the same billing email is refused — order a paid plan instead, which needs no approval.

Input Schema

{
  "type": "object",
  "properties": {
    "plan": {
      "type": "string",
      "description": "Slug from list_plans."
    },
    "organization_name": {
      "type": "string"
    },
    "country": {
      "type": "string",
      "description": "ISO 3166-1 alpha-2."
    },
    "billing_email": {
      "type": "string"
    }
  },
  "required": [
    "plan",
    "organization_name",
    "country",
    "billing_email"
  ]
}
⚪lease_status(access_token)

Everything about one lease: whether it is active, which addresses it holds, its tunnels and when it renews.

Input Schema

{
  "type": "object",
  "properties": {
    "access_token": {
      "type": "string",
      "description": "Returned by order_lease. The only credential for a lease."
    }
  },
  "required": [
    "access_token"
  ]
}
🟡create_tunnel(access_token, routing_mode, destinations, transport, label)

Provision a peer and return its WireGuard configuration. Three routing modes, and the right one depends on the machine. source (the default) sends only traffic from the leased address through us and leaves the default route alone — but it is written with wg-quick PostUp rules that invoke `ip`, so it runs on Linux under wg-quick and nowhere else. On macOS it aborts and deletes the interface. full works in every client but claims the default route, so it cannot run beside an always-on corporate VPN. destinations routes only the addresses you name. It needs no PostUp and takes no default route, so it runs in any client on any platform, and it matches what is usually being bought — one partner seeing a fixed address. It survives beside a VPN that installs a default route, but not one that captures traffic below the routing table. It cannot receive inbound connections from anywhere but those destinations.

Input Schema

{
  "type": "object",
  "properties": {
    "access_token": {
      "type": "string",
      "description": "Returned by order_lease. The only credential for a lease."
    },
    "routing_mode": {
      "type": "string",
      "enum": [
        "source",
        "full",
        "destinations"
      ],
      "description": "Defaults to source, which is Linux only. Use destinations when the machine is not a Linux server, or when only certain partners need to see the address."
    },
    "destinations": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Addresses or ranges to route through the tunnel, like 203.0.113.10 or 203.0.113.0/24. Required with routing_mode=destinations and rejected without it. Ask the user which partner requires the address rather than guessing a range."
    },
    "transport": {
      "type": "string",
      "enum": [
        "wireguard",
        "amneziawg"
      ],
      "description": "Defaults to wireguard. Use amneziawg where deep packet inspection blocks a plain WireGuard handshake; it needs an AmneziaWG client rather than wg-quick."
    },
    "label": {
      "type": "string",
      "description": "For the customer's own reference."
    }
  },
  "required": [
    "access_token"
  ]
}
⚪revoke_tunnel(access_token, tunnel_id)

Retire a peer and hand its slot back to the plan's allowance. An agent that provisions a tunnel per short-lived worker and never revokes one exhausts the allowance and then cannot bring the next machine up. Revoking the peer that holds the public address stops inbound connections to it and cannot be undone by promoting another — only by bringing a new machine up.

Input Schema

{
  "type": "object",
  "properties": {
    "access_token": {
      "type": "string",
      "description": "Returned by order_lease. The only credential for a lease."
    },
    "tunnel_id": {
      "type": "integer",
      "description": "The id lease_status reports for the tunnel."
    }
  },
  "required": [
    "access_token",
    "tunnel_id"
  ]
}
⚪renew_lease(access_token, plan)

Raise an invoice for another term and keep the same addresses. This is how a trial becomes a paying customer: the address does not change, so whatever the customer's partner has already allowlisted goes on working. A trial cannot renew into itself, so name the plan to move to — called without one it returns the plans that can be moved to. Pressing it twice quotes the same reference rather than raising a second invoice.

Input Schema

{
  "type": "object",
  "properties": {
    "access_token": {
      "type": "string",
      "description": "Returned by order_lease. The only credential for a lease."
    },
    "plan": {
      "type": "string",
      "description": "Slug from list_plans. Defaults to the plan the lease is already on; required to leave a trial."
    }
  },
  "required": [
    "access_token"
  ]
}
🟡set_autorenew(access_token, enabled)

Stop this lease charging the customer's card again, or start it again. Only a card subscription can be stopped — a bank transfer is a payment the customer sends us, so there is nothing of ours to cancel. Stopping is not a cancellation: the lease runs to the end of the period already paid for, and the same call turns it back on.

Input Schema

{
  "type": "object",
  "properties": {
    "access_token": {
      "type": "string",
      "description": "Returned by order_lease. The only credential for a lease."
    },
    "enabled": {
      "type": "boolean",
      "description": "false stops the next charge, true resumes it."
    }
  },
  "required": [
    "access_token",
    "enabled"
  ]
}
🟡set_reverse_dns(access_token, address, hostname)

Publish a PTR record for an address on the lease. Live within a second; an empty hostname removes it.

Input Schema

{
  "type": "object",
  "properties": {
    "access_token": {
      "type": "string",
      "description": "Returned by order_lease. The only credential for a lease."
    },
    "address": {
      "type": "string"
    },
    "hostname": {
      "type": "string",
      "description": "Empty removes the record."
    }
  },
  "required": [
    "access_token",
    "address",
    "hostname"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools