mcp

Spot market for AI inference tokens. Buyers pay per draw in USDC on Base; sellers host delivery.

사용해야 할까요

품질 및 안전성

B
설명 품질
98%
스키마 완전성
57%
이름 품질
92%
오염 위험
80%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringplace_offer에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,872토큰 (도구 정의)
~515 B일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.46%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "mcp": {
      "url": "https://mtok.market/mcp"
    }
  }
}

원격 엔드포인트

https://mtok.market/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (13)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢get_spot

Spot prices per model: the delivered OUTPUT-token rate (USD/MTok) from affirmed on-chain draws (last price, median, draw count).

입력 스키마

{
  "type": "object",
  "properties": {}
}
🟡selling_guide(supply_type)

Turnkey, executable steps to put a human's spare AI capacity on mtok.market via SELLER-HOSTED delivery — run YOUR OWN relay pointed at an upstream you control (a local Ollama/vLLM model, a subscription via a CLI bridge, or a provider key) and list a tier:direct offer; buyers pay you per chunk on-chain. Gotchas baked in. supply_type filters to one path.

입력 스키마

{
  "type": "object",
  "properties": {
    "supply_type": {
      "type": "string",
      "enum": [
        "open-weight",
        "subscription",
        "provider-key"
      ]
    }
  }
}
🟡buying_guide

Turnkey, executable steps to get a human cheap AI tokens and run their prompts on mtok.market: bid (read routes[]) or read the book for a tier:direct offer, then draw paid chunks from the seller's relay (pay each draw on-chain through MtokDripLedger, POST <relayEndpoint>/chunk, the relay verifies DrawPaid and serves). You need a funded wallet on Base.

입력 스키마

{
  "type": "object",
  "properties": {}
}
🟢get_book(model, sort)

Open offers (asks) and bids for a model. sort=input|output ranks by that dimension.

입력 스키마

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string"
    },
    "sort": {
      "type": "string",
      "enum": [
        "input",
        "output"
      ]
    }
  }
}
🟢get_draws(status, limit)

The chain-derived draw tape: contract-paid draws indexed from MtokDripLedger events on Base. status=inProcess (DrawPaid with no terminal yet) | settled (closed by DrawAffirmed or DrawDisputed). This is the canonical delivered/receipt surface; the platform records nothing off-chain.

입력 스키마

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "inProcess",
        "settled"
      ]
    },
    "limit": {
      "type": "integer"
    }
  }
}
🟢get_stats

Exchange fee model plus chain-derived volume: delivered volume + affirmed/disputed counts, all recomputable from MtokDripLedger events on Base (source:"chain").

입력 스키마

{
  "type": "object",
  "properties": {}
}
🟡register(name, pubkey)

Create an agent identity. Returns {agentId, apiKey}; send the apiKey as the x-api-key (or Authorization: Bearer) header on EVERY subsequent request to act as that agent — this transport is stateless, so it is not remembered between calls. Pass pubkey (Ed25519 SPKI PEM) if you will place signed non-custodial orders.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "pubkey": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ]
}
🟢get_me

Your agent state: open orders (offers + bids). Non-custodial — there is no platform wallet, grant, or credential vault in /me; money moves peer-to-peer on-chain, and your delivered draws are the on-chain tape (get_draws).

입력 스키마

{
  "type": "object",
  "properties": {}
}
🟡place_offer(model, inputTokens, outputTokens, inputPricePerMTok, outputPricePerMTok, ...)

List capacity for sale via SELLER-HOSTED delivery (tier:"direct" — the only advertised path). Set tier:"direct" + relayEndpoint (your relay's PUBLIC HTTPS url — a cloudflared tunnel gives one free) + settlementPubkey (your seller payout EVM address on Base) and NO credentialId: you run your own relay (mtok-relay or any conforming passthrough) pointed at an upstream you control, and buyers pay each draw on-chain through MtokDripLedger (canonical relay protocol: GET /api/guides/selling, notes.directTierProtocol). After every instance behind relayEndpoint is dual-stack, add requestHashScheme:"nonce-v1"; omit it during a mixed-fleet rollout. Set a positive price; each on-chain draw pays seller plus configured platform fee, and the platform holds nothing. Your relay is REPORT-FREE: it verifies the DrawPaid event before delivery and reports nothing (the platform indexes the draw from MtokDripLedger events; the canonical tape is GET /api/chain/draws). GET /api/models/licenses is best-effort guidance, not a gate: you are responsible for the right to sell what you list. usableForSeconds is required. SIGNING: a non-custodial market requires a client-signed Ed25519 intent — the MCP server CANNOT sign (it does not hold your key); sign tier/relayEndpoint/settlementPubkey/requestHashScheme INTO the intent params. Use the mtok SDK's offer() (it signs for you), or sign the intent yourself and pass {intent, sig}.

입력 스키마

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string"
    },
    "inputTokens": {
      "type": "integer"
    },
    "outputTokens": {
      "type": "integer"
    },
    "inputPricePerMTok": {
      "type": "number"
    },
    "outputPricePerMTok": {
      "type": "number"
    },
    "usableForSeconds": {
      "type": "integer"
    },
    "payoutAddress": {
      "type": "string"
    },
    "tier": {
      "type": "string",
      "enum": [
        "direct"
      ]
    },
    "relayEndpoint": {
      "type": "string"
    },
    "settlementPubkey": {
      "type": "string"
    },
    "requestHashScheme": {
      "type": "string",
      "enum": [
        "nonce-v1"
      ],
      "description": "Optional signed rollout marker; set only when every relay instance behind relayEndpoint is dual-stack."
    },
    "startsInSeconds": {
      "type": "integer"
    },
    "recurring": {
      "type": "boolean"
    },
    "intent": {
      "type": "object"
    },
    "sig": {
      "type": "string"
    }
  },
  "required": [],
  "anyOf": [
    {
      "required": [
        "intent",
        "sig"
      ]
    },
    {
      "required": [
        "model",
        "inputTokens",
        "outputTokens",
        "inputPricePerMTok",
        "outputPricePerMTok",
        "usableForSeconds",
        "relayEndpoint",
        "settlementPubkey",
        "payoutAddress"
      ]
    }
  ]
}
🟡place_bid(model, inputTokens, outputTokens, maxInputPricePerMTok, maxOutputPricePerMTok, ...)

Bid for a block. The bid response returns routes[] — the crossing SELLER-HOSTED offers (lowest price first), each {offerId, sellerId, relayEndpoint, settlementPubkey, requestHashScheme?, inputPricePerMTok, outputPricePerMTok, availableInputTokens, availableOutputTokens}. Pick a route and DRAW paid chunks from its relayEndpoint (pay each draw on-chain through MtokDripLedger using /api/config, POST <relayEndpoint>/chunk, then affirmDraw/disputeDraw on-chain — see buying_guide / drawFromSeller). priceOn=input|output ranks matches by one dimension. You ALWAYS need a funded wallet on Base (there is no no-wallet path). SIGNING: a non-custodial market requires a client-signed Ed25519 intent — the MCP server CANNOT sign (it does not hold your key). Use the mtok SDK's bid() (it signs for you), or sign the intent yourself and pass {intent, sig}.

입력 스키마

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string"
    },
    "inputTokens": {
      "type": "integer"
    },
    "outputTokens": {
      "type": "integer"
    },
    "maxInputPricePerMTok": {
      "type": "number"
    },
    "maxOutputPricePerMTok": {
      "type": "number"
    },
    "priceOn": {
      "type": "string",
      "enum": [
        "input",
        "output"
      ]
    },
    "maxStartDelaySeconds": {
      "type": "integer"
    },
    "intent": {
      "type": "object"
    },
    "sig": {
      "type": "string"
    }
  },
  "required": [],
  "anyOf": [
    {
      "required": [
        "intent",
        "sig"
      ]
    },
    {
      "required": [
        "model",
        "inputTokens",
        "outputTokens",
        "maxInputPricePerMTok",
        "maxOutputPricePerMTok"
      ]
    }
  ]
}
🔴cancel_order(side, id)

Cancel one of your open orders. side: offer|bid.

입력 스키마

{
  "type": "object",
  "properties": {
    "side": {
      "type": "string",
      "enum": [
        "offer",
        "bid"
      ]
    },
    "id": {
      "type": "string"
    }
  },
  "required": [
    "side",
    "id"
  ]
}
🟢get_reputation(agentId)

A seller's reputation: score, tier, recommendedMaxChunkUsd (the per-draw size a buyer should risk in the direct tier), plus a chain object {affirmed, disputed, deliveredUsd} folded from MtokDripLedger events (source:"chain").

입력 스키마

{
  "type": "object",
  "properties": {
    "agentId": {
      "type": "string"
    }
  },
  "required": [
    "agentId"
  ]
}
🟢get_config

Chain config a SELLER-HOSTED buyer needs to build the on-chain draw payment: { feeAddress, feeBps, dustThresholdUsd, chainId, usdcAddress, dripContractAddress }. Pay each draw through the MtokDripLedger contract at dripContractAddress (payDraw), then affirmDraw/disputeDraw on-chain; the seller relay verifies the DrawPaid event before delivery.

입력 스키마

{
  "type": "object",
  "properties": {}
}

권장 프롬프트

retrieve_data
Get details about [item] from mcp
예상 도구: get_spot
fetch_info
Fetch [information type] using mcp
예상 도구: get_spot

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 13개
검증됨버전이 기록되지 않음도구 13개