MCP 서버

hunchful

io.hunchful/hunchful
생산성 인증 필요 MCP 2025-11-25

이 MCP로 할 수 있는 일

Maintains a consent-based, revisable model of a person's working preferences and supports collaboration matching and refinement.

add_hunch
Record a NEW hunch the person just confirmed in conversation — a custom axis with their answer, added directly to their model (visible, revisable, removable by them). OWNER-LEVEL trust required: OAuth as the owner, or the editToken. Only record what the person actually said — never invent or infer a hunch they didn't confirm. For situational axes name it 'When <situation>'. If they haven't answered yet, use suggest_question instead.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'poleA', 'poleB', 'pole'], 'properties': {'by': {'type': 'string', 'description': 'Your name, e.g. "claude" — recorded in the revision history.'}, 'name': {'type': 'string', 'description': 'Short axis name, e.g. "When plans change suddenly".'}, 'pole': {'enum': ['A', 'B'], 'type': 'string', 'description': 'The pole the person SAID fits them.'}, 'poleA': {'type': 'string', 'description': 'Pole A label.'}, 'poleB': {'type': 'string', 'description': 'Pole B label.'}, 'modelId': {'type': 'string'}, 'editToken': {'type': 'string', 'description': "The model's edit key, if not connected via OAuth."}, 'confidence': {'type': 'number', 'maximum': 0.97, 'minimum': 0.05, 'description': '0.05–0.97; default 0.7 for a fresh self-stated answer.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ok', 'patternId', 'urls', 'note'], 'properties': {'ok': {'type': 'boolean'}, 'note': {'type': 'string'}, 'urls': {'type': 'object', 'required': ['publicPage', 'editHub', 'introductions'], 'properties': {'editHub': {'type': 'string'}, 'publicPage': {'type': 'string'}, 'introductions': {'type': 'string'}}, 'additionalProperties': False}, 'falsifier': {'type': 'string'}, 'patternId': {'type': 'string'}, 'statement': {'type': 'string'}}, 'additionalProperties': False}
apply_refinement
Apply a refinement directly as one logged revision (append evidence pointers, nudge confidence). Authorized by OAuth (own model) or an editToken. Prefer propose_refinement unless the owner asked for direct writes.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['patternId', 'direction'], 'properties': {'source': {'type': 'string', 'description': 'Provenance pointer only, e.g. "agent:chatgpt". No free text, no names.'}, 'direction': {'enum': ['strengthens', 'weakens'], 'type': 'string', 'description': 'Does the evidence strengthen or weaken this hunch?'}, 'patternId': {'type': 'string', 'description': "One of the model's refinable axis ids (see read_model → refinablePatternIds)."}, 'observedAt': {'type': 'string', 'description': 'ISO date the evidence was observed (defaults to now).'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1}, 'modelId': {'type': 'string'}, 'editToken': {'type': 'string', 'description': "The model's edit key, if not connected via OAuth."}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ok', 'applied', 'updatedAt', 'urls', 'note'], 'properties': {'ok': {'type': 'boolean'}, 'note': {'type': 'string'}, 'urls': {'type': 'object', 'required': ['publicPage', 'editHub', 'introductions'], 'properties': {'editHub': {'type': 'string'}, 'publicPage': {'type': 'string'}, 'introductions': {'type': 'string'}}, 'additionalProperties': False}, 'applied': {'type': 'array', 'items': {'type': 'object', 'required': ['patternId', 'direction', 'confidence'], 'properties': {'direction': {'type': 'string'}, 'patternId': {'type': 'string'}, 'confidence': {'type': 'number'}}, 'additionalProperties': False}}, 'updatedAt': {'type': 'string'}}, 'additionalProperties': False}
find_complementary_thinkers
Which famous thinkers would COMPLETE this person — opposite poles on the axes where opposites unstick each other (not similarity). Open read; great for curiosity and for explaining what a complementary collaborator looks like. Share the pages as links.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'modelId': {'type': 'string', 'description': "Model id. Omit when connected via OAuth to use the person's own model."}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['modelId', 'note', 'complements', 'humanVersion'], 'properties': {'note': {'type': 'string'}, 'modelId': {'type': 'string'}, 'complements': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'tag', 'blurb', 'complementaryAxes', 'url'], 'properties': {'tag': {'type': 'string'}, 'url': {'type': 'string'}, 'name': {'type': 'string'}, 'blurb': {'type': 'string'}, 'complementaryAxes': {'type': 'array', 'items': {'type': 'object', 'required': ['axis', 'why'], 'properties': {'why': {'type': 'string'}, 'axis': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'humanVersion': {'type': 'string'}}, 'additionalProperties': False}
find_matches
Look for complementary PEOPLE for the connected person (rule: agents propose, humans accept — this creates pending proposals the human decides on in their Hunchful hub; identities are never revealed here). Requires OAuth as the owner or the model's editToken, and the person must have joined introductions on their matches page.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'modelId': {'type': 'string'}, 'direction': {'enum': ['seek', 'offer'], 'type': 'string', 'description': 'seek = they want a fresh angle; offer = they can offer one. Default seek.'}, 'editToken': {'type': 'string', 'description': "The model's edit key, if not connected via OAuth."}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['proposals', 'matchesUrl', 'note'], 'properties': {'note': {'type': 'string'}, 'proposals': {'type': 'array', 'items': {'type': 'object', 'required': ['proposalId', 'rationale', 'otherIntent', 'mySideAccepted', 'otherSideAccepted', 'status'], 'properties': {'status': {'type': 'string'}, 'rationale': {'type': 'object', 'properties': {}, 'additionalProperties': True}, 'proposalId': {'type': 'string'}, 'otherIntent': {'type': 'string'}, 'mySideAccepted': {'type': 'boolean'}, 'otherSideAccepted': {'type': 'boolean'}}, 'additionalProperties': False}}, 'matchesUrl': {'type': 'string'}}, 'additionalProperties': False}
propose_refinement
Propose a refinement (provenance pointers only). It lands in the owner's confirm queue — nothing changes until they accept. Authorized by OAuth (own model) or a contributionToken.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['patternId', 'direction'], 'properties': {'source': {'type': 'string', 'description': 'Provenance pointer only, e.g. "agent:chatgpt". No free text, no names.'}, 'direction': {'enum': ['strengthens', 'weakens'], 'type': 'string', 'description': 'Does the evidence strengthen or weaken this hunch?'}, 'patternId': {'type': 'string', 'description': "One of the model's refinable axis ids (see read_model → refinablePatternIds)."}, 'observedAt': {'type': 'string', 'description': 'ISO date the evidence was observed (defaults to now).'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1}, 'modelId': {'type': 'string'}, 'contributionToken': {'type': 'string', 'description': 'Scoped propose-only key, if not connected via OAuth.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'proposalIds', 'reviewUrl', 'note'], 'properties': {'note': {'type': 'string'}, 'status': {'type': 'string'}, 'reviewUrl': {'type': 'string'}, 'proposalIds': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
read_model
Read a Hunchful collaboration model: its hunches (axis, pole, confidence), the axis ids you can refine, and how you're connected. Start here. With OAuth, omit modelId to read the connected person's own model.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'modelId': {'type': 'string', 'description': "Model id. Omit when connected via OAuth to use the person's own model."}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['modelId', 'connectedAs', 'libraryVersion', 'hunches', 'refinablePatternIds', 'openHunches', 'guidance', 'constraints', 'canApplyDirectly', 'urls', 'render'], 'properties': {'urls': {'type': 'object', 'required': ['publicPage', 'editHub', 'introductions'], 'properties': {'editHub': {'type': 'string'}, 'publicPage': {'type': 'string'}, 'introductions': {'type': 'string'}}, 'additionalProperties': False}, 'render': {'type': 'string'}, 'hunches': {'type': 'array', 'items': {'type': 'object', 'required': ['patternId', 'pole', 'statement', 'confidence', 'uncertainty', 'falsifier', 'axis'], 'properties': {'axis': {'type': 'object', 'required': ['name', 'poleA', 'poleB'], 'properties': {'name': {'type': 'string'}, 'poleA': {'type': 'string'}, 'poleB': {'type': 'string'}}, 'additionalProperties': False}, 'pole': {'enum': ['A', 'B'], 'type': 'string'}, 'falsifier': {'type': 'string'}, 'patternId': {'type': 'string'}, 'statement': {'type': 'string'}, 'confidence': {'type': 'number'}, 'appliesWhen': {'type': 'string'}, 'situational': {'type': 'boolean'}, 'uncertainty': {'type': 'string'}}, 'additionalProperties': False}}, 'modelId': {'type': 'string'}, 'guidance': {'type': 'string'}, 'connectedAs': {'type': 'string'}, 'constraints': {'type': 'string'}, 'openHunches': {'type': 'object', 'required': ['patternIds', 'howto'], 'properties': {'howto': {'type': 'string'}, 'patternIds': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'howToConnect': {'type': 'string'}, 'libraryVersion': {'type': 'string'}, 'canApplyDirectly': {'type': 'boolean'}, 'refinablePatternIds': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
suggest_question
Suggest a NEW question/axis for the person — a dimension their model doesn't capture (situational axes welcome: name it 'When <situation>'). It lands in their Hunchful inbox and, by default, emails them; nothing is added until they answer. Authorized by OAuth (own model) or a contributionToken. Use sparingly — about once a week at most.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'poleA', 'poleB', 'question'], 'properties': {'by': {'type': 'string', 'description': 'Your name, e.g. "claude".'}, 'why': {'type': 'string', 'description': "Why you're asking — what you observed (no quotes, no names)."}, 'name': {'type': 'string', 'description': 'Short axis name, e.g. "When plans change suddenly".'}, 'poleA': {'type': 'string', 'description': 'Pole A label — one way of working.'}, 'poleB': {'type': 'string', 'description': 'Pole B label — the other way.'}, 'modelId': {'type': 'string'}, 'question': {'type': 'string', 'description': 'The question, addressed to the person.'}, 'contributionToken': {'type': 'string', 'description': 'Scoped propose-only key, if not connected via OAuth.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'proposalId', 'notified', 'inboxUrl', 'note'], 'properties': {'note': {'type': 'string'}, 'status': {'type': 'string'}, 'inboxUrl': {'type': 'string'}, 'notified': {'type': 'boolean'}, 'proposalId': {'type': 'string'}}, 'additionalProperties': False}
추가됨
apply_refinement
2026년 9월 17일 12:53 PM
추가됨
find_matches
2026년 9월 17일 12:53 PM
추가됨
find_complementary_thinkers
2026년 9월 17일 12:53 PM
추가됨
add_hunch
2026년 9월 17일 12:53 PM
추가됨
suggest_question
2026년 9월 17일 12:53 PM
추가됨
propose_refinement
2026년 9월 17일 12:53 PM
추가됨
read_model
2026년 9월 17일 12:53 PM