← The evidence ledger
Evidence row 1234587
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 5e29bfe3-044e-4dca-a2c4-2b92028a50c7
- Recorded
- Previous row
- #1052418
- Body SHA-256
- 50671fba6259415533abdca9a59d8215ec59e076b45e9b41008fa9c0f51ab659
- Leaf
- 0x37ce1331fc4b2f3a3216c9114f617657351fdbd41670505f95cec092d5af9616
What was observed
{
"count": 18,
"tools": [
{
"description": "모든 안건을 지금 마감하고 결과를 확정한다. 되돌릴 수 없다. 공고한 마감보다 일찍 닫으면 결의가 다투어질 수 있다 — 주최자가 지시한 경우에만. manageToken 필요.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"confirm": {
"const": true,
"description": "주최자의 마감 지시를 받았다는 뜻. 반드시 true",
"type": "boolean"
},
"manageToken": {
"description": "주최자가 넘겨준 관리 토큰(영숫자). 대시보드 주소의 # 뒤 값. 주최자가 확인·결제한 뒤에만 생긴다",
"type": "string"
},
"meetingId": {
"description": "집회 번호. create_draft_meeting 응답의 meetingId 또는 대시보드 주소의 m= 값. 예: \"m_8f3kq2\"",
"type": "string"
}
},
"required": [
"meetingId",
"manageToken",
"confirm"
],
"type": "object"
},
"name": "close_meeting"
},
{
"description": "집회 초안을 만든다. 초안은 \"확인 대기\" 상태라 아무것도 열리지 않고 돈도 들지 않는다 — 돌려받은 confirmUrl 을 주최자(관리인)에게 전달하면 주최자가 내용을 검토하고 체크한 뒤 휴대폰 본인인증·결제를 해야 투표가 열린다. 관리 토큰은 주최자가 받으며, 운영을 맡길지는 주최자가 정한다. 집합건물(bldg)은 agendas[].preset 에 bldg_general / bldg_bylaw / bldg_common_change 등 법정 유형을 넣고, closesAt(전자투표 마감)은 paperClosesAt(집회일) 전날까지여야 한다. roster 는 선택이며 넣을 때는 서버에 원문을 보내지 않는다: 각 사람의 hash = sha256(\"voter:\" + 이름 + \"|\" + 생년월일(YYYYMMDD) + \"|\" + 휴대폰(숫자만)) 의 16진수, 면적 의결권이면 weight(㎡). 없으면 주최자가 대시보드에서 엑셀로 올린다.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"agendas": {
"description": "안건 목록(1~30개). 안건마다 투표가 하나씩 열린다",
"items": {
"properties": {
"description": {
"description": "안건 설명(2,000자까지). 투표 화면에 그대로 보인다",
"maxLength": 2000,
"type": "string"
},
"kind": {
"description": "\"yesno\"(찬반, 기본) 또는 \"choice\"(선택지·후보 중 고름)",
"enum": [
"yesno",
"choice"
],
"type": "string"
},
"options": {
"description": "kind 가 choice 일 때 선택지(후보) 이름 목록. 예: [\"홍길동\", \"김영희\"]",
"items": {
"type": "string"
},
"type": "array"
},
"preset": {
"description": "법정 안건 유형 키(get_resolution_requirement 의 key). 예: \"bldg_general\". etc 단체는 생략 가능",
"type": "string"
},
"title": {
"description": "안건 이름. 예: \"제1호 2026년 관리비 예산안 승인\"",
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"maxItems": 30,
"minItems": 1,
"type": "array"
},
"agent": {
"description": "에이전트 이름(기록용). 예: \"claude-desktop\"",
"type": "string"
},
"closesAt": {
"description": "전자투표 마감 시각, ISO 8601(한국 시간 오프셋 포함). 예: \"2026-11-20T18:00:00+09:00\". 집합건물은 paperClosesAt 전날까지",
"type": "string"
},
"declaredCount": {
"description": "투표할 수 있는 사람 수(구분소유자·조합원 수). 요금과 정족수의 기준. 예: 366",
"minimum": 1,
"type": "integer"
},
"isAnonymous": {
"default": true,
"description": "익명(비밀) 투표 여부. 기본 true. 법이 비밀투표를 요구하는 안건은 true 로 고정된다",
"type": "boolean"
},
"orgType": {
"description": "단체 유형 키. 예: \"bldg\"(집합건물 관리단), \"redev\"(정비사업조합), \"apt\"(입주자대표회의)",
"enum": [
"bldg",
"apt",
"redev",
"union",
"assoc",
"coop",
"housing",
"school",
"student",
"etc"
],
"type": "string"
},
"paperClosesAt": {
"description": "현장·서면 접수 마감(집회일) ISO 8601. 예: \"2026-11-21T14:00:00+09:00\". 집합건물은 closesAt 다음 날 이후",
"type": "string"
},
"roster": {
"description": "선거인 명부(선택). 해시만 보낸다. 없으면 주최자가 대시보드에서 엑셀로 올린다",
"items": {
"properties": {
"hash": {
"description": "sha256(\"voter:\" + 이름 + \"|\" + 생년월일 YYYYMMDD + \"|\" + 휴대폰 숫자만) 의 16진수 64자. 원문은 보내지 않는다",
"type": "string"
},
"weight": {
"description": "의결권(면적 ㎡). 집합건물처럼 면적 의결권이 있을 때만. 예: 84.97",
"type": "number"
}
},
"required": [
"hash"
],
"type": "object"
},
"type": "array"
},
"title": {
"description": "집회 이름. 예: \"트레젠웰가 2026년 정기 관리단집회\"",
"maxLength": 200,
"type": "string"
},
"useWeighted": {
"description": "면적 의결권 사용 여부. etc 단체만 고른다 — 법정 안건은 법이 정한다",
"type": "boolean"
}
},
"required": [
"orgType",
"title",
"declaredCount",
"agendas",
"closesAt"
],
"type": "object"
},
"name": "create_draft_meeting"
},
{
"description": "이 안건을 전자투표로 할 수 있는가 — 법이 직접 허용 / 규약·정관 근거 필요 / 불가(전자서명 요구 등) — 와 그 근거 조문.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"key": {
"description": "안건 유형 키. 예: \"coop_bylaw\", \"stock_ordinary\"",
"type": "string"
}
},
"required": [
"key"
],
"type": "object"
},
"name": "electronic_voting_basis"
},
{
"description": "서면결의서(현장 표)를 입력한다. 한 사람 = 명부 해시 + 안건별 선택지 id. 증빙 사진(data:image/… URL)이 반드시 필요하다. 전자투표한 사람이 섞이면 묶음 전체가 거절된다. 표가 더해지는 행동이다. manageToken 필요.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"evidenceImageDataUrl": {
"description": "서면결의서 묶음 사진, data:image/jpeg;base64,… 형식(필수). 해시가 체인에 남는다",
"type": "string"
},
"manageToken": {
"description": "주최자가 넘겨준 관리 토큰(영숫자). 대시보드 주소의 # 뒤 값. 주최자가 확인·결제한 뒤에만 생긴다",
"type": "string"
},
"meetingId": {
"description": "집회 번호. create_draft_meeting 응답의 meetingId 또는 대시보드 주소의 m= 값. 예: \"m_8f3kq2\"",
"type": "string"
},
"note": {
"description": "비고(선택). 예: \"11월 21일 현장 접수분\"",
"type": "string"
},
"voters": {
"description": "서면 투표자 목록. 예: [{\"hash\":\"3fa9…\",\"choices\":{\"p_1\":\"o_yes\",\"p_2\":\"o_no\"}}]",
"items": {
"properties": {
"choices": {
"additionalProperties": {
"type": "string"
},
"description": "안건 id → 선택지 id. 안건·선택지 id 는 get_dashboard 에 있다. 예: {\"p_1\":\"o_yes\"}",
"type": "object"
},
"hash": {
"description": "명부 해시(create_draft_meeting 의 hash 규칙, 64자 16진수)",
"type": "string"
}
},
"required": [
"hash",
"choices"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"meetingId",
"manageToken",
"voters",
"evidenceImageDataUrl"
],
"type": "object"
},
"name": "enter_paper_ballots"
},
{
"description": "집회의 결제 상태·안건별 집계·명부 현황. manageToken 필요.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"manageToken": {
"description": "주최자가 넘겨준 관리 토큰(영숫자). 대시보드 주소의 # 뒤 값. 주최자가 확인·결제한 뒤에만 생긴다",
"type": "string"
},
"meetingId": {
"description": "집회 번호. create_draft_meeting 응답의 meetingId 또는 대시보드 주소의 m= 값. 예: \"m_8f3kq2\"",
"type": "string"
}
},
"required": [
"meetingId",
"manageToken"
],
"type": "object"
},
"name": "get_dashboard"
},
{
"description": "초안이 확인됐는지, 결제됐는지, 투표가 열렸는지 본다. 확인 전에는 confirmToken, 확인 뒤에는 주최자가 넘겨준 manageToken 을 token 에 넣는다.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"draftId": {
"description": "create_draft_meeting 응답의 draftId. 예: \"d_7q2m9x\"",
"type": "string"
},
"token": {
"description": "확인 전에는 create_draft_meeting 응답의 confirmToken, 주최자가 확인한 뒤에는 주최자가 넘겨준 manageToken",
"type": "string"
}
},
"required": [
"draftId",
"token"
],
"type": "object"
},
"name": "get_draft_status"
},
{
"description": "투표 인원으로 세 갈래(AI 투표함·직접 투표함·맞춤 투표함) 요금을 계산한다. 부가세 포함 금액. 아무것도 바꾸지 않는다.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"people": {
"description": "투표할 수 있는 사람 수. 예: 366",
"minimum": 1,
"type": "integer"
}
},
"required": [
"people"
],
"type": "object"
},
"name": "get_quote"
},
{
"description": "집회 전체 결과보고서(안건별 표수·의결권·판정·근거·검증값). 마감 전에는 봉인(sealed). manageToken 필요.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"manageToken": {
"description": "주최자가 넘겨준 관리 토큰(영숫자). 대시보드 주소의 # 뒤 값. 주최자가 확인·결제한 뒤에만 생긴다",
"type": "string"
},
"meetingId": {
"description": "집회 번호. create_draft_meeting 응답의 meetingId 또는 대시보드 주소의 m= 값. 예: \"m_8f3kq2\"",
"type": "string"
}
},
"required": [
"meetingId",
"manageToken"
],
"type": "object"
},
"name": "get_report"
},
{
"description": "안건 유형 하나의 의결정족수(인원·의결권), 근거 조문, 전자투표 가능 여부와 근거, 소집통지 요건, 본인확인 등급, 명부 필요 여부, 주의사항.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"key": {
"description": "안건 유형 키(list_resolution_types 의 key). 예: \"bldg_general\", \"bldg_bylaw\", \"redev_general\", \"apt_rep_multi\"",
"type": "string"
}
},
"required": [
"key"
],
"type": "object"
},
"name": "get_resolution_requirement"
},
{
"description": "법령 하나의 조문 원문(조·항·호)과 개정 꼬리표, 투표함이 그 조문을 어떻게 지키는지(적용 내용), 관련 안건 유형. article 을 비우면 추적 조문 전부.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"article": {
"description": "조 번호. 예: \"제38조\". 비우면 그 법령의 추적 조문 전부",
"type": "string"
},
"law": {
"description": "법령 이름 또는 slug. 예: \"집합건물의 소유 및 관리에 관한 법률\" 또는 \"condominium\" (목록은 list_laws)",
"type": "string"
}
},
"required": [
"law"
],
"type": "object"
},
"name": "get_statute"
},
{
"description": "표 수와 의결권을 넣어 가결·부결을 판정한다. 투표함이 개표에 쓰는 함수 그대로. 집합건물은 구분소유자 수와 의결권(면적)을 모두 넣어야 두 요건이 판정된다. 아무것도 바꾸지 않는 계산이다.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"approveCount": {
"description": "찬성 인원. 예: 323",
"type": "number"
},
"approveWeight": {
"description": "찬성 의결권 합(㎡). 집합건물만. 예: 24279.3",
"type": "number"
},
"attendeeCount": {
"description": "출석(투표) 인원. 전자+서면+현장. 예: 380",
"type": "number"
},
"castWeight": {
"description": "출석 의결권 합(㎡). 집합건물만. 예: 30800",
"type": "number"
},
"directAttendanceCount": {
"description": "현장 직접 출석 인원. 정비사업(redev_*)의 10분의 1 요건에 쓴다. 예: 45",
"type": "number"
},
"eligibleCount": {
"description": "재적 인원(구분소유자·조합원 수). 예: 400",
"type": "number"
},
"eligibleWeight": {
"description": "재적 의결권 합(면적 ㎡). 집합건물만. 예: 32431.2",
"type": "number"
},
"preset": {
"description": "안건 유형 키. 예: \"bldg_general\"",
"type": "string"
}
},
"required": [
"preset"
],
"type": "object"
},
"name": "judge_resolution"
},
{
"description": "추적 법령의 시행일·공포일·조문별 개정 꼬리표·투표함 반영 내용과 시행 예정 개정.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "law_changelog"
},
{
"description": "투표함이 추적하는 한국 법령 목록 — 시행일·공포일·대조일·추적 조문·시행 예정 개정. 출처 국가법령정보센터.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_laws"
},
{
"description": "단체 유형(집합건물 관리단·아파트·정비사업조합·노동조합·사단법인·협동조합·주택조합·학교법인·학생자치·그 밖)별 안건 유형과 정족수 요약.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"group": {
"description": "단체 유형 키. 예: \"bldg\"(집합건물 관리단). 비우면 전부",
"enum": [
"bldg",
"apt",
"redev",
"union",
"assoc",
"coop",
"housing",
"school",
"student",
"etc"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_resolution_types"
},
{
"description": "소집통지를 한 날짜·방법·대상 수를 기록한다(모든 안건). 기록이 하나 더해진다. manageToken 필요.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"manageToken": {
"description": "주최자가 넘겨준 관리 토큰(영숫자). 대시보드 주소의 # 뒤 값. 주최자가 확인·결제한 뒤에만 생긴다",
"type": "string"
},
"meetingId": {
"description": "집회 번호. create_draft_meeting 응답의 meetingId 또는 대시보드 주소의 m= 값. 예: \"m_8f3kq2\"",
"type": "string"
},
"method": {
"description": "통지 방법. 예: \"등기우편\", \"문자\", \"게시판 공고\", \"이메일\"",
"type": "string"
},
"note": {
"description": "비고(선택). 예: \"우편 발송 영수증 보관\"",
"type": "string"
},
"notifiedOn": {
"description": "통지한 날짜 YYYY-MM-DD. 예: \"2026-11-05\"",
"type": "string"
},
"recipients": {
"description": "통지 대상 수. 예: 366",
"type": "integer"
}
},
"required": [
"meetingId",
"manageToken",
"notifiedOn",
"method"
],
"type": "object"
},
"name": "record_notice"
},
{
"description": "운영자가 대신 개설·집계하는 맞춤 투표함(1인당 300원)을 신청한다. 담당자가 연락한다. 담당자 이름·연락처가 필요하다. 사람에게 연락이 가는 행동이다 — 주최자가 원할 때만.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"contactEmail": {
"description": "담당자 이메일(선택). 예: \"manager@example.com\"",
"type": "string"
},
"contactName": {
"description": "담당자 이름. 예: \"김기용\"",
"type": "string"
},
"contactPhone": {
"description": "담당자 휴대폰(숫자·하이픈). 예: \"010-1234-5678\"",
"type": "string"
},
"headCount": {
"description": "투표 예정 인원(선택). 예: 366",
"type": "integer"
},
"message": {
"description": "요청 내용(2,000자까지). 집회일·안건·명부 상태 등",
"maxLength": 2000,
"type": "string"
},
"orgName": {
"description": "단체 이름. 예: \"트레젠웰가 관리단\"",
"type": "string"
},
"orgType": {
"description": "단체 유형 키(선택). 예: \"bldg\"",
"type": "string"
}
},
"required": [
"orgName",
"contactName",
"contactPhone"
],
"type": "object"
},
"name": "request_consult"
},
{
"description": "질문·안건 이름·법령 이름으로 안건 유형과 법령을 찾는다.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"query": {
"description": "한국어 검색어. 예: \"관리규약 개정\", \"재건축 총회 정족수\", \"집합건물법\"",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search"
},
{
"description": "선거인 명부(해시)를 모든 안건에 올린다. 이미 있는 명부는 통째로 바뀐다. 원문은 보내지 않는다 — create_draft_meeting 의 hash 규칙과 같다. 첫 표가 들어온 뒤에는 바꿀 수 없다. manageToken 필요.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"entries": {
"description": "명부 전체(한 사람에 하나). 예: [{\"hash\":\"3fa9…(64자)\",\"weight\":84.97}]",
"items": {
"properties": {
"hash": {
"description": "sha256(\"voter:\" + 이름 + \"|\" + 생년월일 YYYYMMDD + \"|\" + 휴대폰 숫자만) 의 16진수 64자. 원문은 보내지 않는다",
"type": "string"
},
"weight": {
"description": "의결권(면적 ㎡). 집합건물처럼 면적 의결권이 있을 때만. 예: 84.97",
"type": "number"
}
},
"required": [
"hash"
],
"type": "object"
},
"type": "array"
},
"manageToken": {
"description": "주최자가 넘겨준 관리 토큰(영숫자). 대시보드 주소의 # 뒤 값. 주최자가 확인·결제한 뒤에만 생긴다",
"type": "string"
},
"meetingId": {
"description": "집회 번호. create_draft_meeting 응답의 meetingId 또는 대시보드 주소의 m= 값. 예: \"m_8f3kq2\"",
"type": "string"
}
},
"required": [
"meetingId",
"manageToken",
"entries"
],
"type": "object"
},
"name": "upload_roster"
}
]
}What the leaf hashes
{"body":"50671fba6259415533abdca9a59d8215ec59e076b45e9b41008fa9c0f51ab659","id":1234587,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793348473498640,"prev":1052418,"subject":"5e29bfe3-044e-4dca-a2c4-2b92028a50c7","subject_kind":"endpoint"}Proof
Its day has not closed yet. A day closes ten minutes after midnight UTC; the proof appears here then.