_ registry / mcp streamable-http · checked 41m ago

shipstatic

https://mcp.shipstatic.com

Registry code: 1c80f0fb4b31deff

api record

ShipStatic deploys static websites instantly. Free, no account needed. Deploy straight away, and bring up an account only when the user asks to see or manage their sites, or to use their own domain.

To deploy: call deployments_upload with the files to publish. If you can run commands and the site is a folder on disk, publish it with the ShipStatic CLI instead: it reads the files from disk. The files need an `index.html` at the top: it's the page visitors see first, and a site without one is refused. To publish one page, name it `index.html`. To publish another kind of file, like a PDF, add a…

endpoint
https://mcp.shipstatic.com
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is shipstatic live?
Yes — it answered the hub's last check (checked 41m ago). It answered 99% of checks over the last 30 days.
Is shipstatic free to use?
Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
What tools does shipstatic have?
15 tools: domains_dns, domains_validate, domains_get, domains_share, domains_records, deployments_upload, deployments_list, deployments_get, ….
Is shipstatic safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
98.6%

90 days 99.1%· all time 99.1%

latency
265ms

last good check

priced tools
0

of 15 tools

_ answered our checks, 90 days 335 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
_ what it is for
used for
  • deploy a static website
  • connect a custom domain
  • get dns records for a domain
  • list deployments
takes → gives
code, documents → web pages, data
tools
9 reads6 changes data
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 15 tools
10 auth-required 5 never probed 10 of 15 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • deployments_upload changes data auth-required never probed

    Deploy a static site to a live URL: free, no account or API key required. **File content is plain text by default.** Pass HTML/CSS/JS/JSON/SVG/etc. directly in each file's `content` as a regular string. Only set `encoding: "base64"` per-file for binary content (images, fonts) — do not base64-encode text. Returns the live URL. Without a connected account, the response also includes a one-time claim URL, and the site expires in 3 days unless claimed. Pass `password` to make the site private.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "files"
      ],
      "properties": {
        "ttl": {
          "type": "number",
          "description": "Seconds until this deployment expires and the platform reclaims it; omit for one that never does. Only for authenticated deploys — an anonymous deployment already expires on the platform's schedule, and a requested ttl on one is refused. A deployment carrying a ttl cannot be linked to any domain: deploy without one if the site needs a domain."
        },
        "files": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "path",
              "content"
            ],
            "properties": {
              "path": {
                "type": "string",
                "description": "Relative path within the site (e.g. \"index.html\", \"assets/app.css\"). No leading slash; no parent-folder wrapping."
              },
              "content": {
                "type": "string",
                "description": "File content as a plain text string. For HTML, CSS, JS, JSON, SVG, plain text — pass directly with no encoding step. For binary files (images, fonts) ONLY, set this entry's `encoding: \"base64\"` and pass base64-encoded bytes."
              },
              "encoding": {
                "enum": [
                  "utf-8",
                  "base64"
                ],
                "type": "string",
                "description": "Defaults to `\"utf-8\"` (raw text). Set to `\"base64\"` ONLY for binary files. Never base64-encode text content — pass it as a plain string."
              }
            }
          },
          "description": "Files that make up the site. The site root is implied by these paths."
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels for organizing deployments (e.g. [\"env:production\", \"v1.2\"]). Each is a word, or a key and a value split by one \":\". Lowercase, 3-63 chars, allows . _ - inside a word. Up to 10."
        },
        "password": {
          "type": "string",
          "description": "Optional password to gate the deployment behind an unlock prompt (6–128 characters; whitespace significant). Visitors must enter this password before viewing the site, including on any custom domains pointing at it."
        },
        "idempotencyKey": {
          "type": "string",
          "description": "Makes this deploy replayable instead of repeatable. A deploy is not naturally idempotent: if a call times out you cannot tell \"it never landed\" from \"it landed and the response was lost\", and retrying creates a second deployment. Send the same key on the retry and you get back the deployment the first try made, if it went live in the last 24 hours. A key works only within the account that sent it: without an account it is ignored, and a retry deploys again. Key the ATTEMPT (a run id, a commit sha, a uuid minted before the first try), never one minted fresh on each retry, which would defeat the point."
        }
      }
    }
    arguments 57 lines
  • deployments_list reads auth-required never probed

    List all deployments with their URLs, status, labels, and password protection state. The response's `cursor` is null on the last page; pass it back as `cursor` to fetch the next.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 1,
          "description": "Maximum number of items to return in one page. Omit for the server default."
        },
        "cursor": {
          "type": "string",
          "description": "Opaque position from the previous response's `cursor` field; omit for the first page."
        }
      }
    }
    arguments 16 lines
  • deployments_get reads auth-required never probed

    Get deployment details including URL, status, file count, size, labels, and password protection state.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "deployment"
      ],
      "properties": {
        "deployment": {
          "type": "string",
          "description": "Deployment hostname (e.g. \"happy-cat-abc1234.shipstatic.com\"). Returned by deployments_upload or deployments_list."
        }
      }
    }
    arguments 13 lines
  • deployments_set changes data auth-required never probed

    Update deployment labels. Replaces all existing labels.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "deployment",
        "labels"
      ],
      "properties": {
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels to set. Replaces all existing labels. Pass empty array to clear."
        },
        "deployment": {
          "type": "string",
          "description": "Deployment hostname (e.g. \"happy-cat-abc1234.shipstatic.com\"). Use deployments_list to find deployments."
        }
      }
    }
    arguments 21 lines
  • deployments_delete changes data auth-required never probed

    Permanently deletes a deployment and its files.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "deployment"
      ],
      "properties": {
        "deployment": {
          "type": "string",
          "description": "Deployment hostname to delete (e.g. \"happy-cat-abc1234.shipstatic.com\")"
        }
      }
    }
    arguments 13 lines
  • domains_set changes data auth-required never probed

    Create or update a domain: a ShipStatic domain (e.g. "yourname.shipstatic.com"), live as soon as a deployment is linked, or a custom domain (e.g. "www.example.com"), which needs DNS records first. Can reserve a name (omit deployment), link it to a deployment, switch deployments, or update labels. For a custom domain, domains_records then returns the DNS records to configure.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "domain"
      ],
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name: a ShipStatic domain (e.g. \"yourname.shipstatic.com\") or a custom domain (e.g. \"www.example.com\")"
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels for organizing domains (e.g. [\"production\"])."
        },
        "deployment": {
          "type": "string",
          "description": "Deployment to serve on this domain (e.g. \"happy-cat-abc1234.shipstatic.com\"). Omit to reserve the domain without linking."
        }
      }
    }
    arguments 24 lines
  • domains_verify changes data auth-required never probed

    Trigger DNS verification for a custom domain. Call after the user has configured DNS records from domains_records. Custom domains only, and refused once the domain is verified: read domains_get instead. Verification is asynchronous: read the domain again with domains_get to learn the verdict, since its `status` has not moved yet when this returns. A verified domain serves nothing until a deployment is linked with domains_set.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "domain"
      ],
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name to verify DNS for. Must be a domain previously created with domains_set."
        }
      }
    }
    arguments 13 lines
  • whoami reads auth-required 9h ago

    Returns your email and name, and the account's plan, usage and caps.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • domains_list reads auth-required 4h ago

    List all domains with their URLs, linked deployment, and `status`. The response's `cursor` is null on the last page; pass it back as `cursor` to fetch the next.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 1,
          "description": "Maximum number of items to return in one page. Omit for the server default."
        },
        "cursor": {
          "type": "string",
          "description": "Opaque position from the previous response's `cursor` field; omit for the first page."
        }
      }
    }
    arguments 16 lines
  • domains_delete changes data auth-required never probed

    Permanently deletes a domain.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "domain"
      ],
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name to delete (e.g. \"www.example.com\")"
        }
      }
    }
    arguments 13 lines
  • domains_dns reads unknown 12h ago

    Returns the DNS provider recorded for the domain, if known (e.g. Cloudflare, Namecheap): where its DNS records are configured. Custom domains only, and only while the domain is unverified; once its DNS is right there is nothing left to locate.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "domain"
      ],
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name (e.g. \"www.example.com\"). Must be a domain previously created with domains_set."
        }
      }
    }
    arguments 13 lines
  • domains_validate reads unknown 12h ago

    Check if a domain name is valid and available before creating it. Returns the normalized form and availability.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "domain"
      ],
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name to check (e.g. \"yourname.shipstatic.com\" or \"www.example.com\"). Call before domains_set to check availability."
        }
      }
    }
    arguments 13 lines
  • domains_get reads unknown 12h ago

    Get domain details including URL, linked deployment, labels, and `status`: the one word saying what the domain needs from its owner (`unverified`, `unlinked`, `live`, `paused`).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "domain"
      ],
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name (e.g. \"www.example.com\"). Use domains_list to find names."
        }
      }
    }
    arguments 13 lines
  • domains_share reads unknown 4h ago

    Returns a shareable DNS setup URL that needs no API key, for whoever manages the domain's DNS. Custom domains only, and only while the domain is unverified; a verified domain has no setup left to share.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "domain"
      ],
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name to generate a share link for. Must be a domain previously created with domains_set."
        }
      }
    }
    arguments 13 lines
  • domains_records reads unknown 4h ago

    Returns the DNS records to configure at the domain's DNS provider. Call after domains_set. Custom domains only: a ShipStatic domain has no records to configure.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "domain"
      ],
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name. Must be a domain previously created with domains_set."
        }
      }
    }
    arguments 13 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 1c80f0fb4b31deff.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/1c80f0fb4b31deff/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/1c80f0fb4b31deff/badge.svg)](https://brick.blue/agent/1c80f0fb4b31deff?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.