protogrid

Search / io.url2md/mcp

url2md

R2· OAuth, once

PDFs, JavaScript pages and ordinary HTML as clean Markdown. Follows robots.txt per RFC 9309.

v0.1.5 · active · website · descriptor JSON · versions

An agent can connect after a one-time OAuth consent by a human.Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.
Quality100strong
Trust79of 100
Uptime, 30 days96%
Latency p50501 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "url2md": {
      "type": "http",
      "url": "https://url2md.io/mcp"
    }
  }
}
claude mcp add --transport http url2md https://url2md.io/mcp
[mcp_servers.url2md]
url = "https://url2md.io/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "url2md": {
      "type": "remote",
      "url": "https://url2md.io/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "url2md": {
      "type": "http",
      "url": "https://url2md.io/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=url2md&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vdXJsMm1kLmlvL21jcCJ9"
}
{
  "servers": {
    "url2md": {
      "type": "http",
      "url": "https://url2md.io/mcp"
    }
  }
}
{
  "mcpServers": {
    "url2md": {
      "httpUrl": "https://url2md.io/mcp"
    }
  }
}
extensions:
  "url2md":
    enabled: true
    name: "url2md"
    type: streamable_http
    uri: "https://url2md.io/mcp"
    timeout: 300

Quality 100 / 100strong

protocoln/a · weight 25
  • n/a
    protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)
authorization100 · weight 15
  • pass
    auth.prmProtected Resource Metadata (RFC 9728) published
  • pass
    auth.as_metadataauthorization server metadata reachable
  • pass
    auth.cimdClient ID Metadata Documents supported
  • n/a
    auth.secret_in_urlno templated URL
tool hygienen/a · weight 30
  • n/a
    tools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pulltool list unknown
dependencies100 · weight 15
  • pass
    deps.known_vulnsno known advisory in 21 resolved packages
  • pass
    deps.mcp_sdk_version@modelcontextprotocol/server 2.1.0, no known advisory
  • pass
    deps.resolvable@url2md-io/[email protected] resolved: 21 packages

Tool list unknown · checked 2026-10-20 08:58 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 79 / 100

no-repository
provenance55
liveness99
freshness85
hygiene80

+dns-namespace +website +reachable +uptime-96% ~updated-36d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

@url2md-io/[email protected] npm20 dependencies, resolved · MCP SDK @modelcontextprotocol/server 2.1.0 · advisories checked 2026-10-19

No known advisory affects this dependency graph.

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://url2md.io/mcp streamable-httpoauth2 AS: https://url2md.ioyes96%501 ms–2026-10-20
packageregistryversionruntimesecrets
@url2md-io/mcpnpm0.1.5–URL2MD_PRIVATE_KEY

Tools (0)

No tools observed. Tools appear once a credential-free probe can list them.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.url2md/mcp",
  "title": "url2md",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://url2md.io/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.1.5",
  "packages": [
    {
      "version": "0.1.5",
      "transport": {
        "type": "stdio"
      },
      "identifier": "@url2md-io/mcp",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "environmentVariables": [
        {
          "name": "URL2MD_PRIVATE_KEY_FILE",
          "format": "filepath",
          "description": "Path to a file holding the 0x-prefixed private key of a wallet with USDC on Base. Preferred over URL2MD_PRIVATE_KEY: a path is not a secret, and a key on a command line is visible to every process on the machine. One of the two key variables is required."
        },
        {
          "name": "URL2MD_PRIVATE_KEY",
          "isSecret": true,
          "description": "The key itself: 0x followed by 64 hex characters. Use URL2MD_PRIVATE_KEY_FILE instead where you can. One of the two key variables is required."
        },
        {
          "name": "URL2MD_MAX_PRICE_USD",
          "default": "0.10",
          "description": "The most this server will commit for one call, in USD, across every payment round of that call. A tolled page takes two rounds and this ceiling covers both."
        },
        {
          "name": "URL2MD_MAX_SPEND_USD",
          "default": "1.00",
          "description": "The most this server will commit in total for as long as the process runs. Restarting resets it."
        },
        {
          "name": "URL2MD_BASE_URL",
          "default": "https://url2md.io",
          "description": "The url2md deployment to call. Must be https (only a loopback address may be plain http), because this is the origin every 402 is checked against."
        },
        {
          "name": "URL2MD_TIMEOUT_MS",
          "default": "90000",
          "description": "How long to wait for one conversion, in milliseconds. The default covers the service's own worst case: 20 s of fetching plus 55 s of headless render. Do not lower it to 30 s — that is the navigation timeout inside the browser, and on a page that needed a browser your payment has already settled by the time the render starts."
        }
      ]
    }
  ],
  "websiteUrl": "https://url2md.io",
  "description": "PDFs, JavaScript pages and ordinary HTML as clean Markdown. Follows robots.txt per RFC 9309."
}