protogrid

Search / app.payperwork/payperwork

PayperWork

R0· no sign-in

Index of PayperWork's pay-per-call services for agents over x402: lists and describes them. Free.

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

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality87good
Trust82of 100
Uptime, 30 days96%
Latency p50453 ms

Connect

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

Quality 87 / 100good

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene88 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations2 of 2 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: list_services (destructiveHint, idempotentHint, openWorldHint); describe_service (destructiveHint, idempotentHint, openWorldHint)
  • pass
    tools.token_costabout 144 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
  • pass
    tools.hidden_textno hidden text in tool names, descriptions, schemas or annotations
stability83 · weight 15
  • warn
    stability.changes8 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
  • pass
    stability.new_linksno tool change named a new site
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

2 tools, about 144 tokens to load them all · tool set 668b0c793691 · tools last changed 2026-11-01 · checked 2026-11-14 07:03 UTC

Tool changes

  • describe_servicechangedinput schema
  • list_serviceschangeddescription
    before

    The Payperwork services with their MCP endpoints, HTTP routes, prices and limits. Free.

    after · 100% of words in common

    The PayperWork services with their MCP endpoints, HTTP routes, prices and limits. Free.

  • waitremoved

    Block until a key changes, then return it. Costs $0.001 per call whether or not anything arrives (it is a long-poll, not a subscription). Returns immediately if the key's seq is already greater than since; otherwise waits up to timeout_seconds (max 25) and returns value null with timed_out true. Pass the seq from the last value you saw to get only newer ones; since 0 returns whatever is there. This is how two agents sharing a box pass messages. A box is a namespace of keys. Omit it on a paid call to use your own wallet's box (the call returns its id). Pass any long random string to share a box with another agent as a channel: whoever knows the string can read and write it, so short or guessable names are public. Pass a box_... id returned by an earlier call to address that box directly. The box id is the only credential: anyone holding it can read, list, delete and wait.

  • putremoved

    Store a value under a key. Costs $0.002, charged only if the payment settles; a failed payment stores nothing. Values up to 64 KB, stored unencrypted, kept for ttl_seconds (default 3600, max 604800) then deleted. Overwrites an existing key and bumps its seq. The write becomes visible once the payment has settled. Returns the box id, which is also what free reads need. A box is a namespace of keys. Omit it on a paid call to use your own wallet's box (the call returns its id). Pass any long random string to share a box with another agent as a channel: whoever knows the string can read and write it, so short or guessable names are public. Pass a box_... id returned by an earlier call to address that box directly. The box id is the only credential: anyone holding it can read, list, delete and wait.

  • deleteremoved

    Delete a key from a box immediately. Free, rate limited per address. Anyone holding the box id can do this; there is no undo.

  • listremoved

    List the keys in a box with their seq, size and expiry, newest first, without values. Free, rate limited per address. Anyone holding the box id can do this.

  • getremoved

    Read a key. Free, no payment or identity needed, rate limited per address. Needs the box: a box_... id from put, or a channel name. Returns value null with found false if absent or expired. A box is a namespace of keys. Omit it on a paid call to use your own wallet's box (the call returns its id). Pass any long random string to share a box with another agent as a channel: whoever knows the string can read and write it, so short or guessable names are public. Pass a box_... id returned by an earlier call to address that box directly. The box id is the only credential: anyone holding it can read, list, delete and wait.

  • describe_serviceadded

    One service in full: its MCP URL and config snippet, HTTP routes, prices, limits and security model. Free.

Full history: list_changes · trend: quality JSON.

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 82 / 100

no-repository
provenance55
liveness98
freshness100
hygiene80

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

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

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://payperwork.app/mcp streamable-httpnoneyes96%453 ms2026-07-282026-11-14

Tools (2)

describe_serviceread-onlyOne service in full: its MCP URL and config snippet, HTTP routes, prices, limits and security model. Free.
list_servicesread-onlyThe PayperWork services with their MCP endpoints, HTTP routes, prices and limits. Free.

Schemas: list_tools.

Similar MCP servers

More from app.payperwork

Official server.json
{
  "name": "app.payperwork/payperwork",
  "title": "PayperWork",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://payperwork.app/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.4.1",
  "websiteUrl": "https://payperwork.app",
  "description": "Index of PayperWork's pay-per-call services for agents over x402: lists and describes them. Free."
}