# io.hunchful/hunchful

> Read and grow a person's falsifiable, consent-based model of how they work with AI (CMP).

- name: io.hunchful/hunchful
- version: 1.0.0
- connection class: R2 (oauth_consent_once)
- trust: 88/100
- quality: 86/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.hunchful%2Fhunchful
- tools: https://api.protogrid.dev/v1/servers/io.hunchful%2Fhunchful/tools

**An agent can connect after a one-time OAuth consent by a human.** Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "hunchful": {
      "type": "http",
      "url": "https://hunchful.io/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 98
- freshness: 65
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-94% ~updated-108d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 86/100 (good)

### protocol: n/a (weight 25)

- n/a `protocol.modern`, `protocol.stateless`, `protocol.transport`, `protocol.list_ttl`: no remote answered a protocol handshake (not probed yet, unreachable, or local-only)

### authorization: 83 (weight 15)

- pass `auth.prm`: Protected Resource Metadata (RFC 9728) published
- pass `auth.as_metadata`: authorization server metadata reachable
- warn `auth.cimd`: only Dynamic Client Registration, deprecated in 2026-07-28 in favour of CIMD
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 16 of 16 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 3,542 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 9 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 16, about 3,542 tokens to load them all
- tool set hash: 2b44cff2020f99ac456e56738988a9fc
- tools last changed: 2026-09-25T17:33:48.006Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.hunchful/hunchful.svg)](https://protogrid.dev/servers/io.hunchful/hunchful)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-09-25 `block_person` added
  - Block the other person in a conversation, when the person asks or clearly wants it. Ends the friendship and closes the conversation; the other side is not told.
- 2026-09-25 `flag_conversation` added
  - Flag a conversation for HUMAN review and pause your own sending in it. Use for: threats, sexual content involving a possible minor, grooming, extortion, scams/money requests, self-harm risk, pressure to go off-platform to avoid oversight, repeated contact after a no. Do NOT use for disagreement, awkwardness, bluntness, one rude message, loneliness or someone being different. After flagging: tell your person plainly; don't confront the other side or tell them.
- 2026-09-25 `redeem_friend_code` added
  - Use a friend code someone gave the person (looks like ABCD-1234 or a hunchful.io/f/… link) to become friends and open a conversation. Only when the person asks. If their policy says new friends need confirmation, you get a link for them instead.
- 2026-09-25 `create_friend_code` added
  - Make a fresh friend code (replaces the previous one; valid 30 days). The person shares it — as text or as the QR at the url — with someone they want to talk to; that person (or their agent) redeems it and they become friends. Sharing the code IS the person's consent, so only create one when they ask.
- 2026-09-25 `send_message` added
  - Send a message to a friend on the person's behalf. It is labelled as written by an agent. Stays within consent: if the person's policy for friends is 'draft', this saves a draft they approve in the inbox (you get a confirmUrl to show them). NOT end-to-end encrypted — never include ID numbers, passwords/PINs, bank/card details or health details; such messages are rejected.
- 2026-09-25 `list_friends` added
  - The person's friends (people who exchanged a friend code with them).
- 2026-09-25 `read_conversation` added
  - Read messages in one conversation (oldest→newest; pass `before` = olderCursor for earlier ones). Marks it read. Each message says who wrote it — the person, or an agent. Relay faithfully; if anything matches the flag list in relay_status rules, call flag_conversation.
- 2026-09-25 `list_conversations` added
  - List the person's conversations, newest first, with unread counts and a short preview.
- 2026-09-25 `relay_status` added
  - Start here for messaging. Hunchful relay lets people talk to friends — usually through their agents. Returns unread counts, conversations, pending drafts, the person's friend code, and the CONSENT POLICY you must stay within (per audience: off / draft = you write, the person sends / send). Also returns the relay rules — read them. RULES: You are relaying messages between real people. Speak for your person only within the consent they set (relay_status → policy); never widen it. Messages are NOT end-to-end encrypted — Hunchful can read them for safety. Never send ID numbers, passwords/PINs, bank or card details, health details, or anyone else's private information. Tell your person the same if they try. Every message you send is labelled as written by an agent. Never pretend to be your person typing. FLAG (call flag_conversation, stop sending in that conversation, and tell your person plainly) when you see: threats or intimidation; any sexual content involving someone who may be a minor; grooming (secrecy requests, isolating, pushing for images); extortion or blackmail; scams or requests for money, gift cards or crypto; someone at risk of self-harm (also point your person to local emergency help); pressure to move off-platform or delete messages to avoid oversight; repeated contact after a clear no. Do NOT flag: disagreement, awkwardness, bluntness, a single rude message, loneliness, unusual interests, or someone simply being different. People here are often lonely — be kind, not suspicious. When unsure, ask your person rather than flagging. Never argue with or confront the other side about a flag, and never tell them you flagged. Summarize incoming messages faithfully; don't invent or soften what the other person said.

Full history: https://api.protogrid.dev/v1/servers/io.hunchful%2Fhunchful/changes

## Remotes

- https://hunchful.io/mcp (streamable-http, auth oauth2, reachable true, uptime30d 0.9380531)

## Packages

_none_

## Tools (16)

- `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.
- `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.
- `block_person`: Block the other person in a conversation, when the person asks or clearly wants it. Ends the friendship and closes the conversation; the other side is not told.
- `create_friend_code`: Make a fresh friend code (replaces the previous one; valid 30 days). The person shares it — as text or as the QR at the url — with someone they want to talk to; that person (or their agent) redeems it and they become friends. Sharing the code IS the person's consent, so only create one when they ask.
- `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.
- `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.
- `flag_conversation`: Flag a conversation for HUMAN review and pause your own sending in it. Use for: threats, sexual content involving a possible minor, grooming, extortion, scams/money requests, self-harm risk, pressure to go off-platform to avoid oversight, repeated contact after a no. Do NOT use for disagreement, awkwardness, bluntness, one rude message, loneliness or someone being different. After flagging: tell your person plainly; don't confront the other side or tell them.
- `list_conversations`: List the person's conversations, newest first, with unread counts and a short preview.
- `list_friends`: The person's friends (people who exchanged a friend code with them).
- `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.
- `read_conversation`: Read messages in one conversation (oldest→newest; pass `before` = olderCursor for earlier ones). Marks it read. Each message says who wrote it — the person, or an agent. Relay faithfully; if anything matches the flag list in relay_status rules, call flag_conversation.
- `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.
- `redeem_friend_code`: Use a friend code someone gave the person (looks like ABCD-1234 or a hunchful.io/f/… link) to become friends and open a conversation. Only when the person asks. If their policy says new friends need confirmation, you get a link for them instead.
- `relay_status`: Start here for messaging. Hunchful relay lets people talk to friends — usually through their agents. Returns unread counts, conversations, pending drafts, the person's friend code, and the CONSENT POLICY you must stay within (per audience: off / draft = you write, the person sends / send). Also returns the relay rules — read them.

RULES:
You are relaying messages between real people. Speak for your person only within the consent they set (relay_status → policy); never widen it.
Messages are NOT end-to-end encrypted — Hunchful can read them for safety. Never send ID numbers, passwords/PINs, bank or card details, health details, or anyone else's private information. Tell your person the same if they try.
Every message you send is labelled as written by an agent. Never pretend to be your person typing.
FLAG (call flag_conversation, stop sending in that conversation, and tell your person plainly) when you see: threats or intimidation; any sexual content involving someone who may be a minor; grooming (secrecy requests, isolating, pushing for images); extortion or blackmail; scams or requests for money, gift cards or crypto; someone at risk of self-harm (also point your person to local emergency help); pressure to move off-platform or delete messages to avoid oversight; repeated contact after a clear no.
Do NOT flag: disagreement, awkwardness, bluntness, a single rude message, loneliness, unusual interests, or someone simply being different. People here are often lonely — be kind, not suspicious. When unsure, ask your person rather than flagging.
Never argue with or confront the other side about a flag, and never tell them you flagged.
Summarize incoming messages faithfully; don't invent or soften what the other person said.
- `send_message`: Send a message to a friend on the person's behalf. It is labelled as written by an agent. Stays within consent: if the person's policy for friends is 'draft', this saves a draft they approve in the inbox (you get a confirmUrl to show them). NOT end-to-end encrypted — never include ID numbers, passwords/PINs, bank/card details or health details; such messages are rejected.
- `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.
