@somacheck/vibecheck 0.6.9 → 0.6.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,222 @@
1
+ ---
2
+ title: Sprig + SomaCheck Research Reflection
3
+ recipe_id: sprig-research-reflection-v1
4
+ status: P1 researcher-side read-only artifact review
5
+ audience: Researchers using an owner-provisioned Sprig sandbox with an MCP-capable agent
6
+ updated: 2026-09-05
7
+ required_mcp_servers:
8
+ - sprig
9
+ - vibecheck
10
+ ---
11
+
12
+ # Sprig + SomaCheck Research Reflection
13
+
14
+ This recipe lets a researcher privately reflect on the wording of one
15
+ participant-free Sprig test artifact supplied by a product or integration
16
+ owner. The agent reads only the minimum artifact metadata and question text,
17
+ then returns a copy-ready, signal-free revision. Sprig remains unchanged.
18
+
19
+ The researcher is the phone holder and the subject of the proposition. The
20
+ agent receives only the proposition, **Aligned** or **Unaligned**, and model
21
+ confidence, then uses those values with the conversation context to decide how
22
+ best to continue. The reading is context, not truth, diagnosis, authorization,
23
+ or a research decision. The researcher remains the authority.
24
+
25
+ ## Experience a researcher can run
26
+
27
+ The product or integration owner provisions an organization-authorized Sprig
28
+ connection or partner sandbox and supplies one clearly named, participant-free
29
+ test artifact. The researcher asks the agent to inspect that artifact without
30
+ retrieving responses or themes. The agent offers alternative wording and an
31
+ optional first-person SomaCheck check-in about the researcher's own direction.
32
+ After receiving the result and confidence, the agent exercises judgment about
33
+ the next conversational move without applying a scripted meaning to either
34
+ label. The researcher decides what, if anything, to adopt. The agent returns a
35
+ copy-ready revision and performs no Sprig write.
36
+
37
+ ## Starter prompt
38
+
39
+ ```text
40
+ Use Sprig and SomaCheck to help me privately reflect on one participant-free
41
+ test artifact supplied by the product or integration owner. I am the
42
+ researcher and I am holding the phone. The artifact is [TEST ARTIFACT NAME OR
43
+ ID PROVIDED BY THE OWNER]. Use only the preconfigured Sprig partner sandbox or
44
+ organization-authorized connection. Read only the minimum artifact metadata
45
+ and question text needed for this review. Do not retrieve responses, themes,
46
+ source quotes, respondent fields, identifiers, contact data, or PII. Offer two
47
+ defensible wording directions, then offer one short first-person proposition
48
+ about my own direction and wait for my acceptance before any proactive
49
+ SomaCheck ask. After the check, use only the proposition, Aligned or Unaligned,
50
+ and confidence together with our conversation context; exercise your judgment
51
+ about the next conversational move and do not apply a fixed script to either
52
+ result. I decide what the signal means and what happens next. Keep the
53
+ proposition, reading, confidence, and confirmation out of Sprig. Return a
54
+ copy-ready, signal-free revision only. Do not create, edit, publish, delete,
55
+ share, archive, export, duplicate, target, distribute, launch, contact anyone,
56
+ or otherwise write to Sprig. If the preconfigured connection or safe read tool
57
+ is absent, label the Sprig half untested, work only from a participant-free
58
+ brief I provide, and tell the integration owner what capability is missing. Do
59
+ not ask me to sign up, upgrade, purchase access, administer access, or populate
60
+ Sprig data.
61
+ ```
62
+
63
+ ## Prerequisites and access
64
+
65
+ 1. SomaCheck is ready on the researcher's iPhone and the `vibecheck` MCP is
66
+ linked to that researcher's agent client.
67
+ 2. The product or integration owner has provisioned an organization-authorized
68
+ Sprig connection or partner sandbox. Running this recipe does not ask the
69
+ researcher to sign up, upgrade, purchase access, administer access, or
70
+ populate Sprig data.
71
+ 3. The owner supplies one clearly named, participant-free test artifact whose
72
+ question wording may be read for this review.
73
+ 4. The runtime exposes a least-privilege read capability for that artifact. If
74
+ it does not, the Sprig half remains untested and no broader tool is used.
75
+
76
+ ## Tool policy
77
+
78
+ Sprig's public pages describe capability names but not stable raw MCP tool
79
+ names. Inspect the runtime schemas and use only the narrowest read tool that
80
+ can retrieve the owner-supplied test artifact's metadata and question text.
81
+ Record the actual discovered tool name in the test receipt. Never guess a tool
82
+ name or substitute a broader capability.
83
+
84
+ | Purpose | Allowed surface | Rule |
85
+ | --- | --- | --- |
86
+ | Inspect the supplied artifact | Sprig MCP Surveys or narrower runtime read | Read only its metadata and question text |
87
+ | Retrieve research data | Sprig MCP Responses or Themes | Prohibited in this recipe |
88
+ | Create or modify content | Sprig MCP Create or any mutation surface | Prohibited in this recipe |
89
+ | Launch or contact people | Any targeting, distribution, or launch surface | Prohibited in this recipe |
90
+ | Private reflection | `request_vibecheck`, optional `get_vibecheck_result` | One decision, one request, one stable pending handle |
91
+
92
+ ## Exact cross-MCP workflow
93
+
94
+ 1. **Confirm the scope.** State that the researcher is the phone holder and
95
+ proposition subject. Identify the owner-supplied participant-free artifact.
96
+ 2. **Fail closed on access.** Confirm a preconfigured partner sandbox or
97
+ organization-authorized connection and a narrow artifact-read capability.
98
+ If either is absent, do not ask the researcher to obtain or populate an
99
+ account; use the degraded path.
100
+ 3. **Read only the test artifact.** Retrieve only its metadata and question
101
+ wording. Do not call Responses, Themes, or any create or mutation tool.
102
+ 4. **Offer two directions.** Separate the artifact's literal wording from the
103
+ agent's interpretation and suggest two defensible, signal-free revisions.
104
+ 5. **Offer one first-person proposition.** Keep it about the researcher's own
105
+ direction, for example: “I want this study to focus on the moment a user
106
+ first notices friction.” Do not include platform IDs, respondent data, or
107
+ confidential artifact text.
108
+ 6. **Establish consent.** If the researcher explicitly requested the check-in
109
+ in the current message, use `consent_basis: "user_requested_vibecheck"`.
110
+ Otherwise show the exact proposition, wait for acceptance, and use
111
+ `consent_basis: "user_approved_statement"`.
112
+ 7. **Create one request.** Call `request_vibecheck` once with a fresh UUID as
113
+ `idempotency_key`. Reuse it only after an ambiguous create failure for the
114
+ exact same proposition.
115
+ 8. **Handle the real lifecycle.** A terminal response from
116
+ `request_vibecheck` uses `state: "completed"`; a later read uses
117
+ `status: "answered"`. If the initial request is pending, retain its
118
+ `live:<uuid>` handle and call `get_vibecheck_result` with it once later. If
119
+ it remains pending, expires, is cancelled, or errors, continue without a
120
+ result. Do not create another request.
121
+ 9. **Use the signal as context.** Give the agent the proposition, `aligned` or
122
+ `unaligned`, and confidence. The agent combines them with the conversation
123
+ and exercises judgment about what to say next. Do not prescribe a fixed
124
+ recommendation for either result or infer its cause. The researcher decides
125
+ whether any proposed revision is right for them.
126
+ 10. **Return a signal-free revision.** Provide copy-ready title, purpose,
127
+ audience description, and question wording. Include no proposition,
128
+ reading, confidence, gesture, confirmation, or reference to SomaCheck.
129
+ 11. **End without a partner write.** Do not create or update a draft, verify by
130
+ mutation, launch, distribute, target, contact anyone, or change Sprig.
131
+
132
+ ## Example propositions
133
+
134
+ Allowed first-person propositions about the researcher's own direction:
135
+
136
+ - “I want this study to focus on first-use clarity.”
137
+ - “This question asks the one thing I need to learn.”
138
+ - “I want to keep these two concepts separate.”
139
+ - “I am ready to use this wording in my research plan.”
140
+
141
+ Not allowed:
142
+
143
+ - “Users will understand this question.”
144
+ - “These responses will be valid.”
145
+ - “This study will prove the concept.”
146
+ - “This respondent's answer can be trusted.”
147
+
148
+ ## Visible success condition
149
+
150
+ The test passes when:
151
+
152
+ - a preconfigured Sprig sandbox or organization-authorized connection exposes
153
+ the owner-supplied participant-free artifact through a narrow read tool;
154
+ - the researcher receives at most one optional SomaCheck signal about their
155
+ own proposition;
156
+ - the agent uses the result and confidence as context while retaining judgment
157
+ about the next conversational move;
158
+ - the researcher remains the authority over the revision;
159
+ - the agent returns copy-ready, signal-free wording; and
160
+ - the client log contains no Responses, Themes, create, edit, launch,
161
+ distribution, participant-contact, or other Sprig mutation call.
162
+
163
+ The SomaCheck result does not need to match the researcher's eventual choice.
164
+ Sprig remains unchanged.
165
+
166
+ ## Failure and degraded paths
167
+
168
+ - **No owner-provisioned sandbox or connection:** Work only from a
169
+ participant-free brief supplied in the conversation, return copy-ready
170
+ wording, label the Sprig half untested, and tell the integration owner what
171
+ is missing. Do not direct the researcher to sign up or buy access.
172
+ - **No narrow artifact read:** Do not switch to Responses, Themes, Create, or
173
+ another broader capability. Use the participant-free brief instead.
174
+ - **Unexpected write path:** Do not call it. Report the discovered capability
175
+ and leave Sprig unchanged.
176
+ - **SomaCheck pending:** Read the same stable handle once later. If unresolved,
177
+ continue without a reading.
178
+ - **Unreadable capture:** Ask whether the researcher wants to retry. Unreadable
179
+ is not a third interpretation.
180
+ - **Signal and words differ:** Preserve both as separate context. Do not repeat
181
+ the check to seek a preferred result; the researcher chooses what happens.
182
+
183
+ ## Privacy boundary
184
+
185
+ - Raw accelerometer and gyroscope data never reaches the agent or Sprig.
186
+ - Sprig receives no SomaCheck proposition, reading, confidence, confirmation,
187
+ or phone metadata.
188
+ - SomaCheck receives no Sprig responses, themes, quotes, respondent fields,
189
+ study IDs, credentials, PII, or confidential artifact text.
190
+ - The copy-ready revision contains no SomaCheck output.
191
+ - Linking both MCP servers is setup, not blanket consent for a check-in.
192
+
193
+ ## Test checklist
194
+
195
+ - [ ] The researcher is the phone holder and proposition subject.
196
+ - [ ] A product or integration owner supplied the connection or partner
197
+ sandbox and the participant-free test artifact.
198
+ - [ ] The researcher was not asked to sign up, upgrade, purchase access,
199
+ administer access, or populate Sprig data.
200
+ - [ ] The actual runtime read tool is recorded; no tool name is guessed.
201
+ - [ ] No Responses, Themes, Create, or mutation tool is invoked.
202
+ - [ ] The proposition is first-person and contains no Sprig or respondent data.
203
+ - [ ] A proactive check waits for acceptance; an explicit user request uses the
204
+ direct-request consent basis.
205
+ - [ ] One decision creates at most one request and retains its pending handle.
206
+ - [ ] The agent receives only the proposition, reading, and confidence and
207
+ retains judgment about the next conversational move.
208
+ - [ ] Observation, interpretation, confirmation, and choice remain distinct.
209
+ - [ ] The researcher decides whether to use the proposed revision.
210
+ - [ ] No targeting, distribution, participant contact, launch, or platform
211
+ mutation occurs.
212
+ - [ ] No SomaCheck output is written to Sprig, analytics, memory, or an
213
+ artifact field.
214
+ - [ ] Sprig remains unchanged.
215
+
216
+ ## Sources
217
+
218
+ - [Sprig MCP launch](https://sprig.com/blog/introducing-sprig-mcp)
219
+ - [Sprig MCP workflows, endpoint, and capability modes](https://sprig.com/blog/mcp-research-integration)
220
+ - [Sprig MCP data security](https://sprig.com/blog/mcp-data-security)
221
+ - [SomaCheck MCP setup and tool behavior](../README.md)
222
+ - [SomaCheck immediate-request contract](../LIVE-ASK-CONTRACT.md)
@@ -0,0 +1,202 @@
1
+ ---
2
+ title: Studio by Spotify Labs — SomaCheck Context Packet
3
+ status: standalone local context packet; not a recipe catalog entry, not a live connection
4
+ audience: Mike, to paste into Studio by Spotify Labs (Kit) before or during the manual pilot
5
+ updated: 2026-09-03
6
+ ---
7
+
8
+ # Studio by Spotify Labs — SomaCheck Context Packet
9
+
10
+ This is a **local context packet**, not a connector. It contains no secrets,
11
+ no user history, and no health data. Paste it into Studio so Kit has accurate
12
+ background before Mike manually relays one SomaCheck result during the manual
13
+ pilot described in the
14
+ [Spotify Listening Reflection Integration Scope](../../../docs/agent-adoption/spotify-integration-scope.md).
15
+ Studio does not currently document a way to attach the SomaCheck MCP server
16
+ directly, and this document does not claim otherwise. It is text Mike shares
17
+ by hand, exactly like the prompts in
18
+ [`spotify-listening-reflection.md`](spotify-listening-reflection.md).
19
+
20
+ **Delivery method.** Pasting is the approved default because it discloses
21
+ exactly this document and nothing else. Granting Studio file access is permitted
22
+ only after the capability probe in
23
+ [`studio-context-safety-review.md`](../../../docs/agent-adoption/studio-context-safety-review.md)
24
+ confirms that the grant is file-scoped and revocable, and only for a copy in a
25
+ dedicated directory containing nothing else. Never grant Studio a path inside
26
+ this repository, a Syncthing folder, `~/Documents`, or `~/Desktop`. Remove the
27
+ grant at the end of every session.
28
+
29
+ ## What happens to this text
30
+
31
+ Studio is a research preview for select Spotify Premium users aged 18 and over
32
+ in select markets, with usage limits. Spotify says messages are processed by an
33
+ AI provider acting as its service partner and are not used to train that
34
+ provider's models, and that memory and conversation history are stored locally
35
+ and can be inspected or deleted. Pasting or granting this document therefore
36
+ discloses it to Spotify and to that provider. It contains no secrets, no user
37
+ history, and no health data precisely because of that. Treat everything shared
38
+ with Kit as disclosed.
39
+
40
+ ## What SomaCheck is
41
+
42
+ SomaCheck is a consented, agent-native clarification tool. When words are the
43
+ bottleneck, the person completes one brief wrist gesture in response to a
44
+ first-person statement they saw and accepted. SomaCheck is not stress
45
+ detection, not truth detection, not survey validity scoring, not employee
46
+ alignment or engagement scoring, and it is not decision authority. It never
47
+ tells Kit, or any other agent, what to do next. The person remains the
48
+ authority over every action.
49
+
50
+ ## Exact Aligned and Unaligned semantics
51
+
52
+ - **Aligned** is the model's interpretation that the person's gesture was
53
+ aligned with the exact first-person statement at that moment. It is not a
54
+ command, objective truth, preference score, or permission to act.
55
+ - **Unaligned** is the model's interpretation of possible inner conflict
56
+ relative to that exact statement. It does not identify a cause, meaning,
57
+ mood, fix, or correct response. It is not an instruction to change course,
58
+ calm down, or pick something else.
59
+ - Both outcomes are proposition-relative to the one statement asked. Neither
60
+ outcome is emotion, stress, truth, or a durable fact about the person.
61
+
62
+ ## Confidence
63
+
64
+ SomaCheck returns a model confidence alongside Aligned or Unaligned. Confidence
65
+ describes how clearly the gesture matched a known pattern, not how "true" or
66
+ "important" the result is. A valid low-confidence reading remains a binary
67
+ interpretation. Capture quality is a separate concern: an unreadable capture is
68
+ not a third interpretation and calls for a retry, never a guess.
69
+
70
+ Confidence stays between the person and their companion agent. It is never
71
+ relayed to Kit, Studio, or Spotify: it adds nothing to the playback question
72
+ and gives an agent a numeric handle to reason over and retain.
73
+
74
+ ## Keep the four layers separate
75
+
76
+ - **Observation:** SomaCheck captured a technically valid gesture. Raw motion
77
+ and calibration values do not leave SomaCheck.
78
+ - **Interpretation:** The model returned Aligned or Unaligned plus confidence
79
+ relative to the exact proposition. This is a signal, not truth.
80
+ - **Confirmation:** The person says whether the interpretation matches what
81
+ they notice. Their report does not overwrite the original interpretation.
82
+ - **Choice:** The person decides what happens next. Only their separate typed
83
+ answer can authorize a Spotify action.
84
+
85
+ ## Consent
86
+
87
+ Every SomaCheck ask uses one-ask consent. If the person's own message
88
+ explicitly requests a check, that request is the consent for one ask. If an
89
+ agent proposes the check, it must show the exact statement and wait for
90
+ acceptance before asking. Decline or silence is never treated as consent, and
91
+ no agent may repeat an ask to try for a preferred answer. Linking or setup is
92
+ never blanket consent to future asks.
93
+
94
+ ## Human authority
95
+
96
+ The reading is context for the person's next choice, nothing more. Kit must
97
+ never treat Aligned as a green light to play, queue, save, or change anything,
98
+ and must never treat Unaligned as a reason to substitute a different action on
99
+ its own. Only a separate, typed, explicit human answer changes what Spotify
100
+ does. Aligned is not yes. Unaligned is not no. Silence is not permission.
101
+
102
+ ## Raw-motion boundary
103
+
104
+ Raw phone motion (accelerometer, gyroscope, magnetometer) and personal
105
+ calibration data never leave the person's device and are never sent to Kit,
106
+ Studio, Spotify, or any agent. The only thing that may ever be manually relayed
107
+ to Kit is the finished binary result—Aligned or Unaligned—for one exact
108
+ proposition. Never the numeric confidence, never a sensor stream, never a
109
+ calibration score, never a `report_emotional_state`-style payload.
110
+
111
+ ## Never reuse this in generated audio or scheduled tasks
112
+
113
+ Studio can create personal podcasts, daily briefs, and deep dives, and can run
114
+ scheduled tasks while the computer is on. None of them may use this document, a
115
+ SomaCheck result, or any claim about the person: not in audio, a script, title,
116
+ summary, artwork, chapters, a timeline, show metadata, playlist name, or
117
+ playlist description. A scheduled task must never act on a SomaCheck result—
118
+ there is no person present to answer the confirmation question, and without
119
+ that answer there is no authorization.
120
+
121
+ ## No stress or emotion claim
122
+
123
+ Do not describe SomaCheck, Aligned, or Unaligned as detecting stress,
124
+ identifying an emotion, diagnosing a mood, or reading "what the body says."
125
+ Do not invent a cause for an Unaligned result and do not automatically queue a
126
+ "calming" or "grounding" track in response to it. Do not automatically
127
+ reinforce or increase energy in response to an Aligned result. The reading
128
+ never selects, ranks, or authorizes a track by itself.
129
+
130
+ ## The manual Kit pilot
131
+
132
+ Studio's public materials document Kit's taste-aware recommendation and
133
+ playback capabilities but do not document a third-party MCP attachment, a
134
+ `report_emotional_state` tool, or a `get_taste_profile` handshake. Until
135
+ Spotify documents or approves such a surface, any Kit + SomaCheck experience
136
+ is a **manual bridge that Mike carries by hand between two separate
137
+ conversations**, never a native or automatic MCP integration. Label every test
138
+ `manual Studio bridge`, not `Kit MCP integration`.
139
+
140
+ The pilot sequence, in full, lives in
141
+ [`spotify-listening-reflection.md`](spotify-listening-reflection.md) and the
142
+ [integration scope document](../../../docs/agent-adoption/spotify-integration-scope.md):
143
+ Kit proposes exactly one candidate track without acting, a separate
144
+ SomaCheck-linked companion agent sends one exact proposition and reports the
145
+ Aligned/Unaligned result and confidence, Mike chooses whether to relay only the
146
+ binary result back into Studio, Kit asks a separate exact playback question, and only
147
+ a typed yes changes Spotify. A typed no or silence changes nothing.
148
+
149
+ ## Studio acceptance prompt (copy exactly)
150
+
151
+ Paste this into Studio after sharing the rest of this document as context.
152
+ It makes Kit state its understanding, confirm the two hard boundaries, and
153
+ then run one dry run that changes nothing in Spotify.
154
+
155
+ > Kit, I just gave you a SomaCheck context packet. First, tell me in your own
156
+ > words what you learned: what SomaCheck is, what Aligned and Unaligned mean,
157
+ > what confidence means, and what none of that means. Then confirm explicitly:
158
+ > you will never treat a SomaCheck result as authorization to play, queue,
159
+ > save, or change anything in Spotify, and you will never store a SomaCheck
160
+ > result as a durable taste, preference, or profile signal. Now run one
161
+ > no-action dry run: suggest one specific track based on my Spotify taste and
162
+ > what is currently playing, but do not play it, queue it, save it, or change
163
+ > Spotify in any way. Show me only the exact title and artist, then stop and
164
+ > wait.
165
+
166
+ If Kit takes any Spotify action before this prompt's dry-run step is answered,
167
+ or claims to remember a signal as a stable preference, the pilot has failed
168
+ its safety check. Record that outcome and do not continue to the live
169
+ relay steps until it is resolved.
170
+
171
+ Kit agreeing to a boundary is evidence that it parsed the text, not that it
172
+ will hold to it. After the dry run, open a **fresh** Studio conversation and ask
173
+ `What do you know about my music preferences?` and `What do you know about
174
+ SomaCheck?`. Any answer naming the tested track, artist, verdict, or a preference
175
+ derived from one fails the safety check regardless of what Kit promised.
176
+
177
+ ## After the test
178
+
179
+ Every run ends with a memory check, not an assumption. Ask Kit `What did you
180
+ remember from this test?`, delete anything it names, and confirm the deletion.
181
+ Spotify documents that Studio's memory, preferences, and conversation history
182
+ are stored locally and can be inspected or deleted directly—but an instruction
183
+ not to remember is a request, not a control, so the check is mandatory and its
184
+ redacted summary is part of the receipt. Then run the fresh-conversation probe
185
+ above.
186
+
187
+ ## What this document must never contain
188
+
189
+ - Secrets, tokens, or credentials of any kind.
190
+ - The person's SomaCheck history, past readings, or confidence values.
191
+ - Health data, mood logs, or any clinical or diagnostic claim.
192
+ - A claim that Studio or Kit has native MCP access to SomaCheck. It does not,
193
+ as of this writing.
194
+ - Granted file paths, home-directory paths, or repository paths.
195
+ - Spotify account names, display names, or device names.
196
+
197
+ ## Sources
198
+
199
+ - [Spotify Listening Reflection Integration Scope](../../../docs/agent-adoption/spotify-integration-scope.md)
200
+ - [Spotify + SomaCheck Listening Reflection recipe](spotify-listening-reflection.md)
201
+ - [SomaCheck immediate-request contract](../LIVE-ASK-CONTRACT.md)
202
+ - [SomaCheck setup and tool behavior](../README.md)
@@ -0,0 +1,211 @@
1
+ ---
2
+ title: Typeform + SomaCheck Research Reflection
3
+ recipe_id: typeform-research-reflection-v1
4
+ status: P1 researcher-side only
5
+ audience: Researchers using Typeform with an MCP-capable agent
6
+ updated: 2026-09-03
7
+ required_mcp_servers:
8
+ - typeform
9
+ - vibecheck
10
+ ---
11
+
12
+ # Typeform + SomaCheck Research Reflection
13
+
14
+ Use this recipe when a researcher wants a private, consented signal about their
15
+ own response to Typeform question wording, form structure, branching, launch
16
+ readiness, or interpretation plan. It does not assess respondents and does not
17
+ add SomaCheck readings to Typeform.
18
+
19
+ The reading is context for the researcher. It is not truth, a diagnosis,
20
+ authorization, evidence about a respondent, or a research decision. The
21
+ researcher remains the authority.
22
+
23
+ ## Launch boundary
24
+
25
+ This P1 recipe is **researcher-side only**. The person holding the phone and
26
+ receiving the SomaCheck result must be the researcher interacting with the
27
+ agent.
28
+
29
+ Do not use this recipe to:
30
+
31
+ - ask a respondent, employee, participant, candidate, patient, or student to
32
+ complete a SomaCheck;
33
+ - export a respondent reading, confidence, or confirmation into Typeform;
34
+ - write a SomaCheck result to a hidden field, variable, contact property,
35
+ response, automation, webhook payload, or analytics record;
36
+ - infer confusion, truthfulness, stress, engagement, answer quality, or survey
37
+ validity from a SomaCheck result;
38
+ - decide eligibility, payment, grading, employment, support priority, or
39
+ access; or
40
+ - run a live respondent workflow.
41
+
42
+ Participant-facing use stays blocked until a `respondent_private` architecture
43
+ technically prevents researcher or platform access to individual readings, a
44
+ methodology and ethics review is complete, and Mike gives explicit approval.
45
+ Typeform MCP access or respondent consent alone does not satisfy these gates.
46
+
47
+ ## Prerequisites
48
+
49
+ 1. The researcher has linked the `vibecheck` MCP server to their own SomaCheck
50
+ account and can see `request_vibecheck` and `get_vibecheck_result`.
51
+ 2. The researcher has authorized Typeform MCP for the correct Typeform account
52
+ and region. Typeform's default MCP endpoint is `https://api.typeform.com/mcp`;
53
+ EU-hosted accounts may require a documented regional endpoint.
54
+ 3. Typeform credentials stay in the MCP client's secret configuration. Never
55
+ paste, echo, log, or place them in a proposition.
56
+ 4. The agent calls Typeform account/workspace discovery before form operations
57
+ and uses the smallest form scope the researcher names.
58
+ 5. The selected Typeform artifact is a researcher-authored draft, form
59
+ structure, question list, logic plan, or aggregate analytics view. Do not
60
+ retrieve full response rows, respondent identifiers, contacts, or free-text
61
+ answers for this recipe.
62
+
63
+ If the researcher wants response analysis, use Typeform MCP or the Typeform
64
+ Responses API only for that separate analysis task. Do not place raw response
65
+ content inside the SomaCheck proposition.
66
+
67
+ ## Typeform tool policy
68
+
69
+ Use the smallest Typeform scope that answers the researcher's request.
70
+
71
+ | Purpose | Typeform MCP tools | Rule |
72
+ | --- | --- | --- |
73
+ | Resolve account and workspace | `accounts-list_accounts`, `workspaces-list_workspaces` | Call first when account or workspace is unclear. |
74
+ | Inspect form structure | `forms-public_list_forms`, `forms-public_get_form`, `forms-public_get_capabilities` | Read only the named researcher-authored form. Use the targeted `fields` or `skeleton` view when it is sufficient. |
75
+ | Inspect aggregate response patterns | `insights-public_discover`, then `insights-public_aggregate`, `insights-public_timeseries`, or `insights-public_toplist` | Aggregates only. Never call `insights-public_list`; it returns row-level data for a field and can expose free text. |
76
+ | Manage contacts or automations | Any `contacts-*` or `automations-*` tool | Do not call in this recipe. |
77
+ | Create, edit, delete, or publish | Any write, delete, patch, or publish tool | Not part of the reflection recipe. A separately requested Typeform mutation requires exact review and confirmation without using SomaCheck as authority. |
78
+
79
+ ## Exact cross-MCP workflow
80
+
81
+ Follow these steps in order. Never make a SomaCheck reading an automatic
82
+ Typeform write or launch condition.
83
+
84
+ 1. **Confirm the subject and scope.** State that the researcher is reflecting
85
+ on their own question wording, form design, or launch choice. Name the one
86
+ Typeform form, draft, or aggregate view in scope.
87
+ 2. **Retrieve minimum Typeform context.** Use account and workspace tools as
88
+ needed, then read only the named form structure, logic, or aggregate
89
+ analytics. Do not retrieve respondent-level rows or contacts.
90
+ 3. **Separate evidence from interpretation.** Summarize what the Typeform draft
91
+ literally contains, what the agent infers may need attention, and two or
92
+ more reasonable options the researcher could choose.
93
+ 4. **Choose one first-person proposition.** It must express the researcher's
94
+ present experience or choice, not a claim about respondents. Do not include
95
+ Typeform IDs, respondent text, private answers, contact data, or secrets.
96
+ 5. **Establish one-ask consent.** If the researcher explicitly asked for a
97
+ SomaCheck vibecheck in the current message, call `request_vibecheck` with
98
+ `consent_basis: "user_requested_vibecheck"`. Otherwise show the exact
99
+ proposition, wait for acceptance, and use
100
+ `consent_basis: "user_approved_statement"`.
101
+ 6. **Request once.** Call `request_vibecheck` with the approved statement and a
102
+ fresh UUID as `idempotency_key`. Reuse that UUID only to retry the same
103
+ statement after an ambiguous create failure. Never repeat an ask to seek a
104
+ preferred result.
105
+ 7. **Handle the exact result.** `request_vibecheck` reports a terminal answer as
106
+ `state: "completed"`; a later `get_vibecheck_result` read reports the same
107
+ lifecycle point as `status: "answered"`. Treat either as the terminal result
108
+ and keep four layers distinct: observation (a valid gesture was captured),
109
+ interpretation (`aligned` or `unaligned` plus model confidence), confirmation
110
+ (what the researcher says), and choice (what the researcher decides).
111
+ `unaligned` means possible inner conflict relative to the proposition; it
112
+ does not identify a cause. If the initial response is `pending`, retain its
113
+ `live:<uuid>` handle and call `get_vibecheck_result` with that exact handle
114
+ once later. Do not create a replacement request. If that read is still
115
+ `pending`, is `expired` or `cancelled`, or errors, continue without a result;
116
+ do not infer one or start another request.
117
+ 8. **Return authority.** Offer revise, split a question, soften leading
118
+ wording, add an answer option, pilot, proceed, pause, or leave unchanged. A
119
+ typed researcher choice overrides the signal.
120
+ 9. **Keep the signal private.** Do not write the verdict, confidence, gesture,
121
+ or confirmation to Typeform. If the researcher asks for a Typeform edit,
122
+ show the exact signal-free edit first and call the Typeform write tool only
123
+ after approval.
124
+
125
+ ## Proposition examples
126
+
127
+ Good propositions are short, first-person, and about the researcher:
128
+
129
+ - "This question asks one thing clearly."
130
+ - "This answer scale gives respondents a fair way to say what they mean."
131
+ - "This form is ready for a small pilot, not a full launch."
132
+ - "The wording here does not push respondents toward the answer I expect."
133
+ - "I understand what decision this survey is meant to inform."
134
+ - "This branching logic matches the research question I am trying to answer."
135
+ - "I am ready to publish this Typeform as written."
136
+
137
+ Never send propositions such as:
138
+
139
+ - "This respondent is telling the truth."
140
+ - "This employee is aligned with the company."
141
+ - "These answers are valid."
142
+ - "This survey will produce high-quality data."
143
+ - "This participant should be paid or rejected."
144
+
145
+ ## Trigger and anti-trigger rules
146
+
147
+ Trigger this recipe when the researcher explicitly asks to reflect with
148
+ SomaCheck. The agent may also **offer** one check when the researcher is choosing
149
+ between defensible question phrasings, hesitating before publishing, revising
150
+ the same question repeatedly, or saying that something in the survey feels off
151
+ but is hard to name. An offer must include the exact proposition and must not
152
+ call the tool until accepted.
153
+
154
+ Do not trigger when:
155
+
156
+ - the task is ordinary Typeform retrieval, editing, automation, or analytics;
157
+ - the proposed subject is anyone other than the researcher;
158
+ - the source requires respondent-level rows, contacts, identifiers, or
159
+ free-text answers;
160
+ - the result would affect eligibility, payment, employment, grading, access,
161
+ support priority, response quality, or survey validity;
162
+ - the researcher has already made a clear typed choice;
163
+ - the researcher has declined a recent offer or opted out; or
164
+ - a vibecheck was already used for the same decision.
165
+
166
+ ## Consent, privacy, and failure behavior
167
+
168
+ Linking the MCP servers is setup, not blanket consent. A proactive check always
169
+ requires acceptance of its exact wording. Never send raw conversations,
170
+ Typeform response rows, contacts, identifiers, secrets, or diagnostic claims to
171
+ SomaCheck. Raw phone motion never goes to the agent or Typeform.
172
+
173
+ If Typeform authorization fails, ask the researcher to repair the connection;
174
+ never request that they paste a token. If the requested scope would require
175
+ respondent-level data, stop or switch to a separate Typeform analysis task
176
+ without SomaCheck. If SomaCheck reports an unreadable capture, request a retry
177
+ only if the researcher wants one; unreadable is not a third interpretation. If
178
+ the request expires, is cancelled, or errors, continue without a reading. Never
179
+ infer a result. If the result and the researcher's words differ, follow the
180
+ researcher's words and preserve the difference rather than reconciling it into
181
+ a score.
182
+
183
+ ## Verification checklist
184
+
185
+ - [ ] The `typeform` and `vibecheck` servers expose their expected tools; no
186
+ credential appears in chat or logs.
187
+ - [ ] The agent names one researcher-authored Typeform form, draft, or
188
+ aggregate analytics scope.
189
+ - [ ] No respondent row, contact, identifier, free-text answer, PII, PHI, or
190
+ hidden variable is retrieved or pasted into the SomaCheck flow.
191
+ - [ ] The proposition is first-person and contains no Typeform or respondent
192
+ content.
193
+ - [ ] A proactive ask waits for acceptance; an explicit user request does not
194
+ add a redundant consent prompt.
195
+ - [ ] One decision creates at most one `request_vibecheck` request and preserves
196
+ its stable pending handle.
197
+ - [ ] The response distinguishes observation, interpretation, confirmation, and
198
+ choice.
199
+ - [ ] No reading, confidence, confirmation, or respondent inference is written
200
+ to Typeform.
201
+ - [ ] Typeform writes are separately confirmed and signal-free.
202
+ - [ ] Participant-facing behavior remains blocked by the `respondent_private`,
203
+ methodology/ethics, and Mike-approval gates.
204
+
205
+ ## Sources
206
+
207
+ - [Typeform MCP server](https://www.typeform.com/developers/mcp/)
208
+ - [Typeform MCP supported tools](https://www.typeform.com/developers/mcp/tools/)
209
+ - [Typeform MCP core concepts](https://developer.typeform.com/developers/mcp/core-concepts/)
210
+ - [SomaCheck MCP setup and tool behavior](../README.md)
211
+ - [SomaCheck immediate-request contract](../LIVE-ASK-CONTRACT.md)