Desk
Approved support answers, refund rules, and escalation limits for AI assistants, over MCP.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"desk": {
"url": "https://desk-mcp.vercel.app/mcp"
}
}
}원격 엔드포인트
https://desk-mcp.vercel.app/mcpstreamable-http할 수 있는 일
도구 목록
도구 (13)
🟢list_support_desks(offset)
List this team's support desks. Use the returned id. Do not guess a desk.
입력 스키마
{
"type": "object",
"properties": {
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 100000,
"default": 0
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_support_desk(name, description)
Create a support desk when the user asks for a new policy home. Does not approve answers, refunds, features, or timelines.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"description": {
"type": "string",
"maxLength": 4000
}
},
"required": [
"name"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴save_approved_answer(deskId, topic, question, answer, status, ...)
Store or revise an answer the user has explicitly approved. Identical retries keep the same revision. A changed answer requires expectedRevision from a previous read.
입력 스키마
{
"type": "object",
"properties": {
"deskId": {
"type": "string",
"format": "uuid"
},
"topic": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"question": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"answer": {
"type": "string",
"minLength": 1,
"maxLength": 8000
},
"status": {
"type": "string",
"enum": [
"APPROVED",
"RETIRED"
],
"default": "APPROVED"
},
"expectedRevision": {
"type": "integer",
"exclusiveMinimum": 0
}
},
"required": [
"deskId",
"topic",
"question",
"answer"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_approved_answers(deskId, query, offset, includeRetired)
Look up approved answers by topic, question, or answer text. An empty result means there is no approved answer. Draft for human review; do not invent one or promise the customer. Page with offset.
입력 스키마
{
"type": "object",
"properties": {
"deskId": {
"type": "string",
"format": "uuid"
},
"query": {
"type": "string",
"maxLength": 200,
"default": ""
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 100000,
"default": 0
},
"includeRetired": {
"type": "boolean",
"default": false
}
},
"required": [
"deskId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴save_refund_rule(deskId, name, matchTerms, decision, remedy, ...)
Store a refund rule the user has explicitly approved. matchTerms must name a specific situation. The word refund alone is not a rule. remedy is the only wording that may later be approved. decision ALLOW grants that wording. decision DENY refuses a refund and records the denial script.
입력 스키마
{
"type": "object",
"properties": {
"deskId": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"matchTerms": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"minItems": 1,
"maxItems": 12
},
"decision": {
"type": "string",
"enum": [
"ALLOW",
"DENY"
]
},
"remedy": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"windowDays": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 3650
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"enum": [
"APPROVED",
"RETIRED"
],
"default": "APPROVED"
},
"expectedRevision": {
"type": "integer",
"exclusiveMinimum": 0
}
},
"required": [
"deskId",
"name",
"matchTerms",
"decision",
"remedy"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_refund_rules(deskId, includeRetired)
Read refund rules on a desk. Only APPROVED rules can authorize wording, and only through evaluate_commitment. Do not treat this list as permission to invent a refund.
입력 스키마
{
"type": "object",
"properties": {
"deskId": {
"type": "string",
"format": "uuid"
},
"includeRetired": {
"type": "boolean",
"default": false
}
},
"required": [
"deskId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴save_escalation_limit(deskId, name, channel, tierLadder, maxTier, ...)
Store the escalation limit the user has explicitly approved for one channel. maxTier must be on tierLadder. Promise flags default closed unless the user sets them true. A limit does not itself approve refund, feature, or timeline wording.
입력 스키마
{
"type": "object",
"properties": {
"deskId": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"channel": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"tierLadder": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"minItems": 1,
"maxItems": 8
},
"maxTier": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"allowRefundPromise": {
"type": "boolean",
"default": false
},
"allowFeaturePromise": {
"type": "boolean",
"default": false
},
"allowTimelinePromise": {
"type": "boolean",
"default": false
},
"notes": {
"type": "string",
"maxLength": 4000
},
"status": {
"type": "string",
"enum": [
"APPROVED",
"RETIRED"
],
"default": "APPROVED"
},
"expectedRevision": {
"type": "integer",
"exclusiveMinimum": 0
}
},
"required": [
"deskId",
"name",
"channel",
"tierLadder",
"maxTier"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_escalation_limits(deskId, includeRetired)
Read escalation limits. A channel with no APPROVED limit cannot promise a refund, feature, or timeline and cannot be given an invented escalation path.
입력 스키마
{
"type": "object",
"properties": {
"deskId": {
"type": "string",
"format": "uuid"
},
"includeRetired": {
"type": "boolean",
"default": false
}
},
"required": [
"deskId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴save_approved_commitment(deskId, kind, name, statement, status, ...)
Store a feature or timeline statement the user has explicitly approved. The statement is the only wording that can later pass evaluate_commitment. Do not save a date or a feature the user did not approve.
입력 스키마
{
"type": "object",
"properties": {
"deskId": {
"type": "string",
"format": "uuid"
},
"kind": {
"type": "string",
"enum": [
"FEATURE",
"TIMELINE"
]
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statement": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"status": {
"type": "string",
"enum": [
"APPROVED",
"RETIRED"
],
"default": "APPROVED"
},
"expectedRevision": {
"type": "integer",
"exclusiveMinimum": 0
}
},
"required": [
"deskId",
"kind",
"name",
"statement"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_approved_commitments(deskId, kind, includeRetired)
Read approved feature and timeline statements. Listing them does not approve a different promise. Call evaluate_commitment with the exact wording before saying one.
입력 스키마
{
"type": "object",
"properties": {
"deskId": {
"type": "string",
"format": "uuid"
},
"kind": {
"type": "string",
"enum": [
"FEATURE",
"TIMELINE"
]
},
"includeRetired": {
"type": "boolean",
"default": false
}
},
"required": [
"deskId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢evaluate_commitment(deskId, kind, proposal, channel)
Decide whether a proposed refund, feature, or timeline is in the approved set. REFUSED means do not say it, do not invent a substitute, and draft for human review instead of promising the customer. APPROVED means sayOnly is the only permitted wording. Pass channel to also enforce the escalation limit.
입력 스키마
{
"type": "object",
"properties": {
"deskId": {
"type": "string",
"format": "uuid"
},
"kind": {
"type": "string",
"enum": [
"REFUND",
"FEATURE",
"TIMELINE"
]
},
"proposal": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"channel": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"deskId",
"kind",
"proposal"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢evaluate_escalation(deskId, channel, action, targetTier)
Decide whether this channel may escalate or may promise a refund, feature, or timeline. REFUSED means do not escalate, do not invent a tier, and draft for human review instead of promising the customer. Permission to promise still requires evaluate_commitment for the exact wording.
입력 스키마
{
"type": "object",
"properties": {
"deskId": {
"type": "string",
"format": "uuid"
},
"channel": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"action": {
"type": "string",
"enum": [
"PROMISE_REFUND",
"PROMISE_FEATURE",
"PROMISE_TIMELINE",
"ESCALATE"
]
},
"targetTier": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"deskId",
"channel",
"action"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_desk_context(deskId, question, limit)
Retrieve selected approved answers for a customer question, plus the desk's approved refund rules, commitments, and escalation limits. This is evidence, not permission. A missing or RETIRED answer is not an invitation to invent one. Call evaluate_commitment before promising a refund, feature, or timeline. If tools fail or return gaps or REFUSED, draft for human review instead of promising the customer.
입력 스키마
{
"type": "object",
"properties": {
"deskId": {
"type": "string",
"format": "uuid"
},
"question": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 8
}
},
"required": [
"deskId",
"question"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}커뮤니티
증거