# PaidHandshake Exchange (remote · paidhandshake.com)

Verified agent commerce plus worker-published structured intelligence and machine payments.

- Trust score: 71/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-18

## Components

- remote · `paidhandshake.com`: 71/100 (this document), [markdown](https://verifymcp.io/servers/com-paidhandshake-exchange/paidhandshake.md), [page](https://verifymcp.io/servers/com-paidhandshake-exchange/paidhandshake)

## Channel facts

- Endpoint: `https://paidhandshake.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `2.9.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-18.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 9 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 81/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2193 tokens (~121/item across 18 items; 18 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 37/100
  - Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (6% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 18 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the PaidHandshake Exchange MCP server?

PaidHandshake Exchange is a hosted endpoint at https://paidhandshake.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-paidhandshake-exchange 'https://paidhandshake.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-paidhandshake-exchange": {
      "url": "https://paidhandshake.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-paidhandshake-exchange": {
      "type": "http",
      "url": "https://paidhandshake.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-paidhandshake-exchange]
url = "https://paidhandshake.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-paidhandshake-exchange": {
      "type": "remote",
      "url": "https://paidhandshake.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-paidhandshake-exchange --url 'https://paidhandshake.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-paidhandshake-exchange:
    url: "https://paidhandshake.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-paidhandshake-exchange": {
      "Transport": "http",
      "Url": "https://paidhandshake.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-paidhandshake-exchange -t streamable-http -u 'https://paidhandshake.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-paidhandshake-exchange": {
      "type": "http",
      "url": "https://paidhandshake.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-18 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-16 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-14 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-12 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 17. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-10 (score 67, +2)

- [functional improvement] Stability: unverified → 0.10

### 2026-10-07 (score 65)

First indexed and scored.

## MCP tools (18)

### `get_fulfillment_proof` (~80 tokens)

Free, read-only operational proof that PaidHandshake has active fulfillment capacity. Returns worker heartbeat/status, background inventory-production status, verified feed state, and actual completed paid-job counts; background inventory generation is not counted as customer revenue. Use this for platform/fulfillment verification, not for browsing purchasable inventory or polling one specific paid job.

### `get_live_inventory` (~79 tokens)

Free, read-only snapshot of canonical PaidHandshake inventory feeds, including paid-eligible counts, quality holds, freshness, prices and sample URLs. Use this as the starting point for known feed inventory; use get_free_data_sample for one feed sample, get_published_intelligence_catalog for worker-published products, and search_matches for ad hoc web discovery.

Output parameters:

- `feeds` (array)
- `snapshot_id` (string)

### `get_published_intelligence_catalog` (~69 tokens)

Free, read-only catalog of structured intelligence products published by connected workers, including paid-eligible counts, prices, sample paths and x402 purchase routes. Use this to discover product names before calling get_published_intelligence_sample; use get_live_inventory instead for canonical PaidHandshake feed inventory.

### `get_published_intelligence_sample` (~108 tokens)

Free, read-only sample of one worker-published intelligence product. Returns one paid-eligible structured record so an agent can inspect quality and fields before purchasing; use get_published_intelligence_catalog first when you need to discover available product names, and use get_free_data_sample for the separate inventory-feed sample path.

Input parameters:

- `product` (string, required): Exact published-intelligence product key from get_published_intelligence_catalog. Select the product whose representative paid-eligible sample you want to inspect.

### `get_free_data_sample` (~76 tokens)

Free, read-only preview of one canonical PaidHandshake inventory feed. Returns one paid-eligible verified record when available; quality-held candidates are never substituted. Use get_live_inventory first to discover feed inventory and use get_published_intelligence_sample instead for worker-published intelligence products.

Input parameters:

- `feed` (string, required): PaidHandshake feed slug

### `search_matches` (~124 tokens)

Read-only discovery search across current public or authorized web information when the request is not already covered by a known PaidHandshake inventory product. Returns one evidence-bearing proof result, locked ranked previews, pricing, and a reusable search_id. Use get_live_inventory/get_free_data_sample for known inventory products instead, and use quote_paid_machine_job for delegated custom research work.

Input parameters:

- `query` (string, required): Natural-language discovery request, 3-600 characters. Include meaningful constraints such as location, timing, budget, product/service type, opportunity type, or other criteria needed to rank relevan…

### `get_unlock_quote` (~108 tokens)

Free, read-only pricing lookup for locked results from an existing search_matches search. Returns the currently available unlock packages and prices for the supplied search_id without creating checkout or charging the buyer. Use create_checkout only after a buyer chooses a package; use search_matches first if you do not yet have a search_id.

Input parameters:

- `search_id` (string, required): Reusable PaidHandshake search identifier returned by search_matches. Pass the exact search_id whose currently available result-unlock packages and prices you want to inspect.

### `create_checkout` (~156 tokens)

Create a Stripe Checkout URL after a PaidHandshake search when a buyer wants to authorize access to locked results. This tool only creates the checkout handoff and never silently charges the buyer. Use get_unlock_quote first if the buyer only needs pricing, and do not use this for recurring watches or machine-wallet jobs.

Input parameters:

- `package` (string, required): Result package to purchase: single unlocks one selected result, top3 unlocks the next three ranked results, and full unlocks the full available result pack.
- `result_id` (integer): Required only when package=single. Use the result identifier from the locked preview returned by search_matches.
- `search_id` (string, required): Reusable search identifier returned by search_matches for the result set being purchased.

### `quote_paid_machine_job` (~149 tokens)

Free, read-only price estimate for delegated machine work before any job is submitted or money is reserved. Use this for custom public-web research, sourcing, verification, or commercial-intelligence tasks; after accepting the quote, use submit_paid_machine_job for execution. Unknown task labels may be mapped to a compatible live-worker capability.

Input parameters:

- `constraints` (object): Optional task-specific requirements such as location, date range, maximum results, verification requirements, exclusions, budget, or other execution constraints used to estimate the job.
- `task_type` (string, required): Requested work category or intent label, such as event_search, bid_search, vendor_search, grant_search, deep_research, or another descriptive task label.

### `get_machine_payment_options` (~71 tokens)

Free, read-only discovery of machine payment rails available or activation-ready for PaidHandshake, including Stripe-funded delegated wallets and x402 Base-USDC where active. Use this when an autonomous buyer needs to choose how to pay; use get_machine_wallet to inspect one authenticated machine's actual wallet balance and spending limits.

### `get_machine_onboarding` (~81 tokens)

Free, read-only onboarding guide for autonomous buyers. Returns the self-service machine enrollment route plus Stripe wallet-funding, paid-job submission/polling, recurring-watch, and related machine endpoints. Use this when an agent needs to become a PaidHandshake machine buyer or discover the required API flow; use get_machine_wallet after authentication to inspect an existing machine account.

### `submit_paid_machine_job` (~277 tokens)

Authenticated paid mutation that submits a one-time machine job after the buyer has accepted the task and spending cap. PaidHandshake authorizes work only inside the machine's delegated wallet and platform spending limits, routes it to a compatible worker capability, and returns a job_id for later polling with get_paid_machine_job. Use quote_paid_machine_job first when the price is not yet known; use create_recurring_paid_watch instead for repeated work.

Input parameters:

- `constraints` (object): Optional structured task requirements such as location, date range, maximum results, verification requirements, exclusions, budget or other execution limits.
- `idempotency_key` (string): Optional caller-generated stable key for the same intended paid submission. Reuse the same key when retrying an uncertain request so an accidental duplicate job can be avoided.
- `max_price_cents` (integer, required): Maximum amount in USD cents this machine authorizes for this single job. The request remains subject to delegated wallet, per-call, daily, monthly and platform spending limits.
- `query` (string, required): Natural-language task to execute. Include the desired outcome and important location, timing, scope, evidence, filtering or result requirements.
- `task_type` (string): Optional routing label describing the work category or intent. Use a descriptive capability label when known; otherwise PaidHandshake can route compatible work from the request.

### `get_paid_machine_job` (~110 tokens)

Authenticated, read-only polling for a previously submitted paid machine job. Use the job_id returned by submit_paid_machine_job to retrieve its current queued, working, completed, or failed state and any available result; use quote_paid_machine_job before submission, not this tool, when you only need a price estimate.

Input parameters:

- `job_id` (string, required): PaidHandshake job identifier returned by submit_paid_machine_job. Pass the exact job_id for the authenticated machine account whose status or completed result you want to retrieve.

### `create_recurring_paid_watch` (~269 tokens)

Authenticated: create a new recurring paid watch for repeated research or monitoring. Each execution is a normal paid machine job bounded by max_price_cents plus the machine's delegated spending limits; cadence must be 60-10080 minutes. Use this only to create a new watch; use set_recurring_paid_watch to enable/disable an existing watch and submit_paid_machine_job for one-time work.

Input parameters:

- `cadence_minutes` (integer): Minutes between scheduled runs. Minimum 60 minutes; maximum 10080 minutes (7 days).
- `constraints` (object): Optional reusable execution constraints applied to every run, such as location, filters, maximum results, verification requirements, or exclusions.
- `max_price_cents` (integer, required): Maximum price in USD cents allowed for each individual run before the job is rejected rather than overspending.
- `name` (string): Optional human-readable label for the watch.
- `query` (string, required): The recurring research or monitoring request to execute on each scheduled run.
- `run_immediately` (boolean): If true, request an initial run immediately after watch creation; if false or omitted, wait for the normal cadence.
- `task_type` (string): Optional execution category used to route each run to a compatible worker; omit when the query itself is sufficient for routing.

### `list_recurring_paid_watches` (~71 tokens)

Authenticated, read-only listing of recurring paid watches belonging to the current machine buyer. Returns the buyer's saved watches and their current identifiers, configuration and enabled status. Use this to obtain a watch_id before set_recurring_paid_watch; use create_recurring_paid_watch to create a new watch.

### `set_recurring_paid_watch` (~131 tokens)

Authenticated state change for an existing recurring paid watch. Set enabled=true to allow future scheduled runs under the watch's saved cadence and spending limits, or enabled=false to stop future runs; this does not create a watch or edit its query. Use create_recurring_paid_watch to create one and list_recurring_paid_watches to obtain an existing watch_id.

Input parameters:

- `enabled` (boolean, required): true enables future scheduled executions; false disables future scheduled executions for this watch.
- `watch_id` (string, required): Existing recurring watch identifier, typically returned by create_recurring_paid_watch or list_recurring_paid_watches.

### `get_machine_wallet` (~62 tokens)

Authenticated, read-only wallet status for the current machine buyer. Returns wallet balance and delegated spending limits without moving funds. Use this before submit_paid_machine_job to verify available budget; use get_machine_payment_options to discover funding and payment rails rather than account-specific balances.

### `get_paidhandshake_capabilities` (~76 tokens)

Free, read-only capability map for PaidHandshake Exchange. Returns available verified-data feed families, machine endpoints, payment rails, and operating rules. Use this first to understand what PaidHandshake can do; use get_machine_onboarding for enrollment and setup, and get_machine_wallet for an authenticated buyer's current balance and spending limits.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-paidhandshake-exchange/paidhandshake#diagnostics

## Score history

- 2026-10-18: 71
- 2026-10-17: 70
- 2026-10-16: 70
- 2026-10-15: 69
- 2026-10-14: 69
- 2026-10-13: 68
- 2026-10-12: 68
- 2026-10-10: 67
- 2026-10-07: 65

## Common questions

### What is the PaidHandshake Exchange MCP server?

PaidHandshake Exchange is an MCP server listed in the public MCP registry as com.paidhandshake/exchange. Verified agent commerce plus worker-published structured intelligence and machine payments. This page covers its hosted endpoint (https://paidhandshake.com/mcp).

### Is the PaidHandshake Exchange MCP server safe to use?

PaidHandshake Exchange scores 71 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the PaidHandshake Exchange MCP server expose?

PaidHandshake Exchange exposes 18 tools: get_fulfillment_proof, get_live_inventory, get_published_intelligence_catalog, get_published_intelligence_sample, get_free_data_sample, and 13 more. Their descriptions and schemas cost roughly 2,097 tokens of context every time the server is loaded.

### Does the PaidHandshake Exchange MCP server require authentication?

No. We connected to PaidHandshake Exchange without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the PaidHandshake Exchange MCP server still maintained?

PaidHandshake Exchange is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://paidhandshake.com/mcp
- Website: https://paidhandshake.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-paidhandshake-exchange/paidhandshake.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-paidhandshake-exchange/paidhandshake.json
- HTML version of this page: https://verifymcp.io/servers/com-paidhandshake-exchange/paidhandshake
