Developer resources / Model Context Protocol

Stealth,
via MCP.

Check NYC building availability, compare pricing, and order or request a review with customer approval.

Prefer to order on the website?
Client setup and sample requests VS Code / JSON-RPC

Connect a client

For VS Code, add this to .vscode/mcp.json using the VS Code configuration format:

{
  "servers": {
    "stealth": {
      "type": "http",
      "url": "https://stealth.net/mcp"
    }
  }
}

Start the server in your client, then ask it to retrieve Stealth’s current pricing. Other clients can use different configuration fields; connect their remote Streamable HTTP transport to the same URL. VS Code configuration reference .

Try read-only HTTP requests

These examples use the supported 2025-11-25 protocol. Initialize the client, send its initialized notification, then request pricing. They do not place an order or send an inquiry.

1. Initialize

curl --silent --show-error https://stealth.net/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2025-11-25' \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"stealth-example","version":"1.0.0"}}}'

2. Finish initialization

curl --silent --show-error https://stealth.net/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2025-11-25' \
  --data '{"jsonrpc":"2.0","method":"notifications/initialized"}'

The notification returns HTTP 202 with an empty body.

3. Read current pricing

curl --silent --show-error https://stealth.net/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2025-11-25' \
  --data '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_pricing","arguments":{}}}'

To check a building, replace the last request body with:

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "check_building_availability",
    "arguments": {"address": "50 Broad St", "borough": "Manhattan"}
  }
}

Use the returned address token to prepare an eligible order. A reviewed nearby office may receive a conditional order, subject to a site survey. For other addresses needing review, prepare an availability inquiry. Review the customer’s details and obtain approval before submission.

The tools

Check, order or ask.

Order eligible buildings or request a manual availability review.

Read-only

Check availability

check_building_availability

Find the building and confirm whether online ordering is available.

View input schema
{
    "type": "object",
    "properties": {
        "address": {
            "type": "string",
            "minLength": 5,
            "maxLength": 160,
            "description": "New York City street address, including the building number and street name."
        },
        "borough": {
            "type": "string",
            "enum": [
                "Manhattan",
                "Bronx",
                "Brooklyn",
                "Queens",
                "Staten Island"
            ],
            "description": "New York City borough containing the address; select one of the listed values."
        }
    },
    "required": [
        "address",
        "borough"
    ],
    "additionalProperties": false
}
Read-only

Get pricing

get_pricing

Retrieve current bandwidth prices, installation fees and service terms.

View input schema
{
    "type": "object",
    "properties": {},
    "required": [],
    "additionalProperties": false
}
Review

Prepare an order

prepare_order

Create a quote for the customer to review before ordering.

View input schema
{
    "type": "object",
    "properties": {
        "address_token": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "Signed address_token for the building explicitly selected from check_building_availability."
        },
        "speed": {
            "type": "integer",
            "enum": [
                1,
                2,
                10,
                25,
                100,
                400,
                800
            ],
            "description": "Requested Dedicated Internet bandwidth in Gbps; choose one of the listed values."
        }
    },
    "required": [
        "address_token",
        "speed"
    ],
    "additionalProperties": false
}
Creates an order

Place the order

place_order

Submit after the customer accepts the terms and confirms authority to order.

View input schema
{
    "type": "object",
    "properties": {
        "order_token": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "Signed, time-limited order_token from prepare_order for the offer the customer reviewed."
        },
        "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Name of the customer contact authorized to place the order."
        },
        "company": {
            "type": "string",
            "minLength": 1,
            "maxLength": 150,
            "description": "Legal or business name of the customer placing the order."
        },
        "email": {
            "type": "string",
            "minLength": 1,
            "maxLength": 254,
            "description": "Customer contact email address for the order confirmation."
        },
        "phone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40,
            "description": "Customer contact telephone number for the order."
        },
        "suite": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "description": "Floor, suite, or other location within the selected building."
        },
        "details": {
            "type": "string",
            "minLength": 0,
            "maxLength": 1500,
            "description": "Optional customer-provided notes relevant to the order."
        },
        "preferred_installation_date": {
            "type": "string",
            "maxLength": 10,
            "description": "Optional YYYY-MM-DD date, 4 to 90 calendar days from today in America/New_York. Stealth confirms scheduling."
        },
        "accept_terms": {
            "type": "boolean",
            "const": true,
            "description": "Set to true only after the actual customer explicitly accepts the reviewed service terms and charges."
        },
        "authorized_to_order": {
            "type": "boolean",
            "const": true,
            "description": "Set to true only after the actual customer explicitly confirms authorization to place this order."
        }
    },
    "required": [
        "order_token",
        "name",
        "company",
        "email",
        "phone",
        "suite",
        "accept_terms",
        "authorized_to_order"
    ],
    "additionalProperties": false
}

Need a manual review?

If an address is unverified or needs a service review without conditional-order eligibility, use the inquiry tools below. An inquiry reaches our team; it does not place an order or confirm service eligibility.

Review

Prepare an inquiry

prepare_availability_inquiry

Review an unverified address or a location that needs an availability review.

View input schema
{
    "type": "object",
    "properties": {
        "address_token": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "Signed address_token or inquiry_address_token returned by check_building_availability; use this instead of address and borough."
        },
        "address": {
            "type": "string",
            "minLength": 5,
            "maxLength": 160,
            "description": "New York City street address, including building number and street name; provide with borough instead of address_token."
        },
        "borough": {
            "type": "string",
            "enum": [
                "Manhattan",
                "Bronx",
                "Brooklyn",
                "Queens",
                "Staten Island"
            ],
            "description": "Borough containing the entered address; provide with address instead of address_token."
        },
        "speed": {
            "type": "integer",
            "enum": [
                0,
                1,
                2,
                10,
                25,
                100,
                400,
                800
            ],
            "default": 0,
            "description": "Requested bandwidth in Gbps; use 0 or omit when the customer is not sure yet."
        }
    },
    "required": [],
    "additionalProperties": false,
    "oneOf": [
        {
            "required": [
                "address_token"
            ],
            "not": {
                "anyOf": [
                    {
                        "required": [
                            "address"
                        ]
                    },
                    {
                        "required": [
                            "borough"
                        ]
                    }
                ]
            }
        },
        {
            "required": [
                "address",
                "borough"
            ],
            "not": {
                "required": [
                    "address_token"
                ]
            }
        }
    ]
}
Sends to Stealth

Send the inquiry

submit_availability_inquiry

Send the address, contact details and message after the customer approves.

View input schema
{
    "type": "object",
    "properties": {
        "inquiry_token": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "description": "Signed, time-limited inquiry_token returned by prepare_availability_inquiry."
        },
        "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Name of the customer contact requesting the availability review."
        },
        "email": {
            "type": "string",
            "minLength": 1,
            "maxLength": 254,
            "description": "Customer contact email address for the availability inquiry."
        },
        "company": {
            "type": "string",
            "minLength": 0,
            "maxLength": 150,
            "description": "Optional customer business or organization name."
        },
        "details": {
            "type": "string",
            "minLength": 0,
            "maxLength": 1500,
            "description": "Optional customer-provided message or details for the availability review."
        },
        "approve_submission": {
            "type": "boolean",
            "const": true,
            "description": "Set to true only after the actual customer explicitly approves sharing the reviewed inquiry and contact details with Stealth."
        }
    },
    "required": [
        "inquiry_token",
        "name",
        "email",
        "approve_submission"
    ],
    "additionalProperties": false
}
Dedicated Internet

Current pricing.

Monthly pricing is shared. Installation depends on the building’s connection status.

From / month
$850
Connected-building installation
$750
Initial term
12 months

No payment at checkout. Billing begins after installation.

$1,500 typical quoted installation at any listed speed; $750 for eligible online orders in connected buildings. Installation fees are one time.

Nearby orders remain subject to a site survey confirming feasibility, the route and timing. Any special construction charges or changed prices require separate approval before work begins.

All bandwidth options
Retrieve a fresh quote for the selected building before placing an order.
BandwidthMonthly price
1 Gbps$850 / month
2 Gbps$1,600 / month
10 Gbps$2,000 / month
25 Gbps$5,000 / month
100 Gbps$10,000 / month
400 Gbps$25,000 / month
800 Gbps$50,000 / month
Installation and service terms

Buildings already connected to Stealth have $750 one-time online installation. Nearby orders use the standard installation fee for the selected bandwidth. After the initial term: month to month at the same monthly price. Invoiced only after service is installed.

A Stealth specialist will follow up within one business day to confirm your installation schedule and coordinate building access.

For buildings already connected to Stealth, we complete in-building installation within five business days of your order, or on a later date you prefer.

For Nearby orders, the survey confirms feasibility, building access and the installation schedule. Additional special construction charges or changed prices require separate customer approval.

Cancel a standard order during installation, before service is installed and ready for use, with charges waived. Separately approved special construction has different cancellation terms.

Before submission

Customer approval comes first.

Orders: show the customer the address, bandwidth, monthly price, installation fee, term and service terms. Submit only after they explicitly accept and confirm authority to order.

Inquiries: review the address, contact details, message and data notice with the customer, then obtain approval to send.

Read the service order and terms

Read the conditional order terms

Order requirements and retries

Required: name, company, email, telephone and floor or suite. Notes and a preferred installation date are optional.

I am authorized to order on behalf of this company, and I have read and accept Stealth’s Terms of Service and this service order.

Set accept_terms and authorized_to_order to true only after that explicit approval. Never infer acceptance from a search or pricing question.

Address and order tokens expire after 30 minutes. Changed eligibility, prices or terms require fresh review. Within that window, retry with the same order token to retrieve the original accepted reference.

If a token expires after a placement attempt, contact Stealth to confirm acceptance before preparing another order.

A connected-building order returns accepted. A Nearby order returns pending_survey and retains the displayed standard installation fee; feasibility and timing remain subject to survey. Both retain the saved reference, address, floor or suite, bandwidth, monthly price, installation fee and applicable terms, and queue staff and customer confirmations.

Inquiry requirements and retries

Prepare a review with an address token, or the entered address and NYC borough. Bandwidth is optional. Review the returned address and data notice, then collect the customer’s name and email; company and message are optional.

Send with the returned inquiry_token and approve_submission: true only after the customer approves. A successful inquiry returns an inquiry reference, with is_order: false.

Inquiry tokens expire after 30 minutes. Reuse the same token when retrying a submission to retrieve the original reference. If it expires after an attempt, contact Stealth before preparing another request.

Our team will review availability and the installation scope. An inquiry confirms neither service eligibility nor an installation date.

Protocol, limits and privacy Technical reference
Protocol
2026-07-28 uses server/discover. Legacy 2025-11-25 and 2025-06-18 use initialize. Discover tools with tools/list and invoke them with tools/call.
Transport
HTTPS POST to /mcp, with JSON-RPC and the headers and metadata required by your MCP version. JSON responses; no event streams or session cookies.
Limits and recovery
32 KiB per request. Request, inquiry and order limits are shared with the website. Respect retry instructions and retain the original order or inquiry token. A tool error does not confirm acceptance; keep the saved reference from a successful submission.
Client access
Use a native or server-side Streamable HTTP client. Browser requests are restricted to Stealth’s own origins.
Order records
Contact details follow our existing ordering process. The submitting client’s network address and User-Agent identify the connection and do not verify the customer’s identity. Email-domain validation checks routing, rather than mailbox ownership.

MCP documentation · Integration questions