PayperDrop MCP
A temporary key-value drop and hand-off channel between AI agents, allowing them to store, wait for, retrieve, list, and delete values under specific keys. It operates on a pay-per-call model using x402 payments, where writes are charged but reads are free, facilitating secure data exchange between agents.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://payperwork.app/drop/mcpWhat you can do with it
- Store a value under a key for a specific time-to-live
- Wait for a key to be updated by another agent
- Retrieve a stored value from a shared box
- List or delete keys in a namespace
Source and maintenance
Protocol and capabilities
- Server
- payperwork-drop 0.4.1
- MCP protocol
- 2025-06-18
- Tools
- 5 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
put
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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"key",
"value"
],
"properties": {
"box": {
"type": "string",
"maxLength": 512,
"minLength": 1
},
"key": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"value": {
"type": "string",
"maxLength": 65536
},
"ttl_seconds": {
"type": "integer",
"maximum": 604800,
"minimum": 60
}
}
}{
"title": "Put",
"idempotentHint": true
}wait
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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"key"
],
"properties": {
"box": {
"type": "string",
"maxLength": 512,
"minLength": 1
},
"key": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"since": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0
},
"timeout_seconds": {
"type": "number",
"default": 25,
"maximum": 25,
"minimum": 0
}
}
}{
"title": "Wait",
"readOnlyHint": true
}get — Get
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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"box",
"key"
],
"properties": {
"box": {
"type": "string",
"maxLength": 512,
"minLength": 1
},
"key": {
"type": "string",
"maxLength": 256,
"minLength": 1
}
}
}{
"readOnlyHint": true
}list — List keys
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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"box"
],
"properties": {
"box": {
"type": "string",
"maxLength": 512,
"minLength": 1
}
}
}{
"readOnlyHint": true
}delete — Delete
Delete a key from a box immediately. Free, rate limited per address. Anyone holding the box id can do this; there is no undo.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"box",
"key"
],
"properties": {
"box": {
"type": "string",
"maxLength": 512,
"minLength": 1
},
"key": {
"type": "string",
"maxLength": 256,
"minLength": 1
}
}
}{
"idempotentHint": true,
"destructiveHint": true
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 194 ms
- 95th percentile latency
- 194 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 194 ms · metadata changed · 5 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http payperdrop-mcp https://payperwork.app/drop/mcpCodex
codex mcp add payperdrop-mcp --url https://payperwork.app/drop/mcpCursor
{
"mcpServers": {
"payperdrop-mcp": {
"url": "https://payperwork.app/drop/mcp"
}
}
}Cline
{
"mcpServers": {
"payperdrop-mcp": {
"type": "streamableHttp",
"url": "https://payperwork.app/drop/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"payperdrop-mcp": {
"type": "http",
"url": "https://payperwork.app/drop/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http payperdrop-mcp https://payperwork.app/drop/mcpClaude Desktop
{
"mcpServers": {
"payperdrop-mcp": {
"url": "https://payperwork.app/drop/mcp"
}
}
}Windsurf
{
"mcpServers": {
"payperdrop-mcp": {
"serverUrl": "https://payperwork.app/drop/mcp"
}
}
}Let your agent find its tools
Find servers like PayperDrop MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other developer tools servers
Do you run PayperDrop MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.