{
  "markdown": "# vibecheck by Sensie\n\n**Body language for AI agents, on your terms.** SomaCheck turns a consented three-second phone gesture into an Aligned or Unaligned signal with confidence, giving your agent context for how a thought or choice lands for you, while you remain the authority.\n\nThe agent never receives raw motion data and cannot use a result as truth,\ndiagnosis, authorization, approval, or a decision. The signal is context for\nreflection; you decide what it means and what happens next.\n\n## Tools\n\nThe vibecheck MCP server exposes exactly six tools. Only `request_vibecheck`\ncreates an immediate phone ask; `post_vibecheck_statement` only stocks the\noptional feed when you ask it to. Raw motion and private conversation\nhistory never reach the agent through this connector, and a database state\nis never proof of phone display. The signal is context, not truth,\ndiagnosis, authorization, approval, or a decision.\n\n| Tool | Purpose |\n| --- | --- |\n| `request_vibecheck` | Send one consented first-person statement to your phone for an immediate vibecheck. The only tool that creates an immediate phone ask; waits up to 45 seconds for the answer. The result is context, not authorization. |\n| `get_vibecheck_result` | Read one exact vibecheck by `request_id`. Use this to keep polling an immediate ask about every 15 seconds until the status is answered or expired. |\n| `get_vibecheck_context` | Read your recent completed check-ins, newest first, so the agent can use prior outcomes as contextual signals. |\n| `get_vibecheck_status` | Read the SomaCheck reflection-feed status before optional posting. Database state does not verify phone display. Use `get_vibecheck_context` for recent completed check-ins. |\n| `post_vibecheck_statement` | Stock the optional SomaCheck feed with up to three personalized reflections for the person to consider later. Optional feed stock only; this is not an immediate phone ask and does not verify delivery. |\n| `share_somacheck_context` | Share 1-20 concise, user-authorized context observations so SomaCheck can prepare richer propositions. Send derived summaries only; never raw conversation text, photos, credentials, identifiers, or diagnostic claims. |\n\n## First successful vibecheck\n\nPick the host you actually use. Each route is separate; the next section only\nmatches the route you choose.\n\n- **Claude Code (local Channel plugin).** Install the plugin and link SomaCheck\n  in [Install the Claude Code Channel plugin](#install-the-claude-code-channel-plugin)\n  below, then launch Claude Code with the approved Channel command. Channels\n  remain the preferred path whenever Anthropic has allowlisted\n  `vibecheck@somacheck` (or your Team/Enterprise admin has added it to\n  `allowedChannelPlugins`); without that acceptance, plain Claude Code does\n  **not** promise automatic next-turn delivery of the answer, so you will use\n  the recovery handle described below.\n- **Claude.ai and Claude Desktop (hosted OAuth).** The hosted OAuth route is\n  served by the separately deployed MCP server at\n  `https://mcp.somacheck.com/functions/v1/mcp`; the local Channel plugin does\n  not change or claim that deployment. You connect Claude.ai or Claude\n  Desktop to that hosted endpoint following\n  [somacheck.com/docs/hosted-mcp](https://somacheck.com/docs/hosted-mcp) —\n  this README does not assert that Anthropic's hosted OAuth path has\n  accepted the plugin on your behalf. Real acceptance has to be observed in\n  the host, not inferred from this repository.\n- **Cursor and Windsurf.** Use the developer-preview packages in this\n  repository's [`cursor/`](cursor/README.md) and\n  [`windsurf/`](windsurf/README.md) directories. Their developer-preview\n  setup guides are real; actual host OAuth and phone acceptance in each\n  client have not been independently verified here, so do not treat\n  either route as already accepted.\n\nAfter the host is ready, ask the agent for **one consented immediate\nvibecheck**. The existing explicit ask *is* the consent — do not bolt on\nredundant \"are you sure?\" prompts. The agent picks the tool:\n\n- **Immediate phone ask:** `request_vibecheck`. This is the only tool that\n  sends a statement to your phone right now and waits up to 45 seconds for\n  the answer. Use it when the user wants a check-in now.\n- **Optional feed stock (not an immediate ask):** `post_vibecheck_statement`\n  only stocks the reflection feed for later consideration. It does **not**\n  ask your phone and does **not** verify delivery — do not choose it when\n  the person asked for an immediate vibecheck.\n\nThe result returns three separate things: (a) the first-person statement\nyour agent sent, (b) the binary reading (**Aligned** or **Unaligned**), and\n(c) the returned confidence. They are what the server recorded for that\n`request_id`. The reading is derived from your phone gesture, but the returned\nrecord alone is not independent proof of what your phone displayed.\n**Only your own observation of what your phone actually showed you\nconfirms the phone display.** The reading is context, never truth,\ndiagnosis, authorization, approval, or a decision; you remain the\nauthority. A binary reading of **Unaligned** does not by itself prescribe\na pause or a meaning — you interpret it in your own context, and you\nchoose what to do next.\n\nIf the request is still pending, **keep the same `request_id` handle** and\npoll `get_vibecheck_result` about every 15 seconds until the status is\nanswered, expired, or cancelled. Do not create a second\n`request_vibecheck` for the same proposition just to poll status — open\nthe same SomaCheck app on the same account the original ask went to (or\nwait with the existing handle) instead. Wasting a phone ask on a duplicate\nis its own problem; preserving the original handle is the recovery path.\n\nExample (non-sensitive, no efficacy claim):\n\n> Agent, give me a vibecheck on \"I want to commit to this direction for the\n> rest of the week.\"\n\nThis is a *hypothetical* prompt — the only real outcome is the actual\nreturned result your phone and this server produce together. For example,\n**if the actual returned result is `Unaligned` with confidence 0.71**, the\nreading is a model interpretation relative to the proposition, not its cause;\nthe agent may offer to help you reframe the proposition, and *you* decide\nwhether the original still holds. **If the actual returned result is\n`Cancelled`, the request has been terminated and the handle is no longer\npolled.** **If the phone is unreachable** (no display, no prompt, no\nnetwork), keep and check the same handle, then check delivery, account, and\nconnection state, including whether you are signed into the same SomaCheck\naccount on the phone. This is **not** an unreadable capture and does **not** call\nfor a third interpretation. **If the capture itself was unreadable** (motion\nartifact, dropped gesture, bad baseline), retry the gesture in the app against\nthe original pending ask; the unreadable capture is retried, never\nreinterpreted. Create a fresh `request_vibecheck` only after the original ask\nis terminal and the person explicitly wants a new ask.\n\n## What this repository is\n\nThis public repository contains the **Claude marketplace manifest** (`.claude-plugin/marketplace.json`), the **Claude plugin manifest** (`.claude-plugin/plugin.json`), the **agent skill** (`SKILL.md`), and a **bundled local Channel server** (`.mcp.json`). The Channel lets an authorized phone result enter the same open Claude Code conversation so Claude can continue without another typed message.\n\nThe hosted vibecheck MCP server itself is **not** built from this repo. It is deployed and operated separately by Sensie. The local MCP runtime, with Claude Code continuation support, is distributed under MIT as the public [`@somacheck/vibecheck`](https://www.npmjs.com/package/@somacheck/vibecheck) npm package. This repository's Dockerfile assembles that exact, locked local stdio runtime for Glama's isolated build, security scan, and tool-schema introspection. It does not contain the server source and does not prove the hosted OAuth deployment.\n\nConcretely:\n\n- `SKILL.md` — what Claude reads to decide when a vibecheck would help.\n- `.claude-plugin/marketplace.json` — Claude marketplace listing for `claude plugin marketplace add …`.\n- `.claude-plugin/plugin.json` — declares the `vibecheck` MCP server as a Claude Channel.\n- `.mcp.json` — launches the pinned public npm runtime locally over stdio with Channel support.\n- `glama.json` — declares maintainers for the Glama MCP registry; see [Glama docs](https://glama.ai/mcp/methodology).\n- `Dockerfile`, `package.json`, and `package-lock.json` — reproducible, non-root Glama image for the local stdio runtime. The image contains no SomaCheck account credential.\n- `.github/workflows/ci.yml` — public CI that validates the manifests, builds and probes the Glama image, and guards the README doctrine and version drift. It uses no secrets and performs no deployment or publication.\n\n[![validate manifests](https://github.com/Sensie-agents/vibecheck/actions/workflows/ci.yml/badge.svg)](https://github.com/Sensie-agents/vibecheck/actions/workflows/ci.yml)\n\n## Install the Claude Code Channel plugin\n\n```text\nclaude plugin marketplace add Sensie-agents/vibecheck\nclaude plugin install vibecheck@somacheck\n```\n\nInstalling the plugin configures a local, plugin-scoped `vibecheck` MCP server. It reads the independently revocable Claude credential stored by the link command and never puts that credential in the plugin manifest.\n\nInstall the [SomaCheck public beta](https://testflight.apple.com/join/C4mAH3zz) and complete its in-app setup first, then in the CLI or your agent's native app ask: **Give me a SomaCheck vibecheck based on what you know about me.**\n\n## Link SomaCheck and start the Channel\n\nGet `<CODE>` from SomaCheck's **Settings > Agent > Connect your agent**, then link the local runtime:\n\n```text\nnpx -y @somacheck/vibecheck@0.6.16 link <CODE> --client claude\n```\n\nAlready linked? Install or repair the managed Claude setup without linking again:\n\n```text\nnpx -y @somacheck/vibecheck@0.6.16 setup claude\n```\n\nBoth commands install or update the public plugin, migrate recognized old\nSomaCheck registrations, and enable Claude's native marketplace auto-updates\n(`autoUpdate: true`) for `somacheck`. Unrelated configuration is preserved;\ncustom or ambiguous registrations require review and are not silently replaced.\nThis release is **plugin 0.6.17**, launching **runtime 0.6.16**. These version\nnumbers are independent.\n\nFuture reviewed plugin releases can update through Claude's marketplace.\nUpdates do not replace the running MCP process mid-conversation; reload the\nplugin or start a new session after an update. This does not update the phone\napp, Claude.ai, or a manually installed Desktop connector.\n\nThen start Claude Code with this plugin's Channel:\n\n```text\nclaude --channels plugin:vibecheck@somacheck\n```\n\nAnthropic currently permits that safe command only after either Anthropic has\nallowlisted the plugin or a Team/Enterprise administrator has added\n`vibecheck@somacheck` to `allowedChannelPlugins`. While Anthropic reviews the\nplugin, its development-only acceptance test still uses the warning-gated\ndevelopment flag. That flag is not the intended user experience.\n\nKeep the session open; a closed session cannot receive Channel events. The\nstable request handle remains the recovery path if an event is not delivered.\nClaude Code does not acknowledge Channel notifications, so the plugin does not\nalso install a competing wake hook that could continue the same result twice.\n\nClaude.ai remains available through the separately deployed hosted OAuth\nconnector at `https://mcp.somacheck.com/functions/v1/mcp`; the local Channel\nplugin does not change or claim that deployment.\n\n### Glama/local container boundary\n\nThe Glama release represents the **local stdio runtime**, not the separately hosted OAuth connector. It can be started without a credential so Glama can inspect its six tool schemas. Actual tool calls remain account-bound and fail with setup guidance until the person has linked SomaCheck.\n\nFor a single person's self-hosted local use, mount that person's existing link configuration read-only:\n\n```text\ndocker run --rm -i -v \"$HOME/.sensie:/home/node/.sensie:ro\" somacheck-vibecheck:0.6.16\n```\n\nNever bake a pairing code, token, or `config.json` into the image. Do not share one mounted configuration between people or use this image as a multi-tenant service. Glama schema discovery alone is not evidence of an authenticated phone round trip.\n\n## Documentation\n\n### Cursor and Windsurf\n\nUse the [Cursor setup package](cursor/README.md) to add SomaCheck's hosted\nconnection and skill to a project. Its installer previews changes, preserves\nexisting configuration, and verifies the result. The\n[Windsurf / Cascade setup guide](windsurf/README.md) includes the native\nremote-server configuration.\n\nBoth use your own SomaCheck OAuth connection and phone. These are developer\npreview packages; actual host OAuth and phone acceptance and marketplace\nlistings remain to be verified. Claude Code Channels are a separate host\ncapability.\n\nFull setup, the six MCP tools, revocation, and troubleshooting for Claude Code, Codex, and Claude.ai: [somacheck.com/docs](https://somacheck.com/docs) ([hosted MCP guide](https://somacheck.com/docs/hosted-mcp)).\n\n## Privacy boundary\n\nRaw motion data and conversation history never cross this connection. A vibecheck applies only to the person using SomaCheck. It is a signal, not objective truth, a diagnosis, or a decision.\n\nSomaCheck is a general wellness tool. It is not a medical device and does not diagnose or treat any condition.\n\nFull privacy policy, including agent connections and data retention: [somacheck.com/privacy](https://somacheck.com/privacy).\n\n## License\n\nMIT\n",
  "bytes": 13835,
  "sha": "08775366b30abf79d2b990450d42bd50b7f4a91cbdb75f34772b8fd2bd8d988e",
  "repo_slug": "sensie-agents/vibecheck",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_sensie_agents_vibecheck_65ebf593/readme"
}