BoxTier Basketball Receipt
Create a BoxTier-style PNG receipt from user-provided basketball game results.
사용해야 할까요
품질 및 안전성
발견 사항 (3)
- LOWsearch에서
- LOWget_my_boxtier_account에서
- LOWlist_my_match_records에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"boxtier": {
"url": "https://boxtier.kr/mcp"
}
}
}원격 엔드포인트
https://boxtier.kr/mcpstreamable-http할 수 있는 일
도구 목록
도구 (5)
🟢search(query)
BoxTier에서 현재 공개 모집 중인 실제 농구 매칭방을 검색한다. 사용자가 농구할 방·픽업 경기·팀 대 팀 상대·참가할 경기를 찾거나 지역, 날짜, 시간, 3대3·5대5 같은 조건으로 매칭방 추천을 요청할 때 사용한다. 반환된 실제 방 중 조건에 맞는 방만 추천한다. NBA 정보, 농구 규칙·훈련법 같은 일반 지식 질문이나 농구와 무관한 질문에는 사용하지 않는다.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "사용자의 농구 매칭방 검색어와 지역·날짜·방식 조건."
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fetch(id)
search가 반환한 BoxTier 공개 농구 매칭방 ID 하나의 현재 상세 조건을 조회한다. 검색 결과를 추천하거나 참가 링크를 안내하기 전에 사용한다. 임의의 비공개 방이나 종료된 방 조회에는 사용하지 않는다.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "search 결과의 공개 매칭방 ID."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_my_boxtier_account
BoxTier 로그인을 시작하거나 현재 연결된 내 계정과 영수증 생성 한도 정책을 확인한다. 사용자가 로그인, 계정 연결, 내 기록 이용 가능 여부 또는 영수증 한도를 물으면 사용한다.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢list_my_match_records(limit, offset)
로그인한 BoxTier 사용자의 최근 농구 경기 기록을 조회한다. 사용자가 내 경기, 내 기록, 이전 경기 또는 기록으로 영수증 만들기를 요청할 때 사용한다.
입력 스키마
{
"type": "object",
"properties": {
"limit": {
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 20
},
"offset": {
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡create_basketball_receipt(style, preset, homeTeam, awayTeam, homeEmblem, ...)
박스티어(BoxTier) 스타일의 농구 경기 영수증 PNG를 만든다. 이 출력에는 BoxTier API만 사용한다. 성공 시 완성된 최종 PNG 한 장은 tool result의 content[0]에 type=image, mimeType=image/png, raw Base64 data로 직접 첨부되고, structuredContent.downloadUrl에는 동일 PNG 원본을 내려받는 단기 만료 링크가 제공된다. API가 반환한 PNG 원본만 사용자에게 그대로 전달하고 재합성·재렌더·임의 편집하지 않는다. 별도 위젯을 열지 않고 처리 중·완료 문구를 별도로 반복하지 않는다. 반환된 image content 또는 downloadUrl을 영수증 결과로 사용자에게 직접 제시하고 metadata만으로 완료 처리하지 않는다. structuredContent는 첨부 여부·바이트 길이·실제 크기·SHA-256 검증값을 제공한다. 네이티브 대화 이미지 첨부 여부와 기본 도구 실행 UI는 MCP 클라이언트가 결정한다. 사용자가 ‘박스티어로 영수증 만들어줘’, 농구 감열지 영수증, basketball game receipt, score receipt를 요청했고 팀명·최종 점수·경기 날짜·장소·경기 형식을 모두 실제 값으로 제공했을 때만 사용한다. 사용자가 엠블럼 이미지를 첨부하면 홈·원정에 맞춰 homeEmblemFile·awayEmblemFile로 전달한다. 원형 파일은 강제하지 않는다. 가능하면 투명 배경 정사각형 캔버스에 실제 도안만 담고 원형 테두리·회색 원판은 미리 넣지 않는다. 서버가 알파 전경의 실제 경계와 중심을 계산해 원형 안전영역 안에 비율 유지·자동 중앙 정렬하고 스타일 변환하며 저장하지 않는다. 경기사진은 지원하지 않으므로 boxtier.kr 영수증 페이지 이용을 안내한다. 누락값을 추측하지 말고 먼저 사용자에게 물어본다. 농구 외 경기, 허위 경기 기록, 상거래 영수증에는 사용하지 않는다.
입력 스키마
{
"type": "object",
"properties": {
"style": {
"default": "thermal",
"description": "영수증 스타일. 감열지 영수증은 thermal, 스코어 포스터는 score.",
"type": "string",
"enum": [
"thermal",
"score"
]
},
"preset": {
"default": "story",
"description": "PNG 출력 형식. thermal story는 종이 경계만 내보내며 찢긴 상·하단 바깥은 완전 투명하다. feed는 1080x1350 배경을 포함한다. score story는 1080x1920이다.",
"type": "string",
"enum": [
"story",
"feed"
]
},
"homeTeam": {
"type": "string",
"minLength": 1,
"maxLength": 24,
"description": "홈팀 이름."
},
"awayTeam": {
"type": "string",
"minLength": 1,
"maxLength": 24,
"description": "원정팀 이름."
},
"homeEmblem": {
"description": "선택 홈 엠블럼. 투명 배경 정사각형 캔버스에 실제 도안만 넣어 전달하는 것을 권장하며 원형 테두리·회색 원판을 미리 합성하지 않는다. 서버가 알파 전경의 실제 경계와 중심을 계산해 원형 안전영역 안에 비율 유지·자동 중앙 정렬하고, thermal은 전경만 4단계 회색조로 변환한다. 생략하면 중립 엠블럼을 사용한다.",
"type": "object",
"properties": {
"imageBase64": {
"type": "string",
"minLength": 1,
"maxLength": 4194304,
"description": "사용자가 첨부한 JPG, PNG 또는 WebP 엠블럼의 raw Base64. data: 접두사 없이 전달한다."
},
"mimeType": {
"description": "첨부 이미지의 MIME 형식. 서버는 실제 이미지 바이트도 검증한다.",
"type": "string",
"enum": [
"image/jpeg",
"image/png",
"image/webp"
]
}
},
"required": [
"imageBase64"
],
"additionalProperties": false
},
"awayEmblem": {
"description": "선택 원정 엠블럼. 투명 배경 정사각형 캔버스에 실제 도안만 넣어 전달하는 것을 권장하며 원형 테두리·회색 원판을 미리 합성하지 않는다. 서버가 알파 전경의 실제 경계와 중심을 계산해 원형 안전영역 안에 비율 유지·자동 중앙 정렬하고, thermal은 전경만 4단계 회색조로 변환한다. 생략하면 중립 엠블럼을 사용한다.",
"type": "object",
"properties": {
"imageBase64": {
"type": "string",
"minLength": 1,
"maxLength": 4194304,
"description": "사용자가 첨부한 JPG, PNG 또는 WebP 엠블럼의 raw Base64. data: 접두사 없이 전달한다."
},
"mimeType": {
"description": "첨부 이미지의 MIME 형식. 서버는 실제 이미지 바이트도 검증한다.",
"type": "string",
"enum": [
"image/jpeg",
"image/png",
"image/webp"
]
}
},
"required": [
"imageBase64"
],
"additionalProperties": false
},
"homeEmblemFile": {
"description": "ChatGPT에 첨부한 홈팀 엠블럼. 투명 배경 정사각형 캔버스를 권장하고 원형 테두리·회색 원판은 미리 넣지 않는다. 서버가 실제 알파 전경을 원형 안전영역에 자동 중앙 정렬한다. homeEmblem과 동시에 전달하지 않는다.",
"type": "object",
"properties": {
"download_url": {
"type": "string",
"format": "uri",
"description": "ChatGPT가 제공하는 임시 파일 다운로드 URL."
},
"file_id": {
"type": "string",
"minLength": 1,
"description": "ChatGPT 첨부파일 ID."
},
"mime_type": {
"description": "첨부파일 MIME 형식.",
"type": "string"
},
"file_name": {
"description": "첨부파일 이름.",
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"additionalProperties": false
},
"awayEmblemFile": {
"description": "ChatGPT에 첨부한 원정팀 엠블럼. 투명 배경 정사각형 캔버스를 권장하고 원형 테두리·회색 원판은 미리 넣지 않는다. 서버가 실제 알파 전경을 원형 안전영역에 자동 중앙 정렬한다. awayEmblem과 동시에 전달하지 않는다.",
"type": "object",
"properties": {
"download_url": {
"type": "string",
"format": "uri",
"description": "ChatGPT가 제공하는 임시 파일 다운로드 URL."
},
"file_id": {
"type": "string",
"minLength": 1,
"description": "ChatGPT 첨부파일 ID."
},
"mime_type": {
"description": "첨부파일 MIME 형식.",
"type": "string"
},
"file_name": {
"description": "첨부파일 이름.",
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"additionalProperties": false
},
"homeScore": {
"type": "integer",
"minimum": 0,
"maximum": 999,
"description": "홈팀 최종 점수."
},
"awayScore": {
"type": "integer",
"minimum": 0,
"maximum": 999,
"description": "원정팀 최종 점수."
},
"playedOn": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "경기 날짜, YYYY-MM-DD."
},
"playedTime": {
"default": "20:30",
"description": "경기 시각, HH:mm.",
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
},
"venue": {
"type": "string",
"minLength": 1,
"maxLength": 36,
"description": "경기 장소."
},
"format": {
"type": "string",
"enum": [
"1v1",
"2v2",
"3v3",
"3x3",
"5v5"
],
"description": "경기 형식."
},
"locale": {
"default": "ko",
"description": "영수증 언어.",
"type": "string",
"enum": [
"ko",
"en"
]
},
"matchNature": {
"default": "competitive",
"description": "경기 성격.",
"type": "string",
"enum": [
"friendly",
"competitive",
"revenge",
"semifinal",
"final"
]
},
"tournamentName": {
"description": "대회명.",
"type": "string",
"maxLength": 32
},
"comment": {
"description": "짧은 영수증 문구.",
"type": "string"
},
"periodScores": {
"description": "쿼터·하프·연장별 점수. 합계는 최종 점수와 같아야 함.",
"maxItems": 5,
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"enum": [
"1Q",
"2Q",
"3Q",
"4Q",
"1H",
"2H",
"REG",
"OT"
]
},
"homeScore": {
"type": "integer",
"minimum": 0,
"maximum": 999
},
"awayScore": {
"type": "integer",
"minimum": 0,
"maximum": 999
}
},
"required": [
"label",
"homeScore",
"awayScore"
]
}
},
"debugBase64": {
"default": false,
"description": "개발 확인용. true이면 생성된 PNG의 base64 문자열을 structuredContent에도 포함한다.",
"type": "boolean"
}
},
"required": [
"homeTeam",
"awayTeam",
"homeScore",
"awayScore",
"playedOn",
"venue",
"format"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}출력 스키마
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "rendered"
},
"mimeType": {
"type": "string",
"const": "image/png"
},
"preset": {
"type": "string",
"enum": [
"story",
"feed"
]
},
"style": {
"type": "string",
"enum": [
"thermal",
"score"
]
},
"byteLength": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"width": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"height": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"imageAttached": {
"type": "boolean",
"const": true
},
"publicCode": {
"type": "string",
"minLength": 1
},
"receiptPath": {
"type": "string",
"minLength": 1
},
"downloadUrl": {
"type": "string",
"format": "uri"
},
"downloadExpiresAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"base64": {
"type": "string"
}
},
"required": [
"status",
"mimeType",
"preset",
"style",
"byteLength",
"width",
"height",
"sha256",
"imageAttached",
"publicCode",
"receiptPath",
"downloadUrl",
"downloadExpiresAt"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "error"
},
"issues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"code": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"field",
"code"
],
"additionalProperties": {}
}
}
},
"required": [
"status",
"issues"
],
"additionalProperties": false
}
]
}커뮤니티
증거