Skip to main content
Glama
zekebuilds-lab

@powforge/captcha-mcp

@powforge/captcha-mcp

계정 없이 AI 에이전트에게 호출당 비용을 청구하세요. PoW 해결 = 무료 티어. 라이트닝 결제 = 유료 티어.

OpenAI의 Sora API는 호출당 비용을 청구할 수 없습니다. Anthropic의 결제 시스템은 도구로 전달되지 않습니다. 오늘 MCP 서버를 배포했는데 자율 에이전트가 이를 발견하면, 비용은 고스란히 당신의 몫이 됩니다.

이것이 바로 그 게이트웨이입니다. stdio를 통한 세 가지 도구. 표준 라이브러리만 사용합니다.

퀵스타트

npx -y @powforge/captcha-mcp

이게 전부입니다. 설치도, 설정도, API 키도 필요 없습니다. 서버가 stdio에서 시작되어 MCP 클라이언트를 기다립니다.

Claude Code, Cursor 또는 MCP 호환 호스트에 연결하려면 설정에 다음을 추가하세요:

{
  "mcpServers": {
    "powforge-captcha": {
      "command": "npx",
      "args": ["-y", "@powforge/captcha-mcp"]
    }
  }
}

또는 npx @powforge/captcha-mcp --install을 실행하여 설정 블록을 출력하세요.

Related MCP server: @bitcoinbenji/mcp

기능

PowForge pow-captcha 서비스(captcha.powforge.dev)를 세 가지 MCP 도구로 래핑합니다:

도구

목적

challenge

새로운 작업 증명 퍼즐을 요청합니다. {id, salt, difficulty, signature}를 반환합니다.

verify

해결된 nonce를 제출합니다. 5분간 유효한 HMAC 서명 액세스 토큰을 반환합니다.

status

서버 상태, 평생 통계, L402 엔드포인트 메타데이터를 제공합니다.

무료 티어는 에이전트의 CPU 시간 약 5~10초를 소모합니다(SHA-256, 기본값 14 선행 0 비트). 유료 티어는 L402(WWW-Authenticate 내 RFC 7235 + bolt11 인보이스)를 통해 라이트닝으로 3 sats를 지불합니다.

OAuth, API 키, Stripe 대신 이 방식을 사용하는 이유

방식

호출당 비용

계정 필요

에이전트 친화적

API 키

$0

예

아니오

OAuth

$0

예

아니오

Stripe 미터링

높은 오버헤드

예

아니오

PoW + L402

초 단위 시간 또는 3 sats

아니오

예

에이전트에게는 이메일 주소가 없습니다. 확인 링크를 클릭하지도 않습니다. 신용카드를 입력하지도 않습니다. PoW + 라이트닝은 완전히 자율적인 호출자를 위한 유일한 인증 기본 요소입니다.

설정

CAPTCHA_URL을 설정하여 다른 캡차 백엔드를 가리키도록 할 수 있습니다. 기본값은 http://localhost:3077이며, 개발을 위해 전체 스택을 로컬에서 실행할 수 있습니다. 프로덕션 배포 시에는 https://captcha.powforge.dev를 가리키도록 하세요.

CAPTCHA_URL=https://captcha.powforge.dev npx @powforge/captcha-mcp

로컬 개발

캡차 위젯 저장소를 복제하거나 공개 서비스를 실행하세요. MCP 서버는 status에 나열된 캡차 엔드포인트에 대한 HTTP 액세스만 있으면 됩니다.

git clone https://github.com/zekebuilds-lab/captcha-mcp
cd captcha-mcp
node src/server.js

stderr에 ready를 출력하고 stdin에서 JSON-RPC를 기다립니다.

프로토콜을 수동으로 스모크 테스트하세요:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}' | node src/server.js

serverInfo: { name: "@powforge/captcha-mcp", version: "0.1.0" }가 포함된 JSON 응답이 표시되어야 합니다.

자체 백엔드에서 토큰 검증

에이전트가 귀하의 서비스에 토큰을 제출할 때, 에이전트를 신뢰하지 않고도 다음과 같이 검증할 수 있습니다:

curl -X POST https://captcha.powforge.dev/api/token/verify \
  -H "Content-Type: application/json" \
  -d '{"token":"<token-from-verify-tool>"}'

{valid: true, method, issued_at, expires_at} 또는 {valid: false, reason}을 반환합니다.

관련 패키지

  • @powforge/captcha — 동일 서비스를 위한 브라우저 위젯.

  • @powforge/mcp-l402-gate — L402 + ID 깊이 점수를 사용하여 모든 MCP 서버를 제한하는 Express 미들웨어.

  • @powforge/mcp-identity — 에이전트 평판 오라클. 첫 호출 시 남용 방지를 위해 이 게이트와 함께 사용하세요.

라이선스

MIT

Available Tools

3 tools
challengeA

Request a fresh PoW challenge from the PowForge captcha service. Returns {id, salt, difficulty, signature, instructions}. The agent must find a nonce such that SHA-256(salt + nonce) has at least difficulty leading zero bits, then call the verify tool. Free tier — no payment required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the tool creates a new challenge (non-idempotent), returns specific fields, requires a subsequent PoW solution, and mentions free tier. Lacks rate limit info but is adequate.

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 sentences concisely cover purpose, return structure, workflow, and free tier. No redundancies or fluff.

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?

The tool has no input schema and no output schema, so the description fully covers both: explains that no input is needed and details the returned object fields along with subsequent steps. Sufficient for a simple tool.

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?

No input parameters exist, so schema coverage is 100%. The description adds value by explaining the return structure, which is not parameter semantics but compensates for missing output schema.

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?

The description clearly states the verb 'Request' and resource 'fresh PoW challenge from PowForge captcha service', and distinguishes from sibling 'verify' by mentioning the complete workflow including the call to verify.

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?

The description explains when to use (requesting a captcha challenge) and what to do next (find nonce, call verify), but does not explicitly contrast with 'status' or provide when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusA

Return PowForge captcha server health, lifetime stats (pow_solves, ln_skips, challenges_issued), and L402 endpoint metadata (scope, price_sats, paid endpoint URL). Use this to discover the Lightning skip price before paying, or as a liveness check.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden and adequately lists the return data: health, lifetime stats, and L402 metadata. It implies a read-only operation but could explicitly state no side effects.

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

Conciseness4/5

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

The description is a single dense sentence that is front-loaded with the main purpose. It could be split into two sentences for readability, but it is efficient and contains no fluff.

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

Completeness4/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 explains the return values and use cases adequately. It does not specify response format or error handling, but for a health endpoint, the provided information is sufficient for tool selection.

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?

The tool has zero parameters and schema coverage is 100% (vacuously). Baseline for zero parameters is 4, and the description adds value by detailing the output fields beyond the empty schema.

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?

The description clearly states the tool returns health, lifetime stats, and L402 endpoint metadata. It distinguishes itself from siblings 'challenge' and 'verify' by specifying use cases like discovering the Lightning skip price and liveness check.

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?

The description explicitly provides two use cases: discovering the Lightning skip price before paying and as a liveness check. It gives clear context for when to use the tool, though it does not mention when not to use it or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verifyA

Verify a PoW solution. Input: {salt, nonce, id, signature, algo?, difficulty?} from a prior challenge call plus the nonce the agent computed. Returns a 5-minute HMAC-signed token on success, or {valid: false, reason} on failure. Tokens can be re-verified server-side via POST /api/token/verify.

ParametersJSON Schema
NameRequiredDescriptionDefault
saltYesHex salt from the challenge response
nonceYesNonce string the agent computed
idYesChallenge id from the challenge response
signatureYesHMAC signature from the challenge response
algoNoHash algorithm. Default: 'sha256'
difficultyNoLeading zero bits required. Default: matches challenge.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description must disclose behavior. It explains the return value: a 5-minute HMAC-signed token on success or an error object on failure. It also mentions server-side re-verification. However, it does not cover potential side effects or rate limits.

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?

The description consists of three concise sentences: the first states the purpose, the second details input/output, and the third mentions server-side capabilities. It is front-loaded and free of superfluous content.

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

Completeness4/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 adequately explains return values (success token with lifetime, failure reason). It references the sibling 'challenge' and describes the token's re-verification endpoint. However, it lacks detail on possible failure reasons or error codes.

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 description coverage is 100%, and the description adds valuable context by listing parameters and stating they come from a prior challenge call, plus the agent-computed nonce. This clarifies the origin and usage beyond the schema descriptions.

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?

The description explicitly states 'Verify a PoW solution,' using a specific verb and resource. It clearly distinguishes from sibling tools like 'challenge' by describing input from a prior challenge call and the verification 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?

The description indicates that input comes 'from a prior challenge call,' implying a sequence (call challenge first, then verify). It does not explicitly state when not to use it or contrast with alternatives, but the context is clear.

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.

  1. 3 tool updatesv0.2.0
    • First observedchallenge
    • First observedstatus
    • First observedverify

TDQS

A4.5/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a distinct purpose: challenge initiates a PoW challenge, status checks server health and metadata, and verify submits the solution. No overlap in functionality.

Naming Consistency5/5

All tool names are single-word imperative verbs (challenge, status, verify), following a consistent naming pattern.

Tool Count5/5

Three tools are appropriate for a captcha service, covering the core workflow (challenge, verify) and a status check. Not excessive or insufficient.

Completeness4/5

The core PoW challenge-verify cycle is complete. However, the status tool mentions a Lightning skip option, but no tool to execute it, which is a minor gap.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers