Scorekeeper
Create live scoreboards, connect with OAuth, and prepare checkout or Stripe CLI payments.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"scorekeeper": {
"url": "https://www.scorekeeper.co/api/mcp"
}
}
}遠端端點
https://www.scorekeeper.co/api/mcpstreamable-http它能做什麼
工具清單
工具(11)
🟢get_service_info
Start here to discover Scorekeeper's MCP/OAuth and guest REST onboarding, supported scoreboard operations, free limits, current prices and payment steps. Public; no account or authentication needed. Does not create anything.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"publisher": {
"type": "string"
},
"version": {
"type": "string"
}
},
"required": [
"name",
"publisher",
"version"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_account
Read only the connected account's current plan, expiry, board capacity and permissions. Call before offering a paid upgrade. Requires explicit billing:read permission; returns no personal or payment details.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_checkout(requestId, offerId, months)
Create a private Stripe checkout for a current offer after the user expresses purchase intent. Explain price, duration and annual renewal before proceeding. This tool does not charge a card: give checkoutUrl privately to the buyer for payment authorization. Reuse the exact requestId/input after uncertainty; never create a replacement checkout to retry. Pro and Studio passes accept months=1–12 and never auto-renew; annual offers are recurring. Requires billing:checkout.
輸入結構描述
{
"type": "object",
"properties": {
"requestId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{8,128}$"
},
"offerId": {
"type": "string",
"enum": [
"pro_week",
"pro",
"studio",
"pro_annual",
"studio_annual"
]
},
"months": {
"type": "integer",
"minimum": 1,
"maximum": 12
}
},
"required": [
"requestId",
"offerId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"offerId": {
"type": "string",
"enum": [
"pro_week",
"pro",
"studio",
"pro_annual",
"studio_annual"
]
},
"months": {
"type": "integer"
},
"amountCents": {
"type": "integer"
},
"currency": {
"type": "string",
"const": "USD"
},
"checkoutUrl": {
"type": [
"string",
"null"
]
},
"checkoutStatus": {
"type": "string",
"enum": [
"creating",
"open",
"complete",
"expired"
]
},
"paymentStatus": {
"type": "string",
"enum": [
"pending",
"unpaid",
"paid",
"no_payment_required"
]
},
"fulfillmentStatus": {
"type": "string",
"enum": [
"pending",
"fulfilled"
]
}
},
"required": [
"id",
"offerId",
"months",
"amountCents",
"currency",
"checkoutUrl",
"checkoutStatus",
"paymentStatus",
"fulfillmentStatus"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_checkout(id)
Read the connected account's checkout by its returned opaque id. Only fulfillmentStatus=fulfilled confirms webhook-granted access; paid/completed alone is insufficient. Poll no more often than every 15 seconds. Return to the requested scoreboard task once access is granted.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"offerId": {
"type": "string",
"enum": [
"pro_week",
"pro",
"studio",
"pro_annual",
"studio_annual"
]
},
"months": {
"type": "integer"
},
"amountCents": {
"type": "integer"
},
"currency": {
"type": "string",
"const": "USD"
},
"checkoutUrl": {
"type": [
"string",
"null"
]
},
"checkoutStatus": {
"type": "string",
"enum": [
"creating",
"open",
"complete",
"expired"
]
},
"paymentStatus": {
"type": "string",
"enum": [
"pending",
"unpaid",
"paid",
"no_payment_required"
]
},
"fulfillmentStatus": {
"type": "string",
"enum": [
"pending",
"fulfilled"
]
}
},
"required": [
"id",
"offerId",
"months",
"amountCents",
"currency",
"checkoutUrl",
"checkoutStatus",
"paymentStatus",
"fulfillmentStatus"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_payment_order(requestId, offerId, months)
Prepare an owner-bound one-time payment order after purchase intent, only when get_service_info pricing.paymentMethods.stripe_cli_pay.available is true. Returns the exact @scorekeeper recipient, USD amount and unique memo for stripe pay. Supports pro_week, pro and studio (1–12 calendar months), never annual subscriptions. This tool sends no money. Separately obtain authorization for the actual Stripe transfer and payer-selected funding account. Reuse identical requestId/input on retry; never pay twice or send without the returned memo.
輸入結構描述
{
"type": "object",
"properties": {
"requestId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{8,128}$"
},
"offerId": {
"type": "string",
"enum": [
"pro_week",
"pro",
"studio"
]
},
"months": {
"type": "integer",
"minimum": 1,
"maximum": 12
}
},
"required": [
"requestId",
"offerId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"offerId": {
"type": "string",
"enum": [
"pro_week",
"pro",
"studio"
]
},
"months": {
"type": "integer"
},
"amountCents": {
"type": "integer"
},
"currency": {
"type": "string",
"const": "USD"
},
"reference": {
"type": "string",
"pattern": "^SK[A-F0-9]{20}$"
},
"createdAt": {
"type": "number"
},
"expiresAt": {
"type": "number"
},
"paymentStatus": {
"type": "string",
"enum": [
"pending",
"received",
"reversed",
"review_required"
]
},
"fulfillmentStatus": {
"type": "string",
"enum": [
"pending",
"fulfilled",
"review_required"
]
},
"orderStatus": {
"type": "string",
"enum": [
"open",
"expired",
"fulfilled",
"review_required"
]
},
"nextAction": {
"type": "string",
"enum": [
"pay_with_stripe_cli",
"check_status",
"contact_support",
"expired",
"complete"
]
},
"pollAfterSeconds": {
"type": "integer"
},
"accessExpiresAt": {
"type": [
"number",
"null"
]
},
"instructions": {
"anyOf": [
{
"type": "object",
"properties": {
"recipient": {
"type": "string",
"const": "@scorekeeper"
},
"amount": {
"type": "string"
},
"currency": {
"type": "string",
"const": "usd"
},
"memo": {
"type": "string"
},
"flags": {
"type": "array",
"items": {
"type": "string",
"const": "--agent"
}
}
},
"required": [
"recipient",
"amount",
"currency",
"memo",
"flags"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"offerId",
"months",
"amountCents",
"currency",
"reference",
"createdAt",
"expiresAt",
"paymentStatus",
"fulfillmentStatus",
"orderStatus",
"nextAction",
"pollAfterSeconds",
"accessExpiresAt",
"instructions"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡get_payment_order(id)
Check only the connected account's payment order and reconcile a bank receipt. May activate access after matching verified received funds. Only fulfillmentStatus=fulfilled confirms access; CLI output or sender status does not. Poll no more often than pollAfterSeconds (at least 60 seconds). Bank transfers can take business days. Never send a replacement payment while pending. review_required or reversed needs support reconciliation, not another payment.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"offerId": {
"type": "string",
"enum": [
"pro_week",
"pro",
"studio"
]
},
"months": {
"type": "integer"
},
"amountCents": {
"type": "integer"
},
"currency": {
"type": "string",
"const": "USD"
},
"reference": {
"type": "string",
"pattern": "^SK[A-F0-9]{20}$"
},
"createdAt": {
"type": "number"
},
"expiresAt": {
"type": "number"
},
"paymentStatus": {
"type": "string",
"enum": [
"pending",
"received",
"reversed",
"review_required"
]
},
"fulfillmentStatus": {
"type": "string",
"enum": [
"pending",
"fulfilled",
"review_required"
]
},
"orderStatus": {
"type": "string",
"enum": [
"open",
"expired",
"fulfilled",
"review_required"
]
},
"nextAction": {
"type": "string",
"enum": [
"pay_with_stripe_cli",
"check_status",
"contact_support",
"expired",
"complete"
]
},
"pollAfterSeconds": {
"type": "integer"
},
"accessExpiresAt": {
"type": [
"number",
"null"
]
},
"instructions": {
"anyOf": [
{
"type": "object",
"properties": {
"recipient": {
"type": "string",
"const": "@scorekeeper"
},
"amount": {
"type": "string"
},
"currency": {
"type": "string",
"const": "usd"
},
"memo": {
"type": "string"
},
"flags": {
"type": "array",
"items": {
"type": "string",
"const": "--agent"
}
}
},
"required": [
"recipient",
"amount",
"currency",
"memo",
"flags"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"offerId",
"months",
"amountCents",
"currency",
"reference",
"createdAt",
"expiresAt",
"paymentStatus",
"fulfillmentStatus",
"orderStatus",
"nextAction",
"pollAfterSeconds",
"accessExpiresAt",
"instructions"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_scoreboard(requestId, title, teams)
Create a public, shareable two-team scoreboard at zero. Requires explicit user intent to create; title and team names are public. Free boards allow 50 total spectator views and show branding. Retry the identical requestId and input after a timeout.
輸入結構描述
{
"type": "object",
"properties": {
"requestId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{8,128}$"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"teams": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [
{
"type": "object",
"properties": {
"name": {
"$ref": "#/properties/title"
}
},
"required": [
"name"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"name": {
"$ref": "#/properties/title"
}
},
"required": [
"name"
],
"additionalProperties": false
}
]
}
},
"required": [
"requestId",
"title",
"teams"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"score": {
"type": "number"
}
},
"required": [
"id",
"name",
"score"
],
"additionalProperties": false
}
},
"revision": {
"type": "string"
},
"links": {
"type": "object",
"properties": {
"spectator": {
"type": "string"
},
"manage": {
"type": [
"string",
"null"
]
},
"overlay": {
"type": "string"
}
},
"required": [
"spectator",
"manage",
"overlay"
],
"additionalProperties": false
},
"limits": {
"type": "object",
"properties": {
"spectatorViews": {
"type": [
"number",
"null"
]
},
"watermark": {
"type": "boolean"
}
},
"required": [
"spectatorViews",
"watermark"
],
"additionalProperties": false
},
"capabilities": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id",
"title",
"teams",
"revision",
"links",
"limits",
"capabilities"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_scoreboard(id)
Read a scoreboard created through this API by the connected account, including stable team IDs and current revision.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$"
}
},
"required": [
"id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"score": {
"type": "number"
}
},
"required": [
"id",
"name",
"score"
],
"additionalProperties": false
}
},
"revision": {
"type": "string"
},
"links": {
"type": "object",
"properties": {
"spectator": {
"type": "string"
},
"manage": {
"type": [
"string",
"null"
]
},
"overlay": {
"type": "string"
}
},
"required": [
"spectator",
"manage",
"overlay"
],
"additionalProperties": false
},
"limits": {
"type": "object",
"properties": {
"spectatorViews": {
"type": [
"number",
"null"
]
},
"watermark": {
"type": "boolean"
}
},
"required": [
"spectatorViews",
"watermark"
],
"additionalProperties": false
},
"capabilities": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id",
"title",
"teams",
"revision",
"links",
"limits",
"capabilities"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_scoreboards(cursor, limit)
List the connected account's API-created generic scoreboards. Does not list unrelated legacy boards. Pass nextCursor as cursor to continue until null; a filtered page can be empty.
輸入結構描述
{
"type": "object",
"properties": {
"cursor": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"scoreboards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"score": {
"type": "number"
}
},
"required": [
"id",
"name",
"score"
],
"additionalProperties": false
}
},
"revision": {
"type": "string"
},
"links": {
"type": "object",
"properties": {
"spectator": {
"type": "string"
},
"manage": {
"type": [
"string",
"null"
]
},
"overlay": {
"type": "string"
}
},
"required": [
"spectator",
"manage",
"overlay"
],
"additionalProperties": false
},
"limits": {
"type": "object",
"properties": {
"spectatorViews": {
"type": [
"number",
"null"
]
},
"watermark": {
"type": "boolean"
}
},
"required": [
"spectatorViews",
"watermark"
],
"additionalProperties": false
},
"capabilities": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id",
"title",
"teams",
"revision",
"links",
"limits",
"capabilities"
],
"additionalProperties": false
}
},
"nextCursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"scoreboards",
"nextCursor"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴update_scoreboard
Atomically set exact scores, increment scores, rename teams or change title. Use stable team IDs and the last read revision. Updates immediately appear publicly. On revision_conflict read the board and decide again; do not blindly replay a stale increment. Identical retry IDs return the previous result.
輸入結構描述
{
"type": "object",
"properties": {}
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"score": {
"type": "number"
}
},
"required": [
"id",
"name",
"score"
],
"additionalProperties": false
}
},
"revision": {
"type": "string"
},
"links": {
"type": "object",
"properties": {
"spectator": {
"type": "string"
},
"manage": {
"type": [
"string",
"null"
]
},
"overlay": {
"type": "string"
}
},
"required": [
"spectator",
"manage",
"overlay"
],
"additionalProperties": false
},
"limits": {
"type": "object",
"properties": {
"spectatorViews": {
"type": [
"number",
"null"
]
},
"watermark": {
"type": "boolean"
}
},
"required": [
"spectatorViews",
"watermark"
],
"additionalProperties": false
},
"capabilities": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id",
"title",
"teams",
"revision",
"links",
"limits",
"capabilities"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪hand_off_scoreboard(id, requestId)
Return the connected account owner’s private management link. Share it only with the intended scorer, never spectators. Does not transfer ownership. Reuse requestId on retry.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$"
},
"requestId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{8,128}$"
}
},
"required": [
"id",
"requestId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"expiresAt": {
"type": [
"number",
"null"
]
},
"transfersOwnership": {
"type": "boolean"
}
},
"required": [
"url",
"expiresAt",
"transfersOwnership"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}社群
證據