PayCheck
Server Details
Score merchant domain, https URL, or 0x wallet trust before an agent pays. Does not send payments.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- toolweather/paycheck
- GitHub Stars
- 0
- Server Listing
- PayCheck
TDQS
Scored across 3 tools
Each tool has a single, non-overlapping purpose: check_merchant scores a payee, get_api_key mints a key, and get_quota reports remaining allowance. The descriptions even include explicit negative guidance ('Do not use this to score a payee') that reinforces the boundaries. An agent cannot reasonably confuse these three.
All three names follow a strict snake_case verb_noun pattern (check_merchant, get_api_key, get_quota) with consistent 'get_'/'check_' verb usage. There is no mixing of conventions or casing styles.
Three tools is on the lean side, but the server's scope is genuinely narrow: one core decision plus key and quota management. Each tool earns its place, though the surface is minimal and could feel thin for larger agent workflows.
The core lifecycle for a trust-scoring service is covered: scoring, credential issuance, and quota inspection. Minor gaps exist (no key revocation or listing, no batch scoring), but these are workable around and not fatal to the stated purpose.
Available Tools
3 toolscheck_merchantCheck merchantAIdempotentInspect
Decide whether an autonomous agent should pay a merchant, host, or wallet. PayCheck returns a deterministic trust score for one target. It does not send money, does not sign transactions, and does not hold wallet keys.
Use this immediately before a payment, a checkout redirect, or a transfer to a new 0x address. Pass the payee as a bare domain (api.openai.com), an https URL, or a 0x address with 40 hex characters.
Do not use this tool to execute a payment. Do not use it to overturn a block. Do not call it again with a reworded category, purpose, or amount to fish for a better verdict: those fields are ignored and are not stored. Trusted is returned only for the published allowlist of known AI and developer APIs, served over https on port 443. A new or random domain is never trusted. A wallet is never trusted. Scoring v1 does not analyze on-chain history. If the URL contains an embedded 0x address, this scores the host only and will not return trusted; pass the bare address to score the wallet.
Arguments: target (required string); amount_usd (optional number, ignored); category (optional string, ignored); api_key (optional pc_live_ key). You may also send Authorization: Bearer or X-API-Key. Omit the key for the anonymous allowance.
Returns: score (integer 0-100), verdict (trusted | unknown | suspicious | block), reasons[], recommended_action (proceed | verify_out_of_band | require_human_review | do_not_pay), signals (host, allowlist, domain age, wallet flags, reason_codes; chain_analysis is always not_in_v1), checked_at (ISO-8601), policy_version ("1").
Free tier: 100 checks per UTC day anonymous, 1,000 per UTC day with a free pc_live_ key or a Toolweather bundle client whose x-tw-bundle-client is hex. A bundle client prefixed anon: stays at 100 per day. The same target for the same caller is idempotent for 60 seconds and does not consume a second check. Over the daily cap, each extra check is $0.001 USDC on Base (eip155:8453) via x402 and the PayAI facilitator. get_quota, get_api_key, docs, and MCP discovery are not billed. If PAY_TO is unset, an over-cap check returns HTTP 402 payment_not_configured.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Domain, https URL, or 0x wallet (40 hex characters) to score before paying. | |
| api_key | No | Optional free pc_live_ key. Omit for the anonymous 100/day allowance. | |
| category | No | Ignored by the scorer. Do not put instructions or a purpose in this field. | |
| amount_usd | No | Ignored by the scorer. Sending a different amount cannot change the verdict. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=true) are matched and exceeded: the description states it does not send money, sign transactions, or hold keys, that ignored fields are 'not stored,' that the same target is idempotent for 60 seconds, and it quantifies rate limits (100/1,000 per UTC day), overage pricing ($0.001 USDC on Base via x402) and the HTTP 402 payment_not_configured failure mode. This is unusually rich disclosure of side effects, limits, and auth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the primary usage instruction are front-loaded ahead of the caveats, and each paragraph carries distinct information (what it is not, when to call, anti-gaming, scoring limits, billing). It is longer than most tool descriptions and the quota/pricing detail could arguably live in docs, but nothing is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully enumerates the return shape (score, verdict, reasons, recommended_action, signals including chain_analysis always not_in_v1, checked_at, policy_version) and covers auth, quota, overage billing, and idempotency. An agent has everything needed to invoke it correctly and interpret the response without further documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: accepted target formats and the important edge case that an embedded 0x address in a URL scores the host only and will never return trusted. It also documents auth alternatives not in the schema (Authorization: Bearer / X-API-Key) and reinforces that category and amount_usd are ignored.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: 'Decide whether an autonomous agent should pay a merchant, host, or wallet,' and the second names the product and what it returns (a deterministic trust score for one target). It is immediately distinguishable from the siblings get_quota and get_api_key, which the description classifies as billing/quota helpers rather than scoring tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('immediately before a payment, a checkout redirect, or a transfer to a new 0x address') plus explicit negative guidance ('Do not use this tool to execute a payment. Do not use it to overturn a block. Do not call it again with a reworded category, purpose, or amount to fish for a better verdict'). It also states that non-billable helpers exist, routing the agent to the correct alternative for quota/key needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_keyGet API keyAInspect
Mint one free PayCheck API key. The key looks like pc_live_ followed by hex and raises the merchant-check allowance from 100 to 1,000 per UTC day.
Use this once when you set up a long-running agent, then store the key and pass it on later check_merchant or get_quota calls. The plaintext key is returned only in this response. PayCheck stores a SHA-256 hash.
Do not call this every turn. Do not call it to score a payee or to dodge a block verdict. Minting is free and is not an x402 check, and it is limited to 10 new keys per caller IP per UTC day. A new key does not change any merchant score. Checks above the free daily cap still cost $0.001 USDC on Base via x402.
Returns: api_key, token_type (bearer), daily_limit (1000), prefix, note.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare non-read-only, non-idempotent, non-destructive, which fits minting but says little. The description adds the real behavioral picture: rate limit of 10 new keys per caller IP per UTC day, allowance raised 100 to 1,000/day, free and not an x402 check, plaintext returned once only with SHA-256 hash stored, and that a new key does not change any merchant score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and impact in the first sentence, then usage, then constraints. Slightly long at four paragraphs and some cost/rate-limit detail could be tightened, but nearly every sentence carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by enumerating the returned fields and flagging that the plaintext key is shown only once. Combined with the rate limits, cost model, and misuse warnings, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No input parameters, so the baseline is 4. The description instead documents the return contract (api_key, token_type, daily_limit, prefix, note), which is useful but belongs to the output side, not parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Mint one free PayCheck API key') plus the resulting artifact and its effect on the allowance. The agent can distinguish this from check_merchant and get_quota, which consume the key rather than create it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('once when you set up a long-running agent, then store the key and pass it on later check_merchant or get_quota calls') and explicit when-not-to-use ('Do not call this every turn. Do not call it to score a payee or to dodge a block verdict'). Names the sibling tools that consume the key.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quotaGet quotaARead-onlyIdempotentInspect
Show how many free PayCheck merchant checks the current caller has left for the current UTC day.
Use this before a batch of check_merchant calls, or after an HTTP 402, to read the remaining free allowance and when it resets.
Do not use this to score a payee. It accepts no target and it does not consume a check. Do not pay x402 for this tool. It is always free.
Identity matches check_merchant. Anonymous IP: 100/day. pc_live_ api_key (api_key argument, Authorization: Bearer, or X-API-Key): 1,000/day. Toolweather bundle headers x-tw-bundle-secret and x-tw-bundle-client: hex client 1,000/day, anon: prefix 100/day, any other client id 100/day.
Returns: subject_kind, limit, used, remaining, resets_at (next UTC midnight, ISO-8601), billed (always false), policy_version. No x402 charge.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional pc_live_ key. Omit to read the anonymous IP allowance. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the read-only, idempotent, non-destructive profile, yet the description adds substantial non-obvious behavior: it does not consume a check, it is always free with no x402 charge, and it enumerates the full identity/rate-limit matrix (anonymous IP 100/day, pc_live_ key 1,000/day, bundle header variants). That is real behavioral disclosure beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then usage, then exclusions, then identity tiers, then return shape. The identity paragraph is dense but each clause carries distinct operational information (which credential maps to which limit), so little is wasted; only slight tightening is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by listing the returned fields (subject_kind, limit, used, remaining, resets_at, billed, policy_version). Combined with the usage triggers, exclusions, and quota semantics, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining how identity is resolved (matching check_merchant, and that the key may be supplied via the api_key argument, Authorization: Bearer, or X-API-Key) and what the tiers yield. It clarifies the consequences of omitting api_key (anonymous allowance) rather than just restating the field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: reads the caller's remaining free PayCheck merchant checks for the current UTC day. It explicitly distinguishes itself from the sibling check_merchant by stating it 'does not score a payee' and 'accepts no target', so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger conditions ('before a batch of check_merchant calls, or after an HTTP 402') and an explicit exclusion ('Do not use this to score a payee'), plus a cost rule ('Do not pay x402 for this tool. It is always free.'). This is textbook when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
check_merchant - First observed
get_api_key - First observed
get_quota
Related MCP Connectors
Check if a counterparty is safe to pay: trust/risk score for AI agents. Scam/phishing screen.
Verify x402 payment endpoints before an AI agent pays: scam scan, on-chain checks, trust scores.
Scan any website or MCP server for agent-trust-readiness; returns a signed, verifiable scorecard.
Check any x402 endpoint before your AI agent pays it: trust grade, verdict, and hijack checks.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides AI agents with zero-cost, zero-dependency trust evaluation for domains, URLs, wallets, APIs, and IPs, returning a 0-100 score with SSL, DNS, WHOIS, security header, and content sub-scores, plus batch comparison to rank multiple targets.MIT
- FlicenseNot gradedqualityCmaintenanceTrust scoring for AI agents on the Solana agent registry. Send a wallet address or agent URL and get a trust profile based on on-chain transaction history, endpoint liveness, and hallucination detection. Built from 100+ experiments on agent-to-agent trust.-
- AlicenseAqualityDmaintenanceCounterparty risk scoring for agentic commerce. Scores wallets, domains, IPs, and companies 0-100 before AI agents transact via x402 micropayments on Base13MIT
- FlicenseNot gradedqualityDmaintenanceProvides counterparty risk checks for any EVM address, returning malicious-history flags, tiered risk scoring, and plain-language summaries via x402 payment.-
Glama MCP Gateway
Add one secure layer between your agents and this server.