Skip to main content
Glama

vibecheck by Sensie

SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty.

The agent never receives raw motion data.

Tools

The vibecheck MCP server exposes exactly six tools. Only request_vibecheck creates an immediate phone ask; post_vibecheck_statement only stocks the optional feed when you ask it to. Raw motion and private conversation history never reach the agent through this connector, and a database state is never proof of phone display.

Tool

Purpose

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.

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.

get_vibecheck_context

Read your recent completed check-ins, newest first, so the agent can use prior outcomes as contextual signals.

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.

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.

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.

Related MCP server: gomission-mcp

First successful vibecheck

Pick the host you actually use. Each route is separate; the next section only matches the route you choose.

  • Claude Code (local Channel plugin). Install the plugin and link SomaCheck in Install the Claude Code Channel plugin below, then launch Claude Code with the approved Channel command. Channels remain the preferred path whenever Anthropic has allowlisted vibecheck@somacheck (or your Team/Enterprise admin has added it to allowedChannelPlugins); without that acceptance, plain Claude Code does not promise automatic next-turn delivery of the answer, so you will use the recovery handle described below.

  • Claude.ai and Claude Desktop (hosted OAuth). The hosted OAuth route is served by the separately deployed MCP server at https://mcp.somacheck.com/functions/v1/mcp; the local Channel plugin does not change or claim that deployment. You connect Claude.ai or Claude Desktop to that hosted endpoint following somacheck.com/docs/hosted-mcp — this README does not assert that Anthropic's hosted OAuth path has accepted the plugin on your behalf. Real acceptance has to be observed in the host, not inferred from this repository.

  • Cursor and Windsurf. Use the developer-preview packages in this repository's cursor/ and windsurf/ directories. Their developer-preview setup guides are real; actual host OAuth and phone acceptance in each client have not been independently verified here, so do not treat either route as already accepted.

After the host is ready, ask the agent for one consented immediate vibecheck. The existing explicit ask is the consent — do not bolt on redundant "are you sure?" prompts. The agent picks the tool:

  • Immediate phone ask: request_vibecheck. This is the only tool that sends a statement to your phone right now and waits up to 45 seconds for the answer. Use it when the user wants a check-in now.

  • Optional feed stock (not an immediate ask): post_vibecheck_statement only stocks the reflection feed for later consideration. It does not ask your phone and does not verify delivery — do not choose it when the person asked for an immediate vibecheck.

The result returns three separate things: (a) the first-person statement your agent sent, (b) the binary reading (Aligned or Unaligned), and (c) the returned confidence. They are what the server recorded for that request_id. The reading is derived from your phone gesture, but the returned record alone is not independent proof of what your phone displayed. Only your own observation of what your phone actually showed you confirms the phone display.

If the request is still pending, keep the same request_id handle and poll get_vibecheck_result about every 15 seconds until the status is answered, expired, or cancelled. Do not create a second request_vibecheck for the same proposition just to poll status — open the same SomaCheck app on the same account the original ask went to (or wait with the existing handle) instead. Wasting a phone ask on a duplicate is its own problem; preserving the original handle is the recovery path.

Example (non-sensitive, no efficacy claim):

Agent, give me a vibecheck on "I want to commit to this direction for the rest of the week."

This is a hypothetical prompt — the only real outcome is the actual returned result your phone and this server produce together. For example, if the actual returned result is Unaligned with confidence 0.71. If the actual returned result is Cancelled, the request has been terminated and the handle is no longer polled. If the phone is unreachable (no display, no prompt, no network), keep and check the same handle, then check delivery, account, and connection state, including whether you are signed into the same SomaCheck account on the phone. This is not an unreadable capture. If the capture itself was unreadable (motion artifact, dropped gesture, bad baseline), retry the gesture in the app against the original pending ask; retry the gesture; do not treat the unreadable capture as a result. Create a fresh request_vibecheck only after the original ask is terminal and the person explicitly wants a new ask.

What this repository is

This 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.

The 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 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.

Concretely:

  • SKILL.md — what Claude reads to decide when a vibecheck would help.

  • .claude-plugin/marketplace.json — Claude marketplace listing for claude plugin marketplace add ….

  • .claude-plugin/plugin.json — declares the vibecheck MCP server as a Claude Channel.

  • .mcp.json — launches the pinned public npm runtime locally over stdio with Channel support.

  • glama.json — declares maintainers for the Glama MCP registry; see Glama docs.

  • Dockerfile, package.json, and package-lock.json — reproducible, non-root Glama image for the local stdio runtime. The image contains no SomaCheck account credential.

  • .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.

validate manifests

Install the Claude Code Channel plugin

claude plugin marketplace add Sensie-agents/vibecheck
claude plugin install vibecheck@somacheck

Installing 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.

Install the SomaCheck public beta 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.

Get <CODE> from SomaCheck's Settings > Agent > Connect your agent, then link the local runtime:

npx -y @somacheck/vibecheck@0.6.18 link <CODE> --client claude

Already linked? Install or repair the managed Claude setup without linking again:

npx -y @somacheck/vibecheck@0.6.18 setup claude

Both commands install or update the public plugin, migrate recognized old SomaCheck registrations, and enable Claude's native marketplace auto-updates (autoUpdate: true) for somacheck. Unrelated configuration is preserved; custom or ambiguous registrations require review and are not silently replaced. This release is plugin 0.6.19, launching runtime 0.6.18. These version numbers are independent.

Future reviewed plugin releases can update through Claude's marketplace. Updates do not replace the running MCP process mid-conversation; reload the plugin or start a new session after an update. This does not update the phone app, Claude.ai, or a manually installed Desktop connector.

Then start Claude Code with this plugin's Channel:

claude --channels plugin:vibecheck@somacheck

Anthropic currently permits that safe command only after either Anthropic has allowlisted the plugin or a Team/Enterprise administrator has added vibecheck@somacheck to allowedChannelPlugins. While Anthropic reviews the plugin, its development-only acceptance test still uses the warning-gated development flag. That flag is not the intended user experience.

Keep the session open; a closed session cannot receive Channel events. The stable request handle remains the recovery path if an event is not delivered. Claude Code does not acknowledge Channel notifications, so the plugin does not also install a competing wake hook that could continue the same result twice.

Claude.ai remains available through the separately deployed hosted OAuth connector at https://mcp.somacheck.com/functions/v1/mcp; the local Channel plugin does not change or claim that deployment.

Glama/local container boundary

The 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.

For a single person's self-hosted local use, mount that person's existing link configuration read-only:

docker run --rm -i -v "$HOME/.sensie:/home/node/.sensie:ro" somacheck-vibecheck:0.6.18

Never 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.

Documentation

Cursor and Windsurf

Use the Cursor setup package to add SomaCheck's hosted connection and skill to a project. Its installer previews changes, preserves existing configuration, and verifies the result. The Windsurf / Cascade setup guide includes the native remote-server configuration.

Both use your own SomaCheck OAuth connection and phone. These are developer preview packages; actual host OAuth and phone acceptance and marketplace listings remain to be verified. Claude Code Channels are a separate host capability.

Full setup, the six MCP tools, revocation, and troubleshooting for Claude Code, Codex, and Claude.ai: somacheck.com/docs (hosted MCP guide).

Privacy boundary

Raw motion data and conversation history never cross this connection. A vibecheck applies only to the person using SomaCheck.

SomaCheck is a general wellness tool. It is not a medical device and does not diagnose or treat any condition.

Full privacy policy, including agent connections and data retention: somacheck.com/privacy.

License

MIT

Available Tools

6 tools
get_vibecheck_contextVibecheck ContextA
Read-onlyIdempotent

Read recent completed check-ins for this linked agent, newest first. Use the outcomes as contextual signals and replenish the feed when status requests it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
checkinsYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds useful ordering (newest first), a completion filter, and an inter-tool dependency hint ('when status requests it'), but no return format, volume, or rate details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the read operation and ordering front-loaded; the second sentence adds usage context without padding. Slightly terse on what 'replenish the feed' concretely means, but no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and with no parameters the description's burden is low. It covers purpose, ordering, and a usage trigger adequately, though the 'replenish the feed' mechanic remains undefined.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the schema carries nothing to mis-describe and the baseline is 4. There is no parameter surface for the description to compensate for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (recent completed check-ins for this linked agent) with ordering detail (newest first). It distinguishes itself partly from siblings by scoping to 'completed check-ins' and 'contextual signals', though it never explicitly contrasts with get_vibecheck_status or get_vibecheck_result.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides implied usage ('Use the outcomes as contextual signals and replenish the feed when status requests it'), which ties invocation to a status-driven workflow. However, it names no alternative sibling and gives no explicit when-not-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vibecheck_resultGet Vibecheck ResultA
Read-onlyIdempotent

Read one exact proposition or immediate vibecheck by request_id. This is a single non-blocking read: queued is cached, and pending is not answered. Immediate vibecheck handles begin with live: and remain bound to the originating client.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe opaque request_id returned by post_vibecheck_statement or request_vibecheck.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
verdictYes
latency_sYes
confidenceYes
request_idYes
user_feedbackNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds genuinely non-structured behavior: the read is non-blocking, queued results are served from cache, pending requests return no answer, and 'live:' handles stay bound to the originating client. That is real operational context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences with no filler; the retrieval constraint leads and the caching/pending caveat follows immediately. Slightly dense jargon keeps it from being maximally clear, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description covers the remaining agent-facing questions (non-blocking, cached queued, unanswered pending, client-bound live handles) adequately for a one-parameter read.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is documented as the opaque request_id returned by post_vibecheck_statement or request_vibecheck. The description only restates 'by request_id' and adds no format, provenance, or validity rules beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Read one exact proposition or immediate vibecheck by request_id'), so an agent knows this fetches a single stored result rather than a context or status object. However, it never explicitly distinguishes itself from the sibling get_vibecheck_status or get_vibecheck_context, and the terms 'exact proposition' / 'immediate vibecheck' are domain jargon that is not defined here.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied through the behavioral note ('queued is cached, and pending is not answered'), which tells the agent this call is safe to make at any point but may return nothing useful while work is pending. No alternative sibling is named and no explicit when-to-use/when-not-to-use rule is given, so the agent must infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vibecheck_statusVibecheck StatusB
Read-onlyIdempotent

Read the SomaCheck database feed before posting. Reports available proposition capacity, when routine replenishment is due, and whether this is the agent's first contact. Database state does not verify phone display.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
linkedYes
cadenceYes
copy_guidanceYes
first_run_introYes
no_prior_requestsYes
recommended_actionYes
has_pending_requestYes
prior_request_countYes
propositions_neededYes
queued_proposition_countYes
pending_proposition_countYes
replenishment_requested_atYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds a caveat that 'database state does not verify phone display,' but this is cryptic and unexplained, so its behavioral value is limited rather than contradictory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, with the core purpose front-loaded. However, the closing sentence about the phone display is opaque and reads as noise rather than an actionable constraint, weakening the otherwise efficient structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. Still, domain terms (SomaCheck, proposition capacity, routine replenishment, first contact) are used without grounding, and the relationship to sibling read tools is left unclear, so an agent has residual questions before calling it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric this is a baseline 4. There is nothing for the description to clarify beyond what the empty schema already shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (the SomaCheck database feed), and enumerates the reported outputs: proposition capacity, replenishment timing, and first-contact status. It does not, however, distinguish itself from closely named siblings like get_vibecheck_context or get_vibecheck_result, leaving some ambiguity about which read tool to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Read ... before posting' implies a sequencing relationship with post_vibecheck_statement, which is real usage guidance. But it never names an alternative tool or states when NOT to use this one versus get_vibecheck_context, so the routing remains implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_vibecheck_statementPost Vibecheck StatementA

When the person asks to stock reflections for later, or has explicitly authorized scheduled stocking, add one to three optional personalized reflections under Settings → Vibe Checks and return immediately. One can become database-current for Home; the rest stay Up next without extra pushes. This does not verify phone display or delivery. Never call this to add follow-up asks after request_vibecheck. Call get_vibecheck_status first; propositions_needed is the available maximum, not a quota. Submit only genuinely useful statements and never invent extras to fill capacity. A still-active scheduled authorization does not require repeated consent each run.

ParametersJSON Schema
NameRequiredDescriptionDefault
statementsYesDistinct personalized statements for this person to test, ordered most useful first.

Output Schema

ParametersJSON Schema
NameRequiredDescription
propositionsYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare it is a non-read-only, non-idempotent, non-destructive, closed-world write. The description goes well beyond that: it returns immediately, one statement may become database-current for Home while the rest remain Up next without extra pushes, and it does not verify phone display or delivery. It also discloses the capacity semantics of propositions_needed and consent behavior across runs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, and every subsequent sentence carries a distinct constraint (return behavior, non-verification, sibling prohibition, prerequisite, capacity semantics, consent). It is dense and slightly overpacked for a single-parameter tool, but there is essentially no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the description still covers timing, persistence side effects, prerequisites, sibling boundaries, and consent. For a mutation with moderate behavioral subtlety, nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema coverage the baseline is 3, but the description adds real meaning: statements should be genuinely useful and distinct, propositions_needed is a maximum rather than a quota, and agents must not invent extras to fill capacity. This clarifies intent beyond the schema's minLength/minItems/maxItems constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and resource: add one to three optional personalized reflections under Settings → Vibe Checks. It also explicitly names the sibling it must not be confused with (request_vibecheck), so an agent can route correctly. The purpose is embedded in a conditional clause rather than stated up front, which slightly blunts immediate clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger ('when the person asks to stock reflections for later, or has explicitly authorized scheduled stocking'), an explicit prohibition ('Never call this to add follow-up asks after request_vibecheck'), and a prerequisite (call get_vibecheck_status first). It also clarifies that an active scheduled authorization removes the need for repeated consent. This is about as complete a when/when-not/alternatives statement as one could ask for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_vibecheckRequest a VibecheckA
DestructiveIdempotent

Send one statement to the person's phone for a SomaCheck vibecheck. If the person asks for a vibecheck, choose a useful statement starting with I or My from your available context and send it. Preserve the person's supplied first-person wording verbatim. Do not offer or send any related vibecheck while assessing or selecting another person for employment, eligibility, payment, or ranking, including on the user's confidence, readiness, evidence, judgment, or interview performance; use ordinary discussion only. The user's own career choices remain eligible for self-reflection. For proactive offers, call only after the person accepts. The result is context, not authorization. This call waits up to 45 seconds. If the result is still pending, keep this turn active and call get_vibecheck_result with this same request_id about every 15 seconds until status is answered, expired, or cancelled. Never create a duplicate request.

ParametersJSON Schema
NameRequiredDescriptionDefault
statementYesOne plain-language statement starting with I or My for the person to test. Preserve their supplied first-person wording verbatim. Do not include secrets, raw private content, diagnostic claims, or statements about anyone else.
consent_basisYesUse user_requested_vibecheck when the person asks for a vibecheck. Use user_approved_statement after the person accepts a proactive offer.
idempotency_keyYesA new UUID for this logical ask. Reuse the same UUID only to retry the exact same statement; retries will not create another phone request.

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYes
verdictYes
confidenceYes
error_codeYes
expires_atYes
request_idYes
user_feedbackNo
cooldown_untilYes
delivery_stateYes
idempotent_replayYes
continuation_transportNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint, idempotentHint), the description discloses the long-poll behavior ('waits up to 45 seconds'), the exact retry cadence and sibling tool to poll ('call get_vibecheck_result with this same request_id about every 15 seconds'), the terminal states to watch for, and the duplicate-suppression rule. It also frames the ethical contract ('The result is context, not authorization'), which is operational context the annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action is front-loaded in sentence one, and each subsequent sentence covers a distinct rule (verbatim preservation, employment-assessment prohibition, proactive consent, wait/poll protocol, duplicate prevention) with little redundancy. It is dense and rule-heavy but every sentence carries a real constraint, so it stays justified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return values need no explanation, and the description still covers everything else an agent needs: when to call, consent gating, prohibited contexts, the 45-second wait, the polling fallback with the correct sibling and cadence, and idempotency discipline.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents statement, consent_basis, and idempotency_key in detail. The description restates the same rules (verbatim first-person wording, accept-before-send, no duplicate request) without adding new syntax, format, or constraint detail beyond the schema. Baseline 3 is appropriate when the schema carries the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource: 'Send one statement to the person's phone for a SomaCheck vibecheck.' It is distinguishable from siblings because it names get_vibecheck_result as the follow-up poller rather than a substitutable action, so an agent can separate the initiating call from the retrieval calls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit trigger conditions ('If the person asks for a vibecheck'), an explicit proactive-offer path ('call only after the person accepts'), and hard exclusions ('Do not offer or send any related vibecheck while assessing or selecting another person for employment, eligibility, payment, or ranking'). It even carves out the exception for the user's own career choices, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

share_somacheck_contextShare SomaCheck ContextA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
observationsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYes
acceptedYes
observation_countYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag this as a destructive, non-read-only write operation. The description adds useful behavioral context beyond annotations: the 1-20 batch limit, the need for user authorization, and explicit prohibitions on raw conversation text, photos, credentials, identifiers, and diagnostic claims. It does not explain what makes the operation destructive or whether shared context can be removed, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no wasted words. The core action and limits are front-loaded, followed by the critical data-handling restrictions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with an output schema and safety annotations, the description is largely complete: it gives purpose, scope, and content restrictions. It is missing explicit guidance on when to choose this tool over sibling context tools and does not elaborate on the destructive annotation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It does add important semantics for the observations parameter: 1-20 items, concise derived summaries only, user-authorized content, and prohibited data types. It does not explain the confidence or evidence_count subfields, which prevents a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: sharing user-authorized context observations so SomaCheck can prepare richer propositions. It clearly distinguishes this SomaCheck-context sharing tool from the sibling VibeCheck tools by naming the target service and the type of data being shared.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by saying observations are user-authorized and should be derived summaries only, but it does not explicitly state when to use this tool versus alternatives or when not to use it. No sibling tool routing is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.6.15
    • Changedrequest_vibecheck1 field changed
      • changedInput schema / properties / statement / description
        Previous value: -"One plain-language first-person statement for the person to test. Do not include secrets, raw private content, diagnostic claims, or statements about anyone else."New value: +"One plain-language statement starting with I or My for the person to test. Preserve their supplied first-person wording verbatim. Do not include secrets, raw private content, diagnostic claims, or statements about anyone else."
  2. 6 tool updates
    • First observedget_vibecheck_context
    • First observedget_vibecheck_result
    • First observedget_vibecheck_status
    • First observedpost_vibecheck_statement
    • First observedrequest_vibecheck
    • First observedshare_somacheck_context

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation3/5

The three read tools (get_vibecheck_context, get_vibecheck_result, get_vibecheck_status) target distinct data sources but share the 'vibecheck' noun and require careful reading to separate. request_vibecheck and post_vibecheck_statement both submit statements, and while the descriptions cross-reference each other to disambiguate, an agent could plausibly pick the wrong write tool.

Naming Consistency4/5

Names follow a consistent verb_ prefix pattern (request_, get_, post_, share_) with a noun suffix. Minor deviation: one tool uses 'somacheck' while the rest use 'vibecheck', and the noun is multi-word and verbose in places, but the convention is otherwise predictable.

Tool Count5/5

Six tools is well-scoped for a narrow, single-domain service covering request, read, status, write, and context-sharing operations. Each tool earns its place with no redundant or filler entries.

Completeness4/5

The surface covers the core lifecycle: status check, request submission, result retrieval, context reading, scheduled stocking, and context sharing. The only visible gap is a cancel/expire operation, since 'cancelled' appears as a status but no tool can trigger it.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Establishes feedback-oriented development workflows with Web UI and desktop application dual interfaces, enabling AI to confirm with users and consolidate tool calls into feedback requests to reduce costs and improve development efficiency.
    2
    844 PyPI
    3,765
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Mission MCP is a Trust Graduation gate for AI agents, with visible approval ceremonies and receipt-backed boundaries for consequential actions.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Connects live Wear OS heart-rate data and conversation transcripts to AI agents through MCP, enabling agents to observe sessions, derive stress and speech signals, and deliver coaching responses.
    29 npm
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables MCP-capable agents to gate their actions behind human consent, checking consent rules and requesting approval via Telegram before proceeding with high-stakes operations.
    2
    23 npm
    MIT