Teppi

Check what a paid x402 endpoint or MCP server delivered, from probes anyone can repeat.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
85%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~969Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (0.76% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "teppi": {
      "url": "https://api.teppi.xyz/mcp"
    }
  }
}

Remote endpoints

https://api.teppi.xyz/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_capabilities(query, max_usd, network, limit, sort)

Search paid agent capabilities by task description. Returns the price, the input and output schemas, the networks each one settles on, and what has been verified about it. Sort by verified to put the ones with the most evidence behind them first. Use before paying an x402 endpoint you have not used.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 500
    },
    "max_usd": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{1,6}$"
    },
    "network": {
      "type": "string",
      "pattern": "^[a-z0-9]+:[A-Za-z0-9]+$"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    },
    "sort": {
      "type": "string",
      "enum": [
        "relevance",
        "verified"
      ]
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟢get_capability(id)

Full detail for one capability: schemas, pricing, networks, the seller behind it, and every observation recorded against it.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^cap_[0-9A-HJKMNP-TV-Z]{26}$"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢plan_route(goal, budget_usd, min_grade)

Turn a goal and a budget into an ordered list of paid endpoints that could reach it, with a cost estimate and what has been verified about each step. Moves no money and buys nothing: it returns the plan for you to run yourself.

Input Schema

{
  "type": "object",
  "properties": {
    "goal": {
      "type": "string",
      "minLength": 4,
      "maxLength": 500
    },
    "budget_usd": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{1,6}$"
    },
    "min_grade": {
      "type": "string",
      "enum": [
        "A",
        "B",
        "C",
        "D",
        "F"
      ]
    }
  },
  "required": [
    "goal",
    "budget_usd"
  ],
  "additionalProperties": false
}
🟢check_grade(id_or_url, method, pay_to)

Return what has been verified about an x402 endpoint or its url: whether it answers, what it charges, and whether that price has moved. Answers unrated rather than guessing when the evidence is thin. Works for endpoints Teppi does not operate, and a url never seen is put in line for a free handshake, so ask again in an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "id_or_url": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "method": {
      "type": "string",
      "enum": [
        "GET",
        "POST"
      ]
    },
    "pay_to": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$|^[1-9A-HJ-NP-Za-km-z]{32,44}$",
      "description": "the payTo address from the 402, to learn what the record knows about who gets paid"
    }
  },
  "required": [
    "id_or_url"
  ],
  "additionalProperties": false
}
🟢check_exposure(dependencies)

Look up every paid endpoint your agents call in one go, added up by the address each one pays: which are unknown to the record, which took money and returned nothing, which list what they do not serve, and how much monthly spend sits on each. Unknown is reported as unknown, never as bad.

Input Schema

{
  "type": "object",
  "properties": {
    "dependencies": {
      "type": "array",
      "minItems": 1,
      "maxItems": 200,
      "description": "the paid endpoints your agents call, each a url or an object naming one",
      "items": {
        "anyOf": [
          {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048
          },
          {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2048
              },
              "method": {
                "type": "string",
                "enum": [
                  "GET",
                  "POST"
                ]
              },
              "pay_to": {
                "type": "string",
                "pattern": "^0x[0-9a-fA-F]{40}$|^[1-9A-HJ-NP-Za-km-z]{32,44}$",
                "description": "the payTo address from the 402, to learn what the record knows about who gets paid"
              },
              "calls_per_month": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1000000000,
                "description": "how often your fleet calls it, to add up what it costs"
              }
            },
            "required": [
              "url"
            ],
            "additionalProperties": false
          }
        ]
      }
    }
  },
  "required": [
    "dependencies"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools