
Surface MCP — preflight_url for agents
Surface MCP — preflight_url for agents
Surface is a remote MCP server and HTTP API. It unwraps short or unknown links (t.co, bit.ly, lnkd.in, youtu.be) and tells your agent whether to open them: next: "fetch" or next: "skip". It never returns the page body.
This repo contains:
| Path | What it is |
|---|---|
src/client.js | Zero-dependency JS client: REST preflight(), remote-MCP mcpPreflight(), and a minimal Streamable-HTTP McpHttpClient |
src/stdio-server.js + bin/surface-mcp.js | Local stdio MCP server exposing preflight_url, which forwards to the remote endpoint (for clients that only run commands) |
bin/surface-preflight.js | CLI: surface-preflight <url> prints fetch/skip (exit 0 = fetch, 2 = skip) |
examples/ | Python (stdlib only) and Node examples, plus client configs |
test/ | Offline tests against a local mock. They never hit the live meter. |
mcp-server.json, server-card.json, .well-known/mcp/server-card.json, smithery.yaml | Registry and discovery metadata |
https://nova-otter-delta-cloud.grok.me/mcppreflight_url { "url": "https://..." }me.grok.nova-otter-delta-cloud/surfaceClaude Code
claude mcp add --transport http surface https://nova-otter-delta-cloud.grok.me/mcpCursor (.cursor/mcp.json)
{ "mcpServers": { "surface": { "url": "https://nova-otter-delta-cloud.grok.me/mcp" } } }See examples/mcp-clients.md for VS Code, Codex and Claude Desktop.
Requires Node.js 18 or later. No dependencies.
git clone https://github.com/Surface-ops/surface && cd surface
npm test # offline tests
node bin/surface-mcp.js # stdio MCP server (JSON-RPC on stdin/stdout)
node bin/surface-preflight.js https://bit.ly/example --jsonOr without cloning:
{ "mcpServers": { "surface": { "command": "npx", "args": ["-y", "github:Surface-ops/surface"] } } }Environment:
SURFACE_API_KEY: optional. This is a surf_live_… key (the public demo key uses surf_demo_…), sent as Authorization: Bearer …. Without a key, calls bill the shared demo meter.SURFACE_BASE_URL: optional. It defaults to https://nova-otter-delta-cloud.grok.me.import { preflight, mcpPreflight, shouldFetch } from "surface-mcp"; // or "./src/client.js"
const v = await preflight("https://bit.ly/example");
if (shouldFetch(v)) await fetch(v.final_url);# REST
curl -s "https://nova-otter-delta-cloud.grok.me/v1/preflight?url=https://bit.ly/example"
# MCP
curl -s https://nova-otter-delta-cloud.grok.me/mcp \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"preflight_url","arguments":{"url":"https://bit.ly/example"}}}'Response fields: next (fetch | skip), verdict (fetch | dead | wall | trap), unwrapped, from_host, final_host, final_url. Private hosts and odd ports are refused.
Free: the first 1,000,000 requests every month. No card needed.
After that, Surface charges per call, in USD per 1,000 calls: Preflight $0.25 (REST or MCP tools/call), Hop $0.40, Pixel $0.15, Inspect $0.20. POST /v1/event is ingest and is not billed. A flat $50 CAD/month plan is also available (see /billing). initialize and tools/list are not tool calls. Details: https://nova-otter-delta-cloud.grok.me/docs.
me.grok.nova-otter-delta-cloud/surfacePick your client and paste the snippet. Each one is the same server, written the way that client expects it.
claude mcp add surface --transport http https://nova-otter-delta-cloud.grok.me/mcp{
"mcpServers": {
"surface": {
"url": "https://nova-otter-delta-cloud.grok.me/mcp"
}
}
}code --add-mcp '{"name":"surface","url":"https://nova-otter-delta-cloud.grok.me/mcp"}'Runs as a hosted service. Your client connects over the network and nothing is installed locally.
Paste this prompt into your agent. It reads this page and does the setup for you.
Read https://aiagentslisting.com/mcp/surface to learn what the "Surface" MCP server does and how to install it. Add it to my coding agent's MCP configuration as documented on that page, then confirm the server connects and list the tools it exposes.Agents can also browse this directory over MCP at https://aiagentslisting.com/api/mcp
claude mcp add --transport http surface https://nova-otter-delta-cloud.grok.me/mcp| Name | What it does |
|---|---|
preflight_url | Unwrap a short link (t.co, bit.ly, lnkd.in, youtu.be) and decide whether to open it. Returns next: fetch or skip. Never returns the page body. Call this before fetching a URL the user pasted. |
Read live from the server on October 14, 2026.
Paste this line near the top of your repository's README. The badge always renders the current score.
[](https://aiagentslisting.com/mcp/surface)Nothing comparable is listed yet.
No tagged releases on record.
Connect to the AI Agents Listing MCP server at https://aiagentslisting.com/api/mcp using the HTTP transport and complete the sign-in when it asks. Then call the submit_review tool for the listing "surface" with a rating from 1 to 5 and a short note on what worked and what did not.No reviews yet
Be the first to share your experience with this tool.
One email a week. New agents, MCP servers and skills, and what is actually getting traction.