Skip to main content
Glama

Frisk

CI npm PyPI npm License: MIT

Pre-transaction risk screening for autonomous AI agents.

Before your agent pays an x402 seller or calls an unfamiliar tool, ask Frisk whether the counterparty is trustworthy and whether the transaction fits your policy. Frisk returns a verdict — allow, review, or block — with a trust score and human-readable reasons. It is advisory: your agent stays in control of the decision.

import { Client } from "frisk-screen";

const client = new Client(); // lite mode, no key required

const result = await client.screen("0x9a3f1b2c3d4e5f60718293a4b5c6d7e8f9a0bc12", {
  endpoint: "https://api.seller.x402/quote",
  amount: 2.5,
  asset: "USDC",
  policy: { maxPerCall: 5.0 },
});

if (!result.allowed) {
  console.log(result.verdict, result.trustScore, result.reasons);
}

Surfaces

Surface

Package

Source

TypeScript SDK

frisk-screen (npm)

typescript/

Python SDK

frisk-screen (PyPI)

python/

MCP server

frisk-mcp (npm)

mcp/

Both SDKs expose the same model: a Client with a screen() call, a lite mode that runs locally with zero dependencies, and an optional hosted mode for reputation history and live threat intelligence.

Related MCP server: hive-mcp-agent-kyc

MCP server

For agents that cannot import a library, and for asking the question interactively, the same checks are available as an MCP server exposing one tool, screen_payment:

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

No API key and no account: with no configuration it screens entirely on your machine. It is listed in the MCP registry as dev.tryfrisk/frisk.

An MCP tool runs only when a model chooses to call it, so a check the model can skip is a weaker guarantee than the same check on the code path that signs the payment. Where the money actually moves, prefer the SDK. Details in mcp/.

Lite mode vs. hosted

Lite (default)

Hosted (API key)

Runs

Locally, offline

Frisk API

Signals

Public, structural checks only

Reputation graph, trained models, threat feed

Confidence

Always low

Rises with coverage

Cost

Free

Usage-based

Lite mode catches obvious problems — malformed counterparties, payTo swaps, insecure endpoints, policy violations, and a small seed blocklist — without a network call. The hosted API (https://api.tryfrisk.dev) adds reputation history and continuously updated threat intelligence.

What a verdict covers

Frisk screens who you are paying. An allow means nothing disqualifying was found by the checks you gave it enough information to run: the counterparty parses as an address and is not on the blocklist, the payTo the endpoint asked for matches the counterparty you named, the endpoint is served over HTTPS, and the amount and asset fall inside the policy you supplied. A check whose input you leave out does not run and does not fail — omit observedPayTo and no payTo comparison happens. In hosted mode an allow also means no adverse reputation history was found.

It says nothing about what comes back. Whether the response matches the shape you expected, contains the data you paid for, or is worth the price is a separate question, and Frisk deliberately does not answer it. Verifying the response contract is worth doing; it belongs after the call, on the buyer's side, against the buyer's own definition of a satisfactory answer.

An allow is not a claim of safety in general either. In lite mode confidence is always low, because the checks are structural: a counterparty with no history and no defects screens the same as one with a long clean record. The verdict is one input to your decision, which is why it is advisory.

Design principles

  • Advisory, not in-path. Frisk never holds your funds or blocks a payment itself; it returns a verdict and your code decides.

  • Zero runtime dependencies. The TypeScript SDK is built on the platform fetch API (Node, Bun, Deno, Workers, browser); the Python SDK uses only the standard library.

  • Typed. Both SDKs ship with full type information.

Contributing

See CONTRIBUTING.md. Security disclosures: SECURITY.md.

License

MIT

The hosted API at api.tryfrisk.dev is additionally governed by the Terms of Service.

Available Tools

1 tool
screen_paymentScreen a payment before payingA
Read-only

Screen a counterparty an agent is about to pay. Runs entirely offline: address sanity, dynamic-payTo comparison, transport check, and your spending policy. Returns allow / review / block with reasons. Advisory: the caller decides. Set FRISK_API_KEY to add hosted reputation signals.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetNoAsset symbol, e.g. USDC.
amountNoAmount the agent is about to pay.
endpointNoURL that quoted the payment. Used to check transport safety.
maxPerCallNoSpending ceiling for a single call.
strictnessNo0 is permissive, 1 is paranoid. Defaults to 0.3.
counterpartyYesThe address the agent intends to pay, e.g. an 0x EVM address.
allowedAssetsNoAssets the agent is permitted to pay in.
observedPayToNoThe payTo address the endpoint actually returned for this request. If it differs from the counterparty, that is the dynamic-payTo swap.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it runs offline, returns a recommendation with reasons, leaves the final decision to the caller, and notes the optional FRISK_API_KEY for hosted signals. This goes beyond the annotations and fully describes behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that convey purpose, behavior, and optional configuration without any redundant or tangential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explicitly names the return categories (allow/review/block with reasons) and clarifies that it is advisory and offline, covering all essential context an agent needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 8 parameters with clear descriptions. The description adds relational context (e.g., dynamic-payTo comparison between observedPayTo and counterparty, spending policy tied to allowedAssets/maxPerCall/strictness), enhancing the schema's meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action (screen), the object (counterparty about to be paid), and the outcome (allow/review/block with reasons). No ambiguity about the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies when to use (before paying) and provides operational context (runs entirely offline, advisory only). Does not explicitly contrast with alternatives, but no sibling tools are present.

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. Dates show when Glama detected each change.

  1. 1 tool updatev0.0.1
    • First observedscreen_payment

TDQS

A4.6/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap. The tool's purpose is singular and clearly defined.

Naming Consistency5/5

The single tool uses a clear verb_noun pattern ('screen_payment'), which is consistent and predictable.

Tool Count3/5

One tool feels thin for a general-purpose server, but for a narrowly focused payment screening service, it may be sufficient. It's borderline on the calibration scale.

Completeness4/5

The tool covers the essential screening workflow (address checks, policy, etc.), but lacks auxiliary capabilities like configuration or reporting. Minor gaps that agents can work around.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Pre-flight oracle for x402 endpoints — gives any MCP-aware agent (Claude Code, Cursor, Windsurf, Continue) tools to detect decoys, zombies, and price traps before paying. Wraps preflight, forensics, decoy-blacklist, and watch-subscription endpoints from x402station.io.
    10
    23
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Routes blockchain address screening to third-party KYC/AML providers and checks public sanctions lists, serving as a clean-money gate primitive for MCP-compatible agents.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides counterparty risk checks for any EVM address, returning malicious-history flags, tiered risk scoring, and plain-language summaries via x402 payment.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jiangw2718i/frisk'

If you have feedback or need assistance with the MCP directory API, please join our Discord server