mcpField
F
Frisk

Frisk

Local
tryfrisk.devSecurity1Updated 1w ago

About Frisk

Frisk is an MCP server for agents and other clients to inspect x402 payment counterparties before payment. It runs deterministic checks locally by default and returns an advisory allow, review, or block verdict with reasons.

Key features

  1. 01Counterparty address checks
  2. 02Dynamic payTo comparison
  3. 03Transport safety checks
  4. 04Spending policy checks
  5. 05Verdicts with reasons

Use cases

  1. 01Inspect an x402 recipient before payment
  2. 02Check that returned payTo matches the intended address
  3. 03Apply per-call spending and asset limits

MCP support

Exposes the screen_payment tool to MCP clients, returning a verdict, trust score, confidence, reasons, policy hits, and whether payment is allowed. Optional hosted mode adds reputation-graph signals.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"dev-tryfrisk-frisk": {
"command": "npx",
"args": [
"-y",
"frisk-mcp"
],
"env": {
"FRISK_API_KEY": "<FRISK_API_KEY>",
"FRISK_BASE_URL": "<FRISK_BASE_URL>"
}
}
}
}
Run commandnpx -y frisk-mcp
Environment variables to set
FRISK_API_KEYSecretHosted API key. Without it the server screens entirely offline.
FRISK_BASE_URLOverride the hosted endpoint. Defaults to https://api.tryfrisk.dev.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmfrisk-mcp0.0.1

Tools

1

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
assetstringNoAsset symbol, e.g. USDC.
amountnumberNoAmount the agent is about to pay.
endpointstringNoURL that quoted the payment. Used to check transport safety.
maxPerCallnumberNoSpending ceiling for a single call.
strictnessnumberNo0 is permissive, 1 is paranoid. Defaults to 0.3.
counterpartystringYesThe address the agent intends to pay, e.g. an 0x EVM address.
allowedAssetsarrayNoAssets the agent is permitted to pay in.
observedPayTostringNoThe payTo address the endpoint actually returned for this request. If it differs from the counterparty, that is the dynamic-payTo swap.

Details

From the project README

frisk-mcp

An MCP server for Frisk: screen the counterparty of an x402 payment before an agent pays it.

It exposes one tool, screen_payment, which runs Frisk's deterministic checks — address sanity, dynamic-payTo comparison, transport safety, and your own spending policy — and returns allow / review / block with reasons.

Where this belongs, and where it does not

An MCP tool runs when a model decides to call it. A payment check that the model can skip is a weaker guarantee than the same check on the code path that signs the payment.

So:

  • Use the library — frisk-screen — where the money actually moves. It is MIT, dependency-free, and runs locally.
  • Use this server for inspection ("is this address safe to pay?"), and for agents that cannot import a library.

Frisk is advisory in both cases: it returns a verdict and your code decides. It never holds funds and cannot stop a payment by itself.

Install

npx frisk-mcp

In any MCP client's server configuration:

{
  "mcpServers": {
    "frisk": {
      "command": "npx",
      "args": ["-y", "frisk-mcp"]
    }
  }
}

No API key, no account, no network call: with no configuration the server screens entirely on your machine.

Hosted mode (optional)

Set FRISK_API_KEY to have the same tool answered by the hosted service, which adds reputation-graph signals and returns higher-confidence verdicts:

{
  "mcpServers": {
    "frisk": {
      "command": "npx",
      "args": ["-y", "frisk-mcp"],
      "env": { "FRISK_API_KEY": "..." }
    }
  }
}

The hosted tier is in early access — email [email protected]. Everything above works without it.

variabledefaultmeaning
FRISK_API_KEYunsetEnables hosted screening. Unset means fully offline.
FRISK_BASE_URLhttps://api.tryfrisk.devOverride the hosted endpoint.

The tool

screen_payment

argumenttypenotes
counterpartystring, requiredThe address the agent intends to pay.
endpointstringURL that quoted the payment; checked for plaintext transport.
amountnumberAmount about to be paid.
assetstringAsset symbol, e.g. USDC.
observedPayTostringThe payTo the endpoint actually returned. If it differs from counterparty, that is the dynamic-payTo swap.
strictnessnumber 0–10 permissive, 1 paranoid. Default 0.3.
maxPerCallnumberSpending ceiling for one call.
allowedAssetsstring[]Assets the agent may pay in.

Returns verdict, trustScore, confidence, reasons, policyHits, source (lite or hosted), and allowed.

What it does not do

It does not detect Sybil clusters, and offline it has no view of an address's history — lite screening always reports "low" confidence for that reason. It also cannot repair the protocol underneath a payment: replay, settlement races, and facilitator trust live in x402 itself, not in the request being signed. Those limits are discussed in Five ways an x402 payment can go wrong.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.