@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.
- package/LICENSE +21 -0
- package/README.md +84 -9
- package/claude-marketplace/.claude-plugin/marketplace.json +1 -1
- package/claude-marketplace/plugins/vibecheck/.claude-plugin/plugin.json +4 -4
- package/claude-marketplace/plugins/vibecheck/hooks/hooks.json +1 -1
- package/dist/cli.js +31 -0
- package/dist/client-setup.js +2 -1
- package/dist/constants.js +2 -1
- package/dist/readiness.js +2 -2
- package/dist/recipes.js +191 -0
- package/dist/server.js +58 -15
- package/package.json +4 -4
- package/recipes/chattermill-research-reflection.md +323 -0
- package/recipes/dovetail-research-reflection.md +204 -0
- package/recipes/great-question-research-reflection.md +212 -0
- package/recipes/maze-research-reflection.md +325 -0
- package/recipes/prolific-research-reflection.md +215 -0
- package/recipes/questionpro-research-reflection.md +151 -0
- package/recipes/spotify-listening-reflection.md +459 -0
- package/recipes/sprig-research-reflection.md +222 -0
- package/recipes/studio-somacheck-context.md +202 -0
- package/recipes/typeform-research-reflection.md +211 -0
- package/recipes/user-interviews-research-reflection.md +253 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Maze + SomaCheck Research Reflection
|
|
3
|
+
recipe_id: maze-research-reflection-v1
|
|
4
|
+
status: P1 researcher-side read-only reflection; authenticated Maze MCP capability required
|
|
5
|
+
audience: Researchers using Maze with an MCP-capable agent
|
|
6
|
+
updated: 2026-09-05
|
|
7
|
+
required_mcp_servers:
|
|
8
|
+
- maze
|
|
9
|
+
- vibecheck
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Maze + SomaCheck Research Reflection
|
|
13
|
+
|
|
14
|
+
This recipe gives a Maze researcher one private SomaCheck check-in while
|
|
15
|
+
shaping the researcher's own interpretation plan for one named Maze study.
|
|
16
|
+
The researcher stays the only person who reads, decides, or acts. The recipe
|
|
17
|
+
reads only study metadata or aggregate summary and performs no Maze write.
|
|
18
|
+
|
|
19
|
+
Maze is a hosted read-only MCP surface (`https://connect.maze.co/mcp`,
|
|
20
|
+
OAuth 2.1). Setup happens in the AI host rather than through a toggle in the
|
|
21
|
+
Maze product UI. Maze's current help pages are inconsistent about Maze-plan
|
|
22
|
+
eligibility, so the authenticated MCP capability response is authoritative for
|
|
23
|
+
the connected account. A team reporting `mcpAccess: true` is an eligible live
|
|
24
|
+
connection regardless of its displayed plan label.
|
|
25
|
+
|
|
26
|
+
The SomaCheck reading is context for the researcher's own interpretation
|
|
27
|
+
plan. It is not truth, diagnosis, authorization, evidence about a Maze
|
|
28
|
+
participant, or a research decision. The researcher remains the authority.
|
|
29
|
+
|
|
30
|
+
## Capability and access boundary
|
|
31
|
+
|
|
32
|
+
Maze documents the hosted MCP as read-only and OAuth 2.1 authenticated at
|
|
33
|
+
`https://connect.maze.co/mcp`. The product or integration owner provisions it
|
|
34
|
+
in a supported MCP host and makes an authorized organization connection or
|
|
35
|
+
partner sandbox available to the researcher. Verify the provisioned access by
|
|
36
|
+
calling the runtime account/team-details capability and requiring
|
|
37
|
+
`mcpAccess: true` for the selected team. Do not infer access from a plan name
|
|
38
|
+
or look for a Maze-side MCP toggle. Running this recipe never asks the
|
|
39
|
+
researcher to sign up, upgrade, administer access, or populate Maze data.
|
|
40
|
+
|
|
41
|
+
This P1 recipe is researcher-side only. Do not use it to:
|
|
42
|
+
|
|
43
|
+
- ask a Maze participant, respondent, tester, employee, candidate, patient,
|
|
44
|
+
or student to complete a SomaCheck;
|
|
45
|
+
- retrieve transcripts, session recordings, heatmaps, click maps, mission
|
|
46
|
+
answers, participant identifiers, contact fields, demographic exports,
|
|
47
|
+
free-text fields, or any row-level Maze data;
|
|
48
|
+
- use a reading for participant recruitment, targeting, eligibility,
|
|
49
|
+
payment, ranking, stress detection, truth detection, deception
|
|
50
|
+
detection, preference quality, survey validity, research validity,
|
|
51
|
+
employee engagement, performance, mental health state, authenticity,
|
|
52
|
+
or quality scoring;
|
|
53
|
+
- write a SomaCheck reading, confidence, gesture, confirmation, or hidden
|
|
54
|
+
score into Maze, a hidden field, a webhook payload, a comment, a tag, a
|
|
55
|
+
highlight, an insight, an automation, or any analytics record;
|
|
56
|
+
- create, edit, publish, delete, archive, export, share, duplicate, or
|
|
57
|
+
otherwise mutate any Maze study, block, mission, prototype, folder,
|
|
58
|
+
report, insight, or theme; or
|
|
59
|
+
- run a live participant workflow.
|
|
60
|
+
|
|
61
|
+
Participant-facing use stays blocked until a `respondent_private`
|
|
62
|
+
architecture prevents researcher or platform access to individual readings,
|
|
63
|
+
methodology and ethics review is complete, and Sensie gives explicit
|
|
64
|
+
privacy/legal approval. Maze MCP access, plan status, or participant consent
|
|
65
|
+
alone does not satisfy these gates.
|
|
66
|
+
|
|
67
|
+
## Experience a researcher can run
|
|
68
|
+
|
|
69
|
+
The researcher holds the phone and selects one existing study supplied by the
|
|
70
|
+
workspace owner. The agent reads only that study's safe metadata (name,
|
|
71
|
+
description, status, mission list, block list, settings) or one aggregate
|
|
72
|
+
summary (mission completion rates, time on task, success-rate aggregate,
|
|
73
|
+
summary counts). It does not open transcripts, response rows, participant
|
|
74
|
+
identifiers, recordings, or free-text fields. The agent offers two defensible
|
|
75
|
+
interpretation framings and one short first-person proposition about the
|
|
76
|
+
researcher's own interpretation plan. After the researcher's typed choice,
|
|
77
|
+
the agent stops. There is no Maze write.
|
|
78
|
+
|
|
79
|
+
## Starter prompt
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
Use Maze and SomaCheck to help me reflect on my own interpretation plan
|
|
83
|
+
for one named Maze study. I am the researcher and I am holding the phone.
|
|
84
|
+
The study is: [STUDY NAME OR ID PROVIDED BY THE WORKSPACE OWNER]. Use only
|
|
85
|
+
the preconfigured official hosted read-only Maze MCP at
|
|
86
|
+
https://connect.maze.co/mcp. Read only that study's safe metadata (name,
|
|
87
|
+
description, status, mission list, block list, settings) or one aggregate
|
|
88
|
+
summary (mission completion rates, time on task, success-rate aggregates,
|
|
89
|
+
summary counts). Do not retrieve
|
|
90
|
+
transcripts, session recordings, heatmaps, click maps, mission answers,
|
|
91
|
+
participant identifiers, contact fields, demographic exports, free-text
|
|
92
|
+
fields, themes, highlights, or any row-level Maze data. Propose two
|
|
93
|
+
defensible interpretation framings. Then offer one short first-person
|
|
94
|
+
proposition about my own interpretation plan and wait for my acceptance
|
|
95
|
+
before any proactive SomaCheck ask. Treat Aligned or Unaligned plus
|
|
96
|
+
confidence as context, not truth, diagnosis, authorization, or evidence
|
|
97
|
+
about a Maze participant. Ask what I choose in words. Keep the
|
|
98
|
+
proposition, reading, confidence, and my confirmation out of Maze. Do
|
|
99
|
+
not create, edit, publish, delete, archive, export, share, tag, comment,
|
|
100
|
+
or write to Maze, a hidden field, a webhook, or any analytics record.
|
|
101
|
+
Continue when the authenticated selected team reports `mcpAccess: true`.
|
|
102
|
+
Otherwise label the Maze half untested, return the copy-ready plan, tell the
|
|
103
|
+
integration owner what capability is missing, and stop. Do not ask me to sign
|
|
104
|
+
up, upgrade, administer access, or populate Maze data.
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Prerequisites and account access
|
|
108
|
+
|
|
109
|
+
1. The researcher can complete a normal SomaCheck request through the connected
|
|
110
|
+
`vibecheck` MCP server (`request_vibecheck` and
|
|
111
|
+
`get_vibecheck_result`).
|
|
112
|
+
2. A product or integration owner has provisioned an authorized organization
|
|
113
|
+
connection or partner sandbox. Its authenticated Maze MCP reports
|
|
114
|
+
`mcpAccess: true` for the selected team. Do not reject an authenticated team
|
|
115
|
+
because its returned plan label is `Personal`, and do not claim access
|
|
116
|
+
merely from documentation or UI.
|
|
117
|
+
3. The provisioned MCP client is connected to exactly
|
|
118
|
+
`https://connect.maze.co/mcp` and authenticated through the OAuth 2.1 flow
|
|
119
|
+
Maze publishes. Do not substitute a different host, path, or non-Maze
|
|
120
|
+
endpoint.
|
|
121
|
+
4. The workspace owner supplies one named existing Maze study (by name or ID)
|
|
122
|
+
that does not require row-level participant data, transcripts, recordings,
|
|
123
|
+
contact fields, or free-text fields for the reflection task. The researcher
|
|
124
|
+
is not responsible for creating or populating it.
|
|
125
|
+
5. No credential, OAuth token, study ID containing PII, or participant
|
|
126
|
+
identifier appears in chat, logs, prompts, or the SomaCheck
|
|
127
|
+
proposition.
|
|
128
|
+
|
|
129
|
+
## Maze tool policy
|
|
130
|
+
|
|
131
|
+
Maze publishes a hosted, OAuth 2.1, read-only MCP. The recipe uses the
|
|
132
|
+
smallest tools that answer the researcher's request. Treat the live tool
|
|
133
|
+
list as runtime-discovered; do not assume undocumented tool names.
|
|
134
|
+
|
|
135
|
+
| Purpose | Allowed surface | Rule |
|
|
136
|
+
| --- | --- | --- |
|
|
137
|
+
| Resolve the named study | runtime-discovered study lookup or list | Read only the named study; never list every workspace study or participant row |
|
|
138
|
+
| Read study metadata | runtime-discovered study detail / mission list / block list / settings | Read only the named study's metadata; treat status, description, mission list, and block list as metadata |
|
|
139
|
+
| Read one aggregate summary | runtime-discovered aggregate or summary tool, if exposed | One aggregate read (counts, completion rates, time-on-task aggregates, success-rate aggregates); never row-level data |
|
|
140
|
+
| Create, edit, publish, delete, share, archive, export, duplicate, tag, comment | any mutation tool | Prohibited in this recipe |
|
|
141
|
+
| Transcripts, recordings, heatmaps, click maps, mission answers, participant identifiers, contact fields, demographics, free-text fields, themes, highlights, insights | any row-level or participant-bearing tool | Prohibited in this recipe |
|
|
142
|
+
| Webhooks, automations, exports, analytics writes | any write side-effect tool | Prohibited in this recipe |
|
|
143
|
+
| Private reflection | `request_vibecheck`, optional `get_vibecheck_result` | One decision, one request, one stable pending handle |
|
|
144
|
+
|
|
145
|
+
Do not broaden a connection to a root or all-tools endpoint to make this
|
|
146
|
+
recipe work. If the runtime does not expose a study-metadata or aggregate
|
|
147
|
+
read, label the Maze half untested and stop.
|
|
148
|
+
|
|
149
|
+
## Exact cross-MCP workflow
|
|
150
|
+
|
|
151
|
+
1. **Confirm the subject and scope.** State that the researcher is the phone
|
|
152
|
+
holder and the subject of the proposition. Name the one existing Maze study
|
|
153
|
+
supplied by the workspace owner (by name or ID).
|
|
154
|
+
2. **Verify Maze access honestly.** Call the authenticated account/team-details
|
|
155
|
+
capability. Continue only when the selected team reports `mcpAccess: true`.
|
|
156
|
+
Treat the runtime capability as authoritative rather than inferring access
|
|
157
|
+
from the plan label or searching for a Maze-side settings toggle.
|
|
158
|
+
3. **Read only metadata or one aggregate summary.** Call the smallest
|
|
159
|
+
runtime tool that returns the named study's metadata (name,
|
|
160
|
+
description, status, mission list, block list, settings) or one
|
|
161
|
+
aggregate summary (counts, completion-rate aggregates, time-on-task
|
|
162
|
+
aggregates, success-rate aggregates). Do not call any tool that
|
|
163
|
+
returns transcripts, recordings, heatmaps, click maps, mission
|
|
164
|
+
answers, participant identifiers, contact fields, demographic
|
|
165
|
+
exports, free-text fields, themes, highlights, or insights.
|
|
166
|
+
4. **Separate evidence from interpretation.** Label what the Maze study
|
|
167
|
+
literally contains, what the agent infers, and what the researcher's
|
|
168
|
+
own judgment must still decide.
|
|
169
|
+
5. **Propose two framings.** Offer two defensible interpretation
|
|
170
|
+
framings the researcher could choose from, with the tradeoff for each.
|
|
171
|
+
6. **Choose one first-person proposition.** It must be short,
|
|
172
|
+
first-person, and about the researcher's own interpretation plan. Do not include
|
|
173
|
+
Maze IDs containing PII, participant data, transcript text, contact
|
|
174
|
+
fields, free text, themes, or highlights.
|
|
175
|
+
7. **Establish one-ask consent.** If the researcher explicitly requested a
|
|
176
|
+
SomaCheck check-in in the current message, use
|
|
177
|
+
`consent_basis: "user_requested_vibecheck"`. Otherwise show the
|
|
178
|
+
exact proposition, wait for acceptance, and use
|
|
179
|
+
`consent_basis: "user_approved_statement"`.
|
|
180
|
+
8. **Request once.** Call `request_vibecheck` with the approved statement
|
|
181
|
+
and a fresh UUID `idempotency_key`. Reuse it only to retry the
|
|
182
|
+
identical request after an ambiguous create failure.
|
|
183
|
+
9. **Handle the real lifecycle.** A terminal response from
|
|
184
|
+
`request_vibecheck` uses `state: "completed"`; a later read uses
|
|
185
|
+
`status: "answered"`. If the initial response is `pending`, retain the
|
|
186
|
+
returned `live:<uuid>` handle and call `get_vibecheck_result` with
|
|
187
|
+
it once later. If it is still `pending`, `expired`, `cancelled`, or
|
|
188
|
+
errors, continue without a result. Never issue a replacement ask.
|
|
189
|
+
10. **Return authority.** Separate observation (a valid gesture was
|
|
190
|
+
captured), interpretation (`aligned` or `unaligned` plus model
|
|
191
|
+
confidence), confirmation (what the researcher says), and choice (what the researcher
|
|
192
|
+
decides). `unaligned` may indicate possible inner conflict relative
|
|
193
|
+
to the proposition; it does not name a cause, choose an interpretation,
|
|
194
|
+
or justify a research claim.
|
|
195
|
+
11. **Ask for words.** Ask the researcher which framing they choose, whether they
|
|
196
|
+
want a third option, or whether they want to stop. Follow their typed
|
|
197
|
+
choice.
|
|
198
|
+
12. **Keep the signal out of Maze.** Do not call any Maze write, mutation,
|
|
199
|
+
export, webhook, comment, tag, highlight, insight, analytics, or
|
|
200
|
+
hidden-field tool. Do not store the proposition, reading,
|
|
201
|
+
confidence, confirmation, or gesture metadata in Maze.
|
|
202
|
+
13. **End the test.** Report the exact Maze tool names used and the
|
|
203
|
+
exact metadata or aggregate fields returned, or report the
|
|
204
|
+
copy-ready plan when the Maze half is untested. Do not create,
|
|
205
|
+
edit, publish, delete, archive, export, share, duplicate, or
|
|
206
|
+
otherwise mutate any Maze object.
|
|
207
|
+
|
|
208
|
+
## Proposition examples
|
|
209
|
+
|
|
210
|
+
Allowed:
|
|
211
|
+
|
|
212
|
+
- "I can interpret this Maze study without reading individual
|
|
213
|
+
transcripts."
|
|
214
|
+
- "I have a clear interpretation plan for the aggregate success-rate
|
|
215
|
+
summary."
|
|
216
|
+
- "I am ready to use only metadata and one aggregate summary for this
|
|
217
|
+
study."
|
|
218
|
+
- "I want to keep the participant data out of my interpretation
|
|
219
|
+
decision."
|
|
220
|
+
- "I can explain what this Maze study is showing without overclaiming."
|
|
221
|
+
|
|
222
|
+
Not allowed:
|
|
223
|
+
|
|
224
|
+
- "This Maze participant is telling the truth."
|
|
225
|
+
- "These Maze testers are engaged."
|
|
226
|
+
- "This mission result is high quality."
|
|
227
|
+
- "These respondents should be paid or rejected."
|
|
228
|
+
- "This Maze study proves my hypothesis."
|
|
229
|
+
|
|
230
|
+
## Visible success condition
|
|
231
|
+
|
|
232
|
+
The test passes when:
|
|
233
|
+
|
|
234
|
+
- the researcher selects one existing Maze study supplied by a workspace owner
|
|
235
|
+
in a team whose authenticated MCP response reports `mcpAccess: true`;
|
|
236
|
+
- the agent reads only that study's metadata or one aggregate summary
|
|
237
|
+
through the hosted read-only Maze MCP and reports the exact tool
|
|
238
|
+
names used;
|
|
239
|
+
- the agent never calls a row-level, transcript, recording, heatmap,
|
|
240
|
+
click map, mission-answer, participant-identifier, contact, free-text,
|
|
241
|
+
theme, highlight, insight, automation, or write tool;
|
|
242
|
+
- the researcher receives at most one optional SomaCheck check-in on their phone
|
|
243
|
+
on an exact first-person proposition about their own interpretation plan;
|
|
244
|
+
- the agent presents the result as context, asks the researcher to state their
|
|
245
|
+
choice in words, and follows the typed choice;
|
|
246
|
+
- the agent makes no Maze write, mutation, export, share, tag,
|
|
247
|
+
comment, or analytics call; and
|
|
248
|
+
- no Maze participant, respondent, or employee data enters the
|
|
249
|
+
cross-MCP flow.
|
|
250
|
+
|
|
251
|
+
## Failure and degraded paths
|
|
252
|
+
|
|
253
|
+
- **Authenticated team lacks MCP access:** Label the Maze half untested. Return
|
|
254
|
+
the copy-ready interpretation plan and stop. Never substitute a plan label,
|
|
255
|
+
documentation walkthrough, static/local fixture, or non-Maze endpoint for an
|
|
256
|
+
authenticated organization or partner-sandbox pass.
|
|
257
|
+
- **OAuth 2.1 failure or absent scope:** Report the missing capability to the
|
|
258
|
+
product or integration owner; never request a token in chat or ask the
|
|
259
|
+
researcher to sign up, upgrade, or administer access. Return the copy-ready
|
|
260
|
+
plan and stop.
|
|
261
|
+
- **Runtime exposes only row-level or participant-bearing tools:** Do
|
|
262
|
+
not call them. Label the Maze half untested and stop. Do not broaden
|
|
263
|
+
the connection to make this recipe work.
|
|
264
|
+
- **MCP returns row-level data, participant identifiers, transcripts,
|
|
265
|
+
recordings, free-text fields, themes, highlights, or insights:** Stop
|
|
266
|
+
immediately. Discard the row-level content from the agent context.
|
|
267
|
+
Report the exact fields received and ask the product or integration owner to
|
|
268
|
+
revoke or limit the scope. Do not use the row-level content in any
|
|
269
|
+
proposition, framing, or interpretation.
|
|
270
|
+
- **SomaCheck unresolved:** Use the same `live:<uuid>` handle once
|
|
271
|
+
later, then proceed without a reading if still unresolved.
|
|
272
|
+
- **Unreadable capture:** Offer a retry only if the researcher wants it;
|
|
273
|
+
unreadable is not a third interpretation.
|
|
274
|
+
- **Researcher disagrees with the reading:** Follow the researcher's typed choice
|
|
275
|
+
without reconciliation or repetition.
|
|
276
|
+
|
|
277
|
+
## Privacy boundary
|
|
278
|
+
|
|
279
|
+
- Raw phone motion never reaches Maze or the agent.
|
|
280
|
+
- Maze receives no proposition, reading, confidence, confirmation,
|
|
281
|
+
gesture metadata, or row-level participant data through this recipe.
|
|
282
|
+
- SomaCheck receives no Maze study ID containing PII, mission text,
|
|
283
|
+
participant data, transcript, recording, contact field, free-text
|
|
284
|
+
field, theme, highlight, or insight.
|
|
285
|
+
- No Maze participant, respondent, or employee data is read into the
|
|
286
|
+
agent conversation, prompt, proposition, framing, or memory.
|
|
287
|
+
- The Maze workspace remains unchanged. No mutation, write, export,
|
|
288
|
+
share, tag, comment, automation, webhook, or analytics call occurs.
|
|
289
|
+
|
|
290
|
+
## Test checklist
|
|
291
|
+
|
|
292
|
+
- [ ] The researcher is the phone holder and the subject of the proposition.
|
|
293
|
+
- [ ] The authenticated Maze team reports `mcpAccess: true`; its plan label is
|
|
294
|
+
recorded only as context and is not used to override the capability.
|
|
295
|
+
- [ ] The MCP client is connected to exactly
|
|
296
|
+
`https://connect.maze.co/mcp` through Maze's OAuth 2.1 flow; no
|
|
297
|
+
other host, path, or non-Maze endpoint is used.
|
|
298
|
+
- [ ] No Maze credential or OAuth token appears in chat, logs, or the
|
|
299
|
+
SomaCheck proposition.
|
|
300
|
+
- [ ] The agent reads only metadata or one aggregate summary of the
|
|
301
|
+
named study and reports the exact runtime tool names used.
|
|
302
|
+
- [ ] The agent does not call any transcript, recording, heatmap,
|
|
303
|
+
click map, mission-answer, participant-identifier, contact,
|
|
304
|
+
free-text, theme, highlight, insight, automation, or write tool.
|
|
305
|
+
- [ ] The proposition is first-person and contains no Maze IDs
|
|
306
|
+
containing PII, participant data, transcripts, contact fields,
|
|
307
|
+
free-text fields, themes, or highlights.
|
|
308
|
+
- [ ] At most one SomaCheck request is created for the choice.
|
|
309
|
+
- [ ] Observation, interpretation, confirmation, and choice remain
|
|
310
|
+
separate.
|
|
311
|
+
- [ ] The researcher states a choice in words and the agent follows the typed
|
|
312
|
+
choice.
|
|
313
|
+
- [ ] The agent makes no Maze mutation, write, export, share, tag,
|
|
314
|
+
comment, or analytics call.
|
|
315
|
+
- [ ] No Maze participant, respondent, or employee data enters the
|
|
316
|
+
cross-MCP flow.
|
|
317
|
+
|
|
318
|
+
## Sources
|
|
319
|
+
|
|
320
|
+
- [Maze MCP support article](https://help.maze.co/articles/3603930517-maze-mcp)
|
|
321
|
+
- [Set up Maze MCP](https://help.maze.co/articles/8675970764-set-up-maze-mcp)
|
|
322
|
+
- [Maze product help](https://help.maze.co/)
|
|
323
|
+
- [SomaCheck MCP setup and tool behavior](../README.md)
|
|
324
|
+
- [SomaCheck immediate-request contract](../LIVE-ASK-CONTRACT.md)
|
|
325
|
+
- [MCP Customer-Testable Experience Catalog](../../../docs/agent-adoption/customer-experience-catalog.md)
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Prolific + SomaCheck Research Reflection
|
|
3
|
+
recipe_id: prolific-research-reflection-v1
|
|
4
|
+
status: P1 researcher-side only
|
|
5
|
+
audience: Researchers using Prolific with an MCP-capable agent
|
|
6
|
+
updated: 2026-09-03
|
|
7
|
+
required_mcp_servers:
|
|
8
|
+
- prolific
|
|
9
|
+
- vibecheck
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Prolific + SomaCheck Research Reflection
|
|
13
|
+
|
|
14
|
+
Use this recipe when a researcher wants a private, consented signal about their
|
|
15
|
+
own response to a Prolific study or recruitment plan. It supports reflection on
|
|
16
|
+
study framing, audience rationale, reward and time assumptions, and readiness
|
|
17
|
+
to revise a draft. It does not evaluate participants or authorize a study
|
|
18
|
+
launch.
|
|
19
|
+
|
|
20
|
+
The reading is context for the researcher. It is not truth, a diagnosis,
|
|
21
|
+
authorization, evidence about a participant, or a research decision. The
|
|
22
|
+
researcher remains the authority.
|
|
23
|
+
|
|
24
|
+
## Launch boundary
|
|
25
|
+
|
|
26
|
+
This P1 recipe is **researcher-side only**. The person holding the phone and
|
|
27
|
+
receiving the SomaCheck result must be the researcher interacting with the
|
|
28
|
+
agent.
|
|
29
|
+
|
|
30
|
+
Do not use this recipe to:
|
|
31
|
+
|
|
32
|
+
- ask a participant or employee to complete a SomaCheck;
|
|
33
|
+
- export a participant reading, confidence, or confirmation to Prolific or a
|
|
34
|
+
connected survey platform;
|
|
35
|
+
- use a SomaCheck result in recruitment, screening, eligibility, allow/block
|
|
36
|
+
lists, reward, payment, bonus, rejection, quality, authenticity, submission,
|
|
37
|
+
or performance decisions;
|
|
38
|
+
- score or rank a participant, response, cohort, study, or researcher;
|
|
39
|
+
- automatically create, publish, pause, or transition a study; 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
|
+
Prolific access or participant 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 installed Prolific's official open-source MCP server from
|
|
52
|
+
`prolific-oss/prolific-mcp` and can see its study-planning tools. Prefer a
|
|
53
|
+
reviewed, pinned package version rather than an unbounded install.
|
|
54
|
+
3. `PROLIFIC_TOKEN` is stored only in the MCP client's environment or secret
|
|
55
|
+
configuration. Never paste, echo, log, or place it in a proposition. Prolific
|
|
56
|
+
states that researcher tokens do not expire and carry the researcher's
|
|
57
|
+
permissions, so rotate a token if exposure is suspected.
|
|
58
|
+
4. The researcher names one workspace, project, or draft study in scope. The
|
|
59
|
+
recipe does not retrieve submissions, participant messages, participant
|
|
60
|
+
identifiers, response exports, or demographic exports.
|
|
61
|
+
|
|
62
|
+
The official server currently exposes study-design and launch tools but no
|
|
63
|
+
participant-response tools. Do not bypass that boundary with direct REST calls,
|
|
64
|
+
a browser, another connector, or pasted exports.
|
|
65
|
+
|
|
66
|
+
## Prolific tool policy
|
|
67
|
+
|
|
68
|
+
Use read-only planning tools for this recipe.
|
|
69
|
+
|
|
70
|
+
| Purpose | Prolific MCP tools | Rule |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
| Resolve researcher-owned scope | `list_workspaces`, `list_projects`, `list_studies`, `view_study` | Read only the workspace, project, or study the researcher names. |
|
|
73
|
+
| Inspect recruitment options | `get_filters`, `get_filter_sets`, `get_eligibility_count` | Planning context only. Never combine a SomaCheck reading with participant eligibility, filtering, or cohort scoring. |
|
|
74
|
+
| Create or change platform state | `create_filter_set`, `create_study` | Not part of this recipe; require a separate, explicit, reviewed request. |
|
|
75
|
+
| Spend or launch | `publish_study` | Never call in this recipe. Publishing can spend real money and make a study immediately available. |
|
|
76
|
+
|
|
77
|
+
## Exact cross-MCP workflow
|
|
78
|
+
|
|
79
|
+
Follow these steps in order. The Prolific and SomaCheck calls must not form an
|
|
80
|
+
automatic decision gate.
|
|
81
|
+
|
|
82
|
+
1. **Confirm the subject and scope.** State that the researcher is reflecting
|
|
83
|
+
on their own recruitment or study-design choice. Name the one Prolific
|
|
84
|
+
workspace, project, or draft study to inspect.
|
|
85
|
+
2. **Retrieve the minimum planning context.** If the researcher supplied an
|
|
86
|
+
exact study ID, call `view_study` directly. Otherwise use `list_workspaces`
|
|
87
|
+
only if the workspace is unresolved, `list_projects` only if the project is
|
|
88
|
+
unresolved, and `list_studies` only to resolve the named study before calling
|
|
89
|
+
`view_study`. Do not retrieve or request participant-level data.
|
|
90
|
+
3. **Inspect feasibility without scoring people.** If needed, use `get_filters`,
|
|
91
|
+
`get_filter_sets`, or `get_eligibility_count` to describe available filters
|
|
92
|
+
and aggregate pool feasibility. Keep this separate from the SomaCheck result.
|
|
93
|
+
Do not recommend a filter merely because a proposition returns Aligned or
|
|
94
|
+
Unaligned.
|
|
95
|
+
4. **Separate evidence from interpretation.** Summarize the draft's literal
|
|
96
|
+
study framing, audience, estimated time, reward, and status; label agent
|
|
97
|
+
inferences; and present two or more reasonable options. Flag missing ethics,
|
|
98
|
+
budget, method, or institutional approvals without inventing them.
|
|
99
|
+
5. **Choose one first-person proposition.** It must express the researcher's
|
|
100
|
+
present experience or choice, not a claim about a participant or cohort. Do
|
|
101
|
+
not include study IDs, participant attributes, Prolific content, or secrets.
|
|
102
|
+
6. **Establish one-ask consent.** If the researcher explicitly requested a
|
|
103
|
+
SomaCheck vibecheck in the current message, call `request_vibecheck` with
|
|
104
|
+
`consent_basis: "user_requested_vibecheck"`. Otherwise show the exact
|
|
105
|
+
proposition, wait for acceptance, and use
|
|
106
|
+
`consent_basis: "user_approved_statement"`.
|
|
107
|
+
7. **Request once.** Call `request_vibecheck` with the approved statement and a
|
|
108
|
+
fresh UUID as `idempotency_key`. Reuse that UUID only to retry the same
|
|
109
|
+
statement after an ambiguous create failure. Never repeat an ask to obtain a
|
|
110
|
+
preferred result.
|
|
111
|
+
8. **Handle the exact result.** `request_vibecheck` reports a terminal answer as
|
|
112
|
+
`state: "completed"`; a later `get_vibecheck_result` read reports the same
|
|
113
|
+
lifecycle point as `status: "answered"`. Treat either as the terminal result
|
|
114
|
+
and keep four layers distinct: observation (a valid gesture was captured),
|
|
115
|
+
interpretation (`aligned` or `unaligned` plus model confidence), confirmation
|
|
116
|
+
(what the researcher says), and choice (what the researcher decides).
|
|
117
|
+
`unaligned` means possible inner conflict relative to the proposition; it
|
|
118
|
+
does not identify a cause. If the initial response is `pending`, retain its
|
|
119
|
+
`live:<uuid>` handle and call `get_vibecheck_result` with that exact handle
|
|
120
|
+
once later. Do not create a replacement request. If that read is still
|
|
121
|
+
`pending`, is `expired` or `cancelled`, or errors, continue without a result;
|
|
122
|
+
do not infer one or start another request.
|
|
123
|
+
9. **Return authority and stop before mutation.** Offer revise, investigate,
|
|
124
|
+
proceed to separate review, pause, or leave unchanged. Do not call
|
|
125
|
+
`create_filter_set`, `create_study`, or `publish_study`. If the researcher
|
|
126
|
+
chooses a change, produce a reviewable draft outside Prolific; platform
|
|
127
|
+
mutation is a new action requiring explicit instruction. A typed researcher
|
|
128
|
+
choice overrides the signal.
|
|
129
|
+
10. **Keep the signal private.** Do not write the verdict, confidence, gesture,
|
|
130
|
+
confirmation, or inferred meaning to Prolific or another research platform.
|
|
131
|
+
|
|
132
|
+
## Proposition examples
|
|
133
|
+
|
|
134
|
+
Good propositions are short, first-person, and about the researcher:
|
|
135
|
+
|
|
136
|
+
- “I can explain why this recruitment plan fits the research question.”
|
|
137
|
+
- “I am comfortable defending the current time and reward assumptions.”
|
|
138
|
+
- “I want to narrow this audience for methodological reasons.”
|
|
139
|
+
- “I am ready to send this draft for ethics and budget review.”
|
|
140
|
+
- “I want to investigate an alternative sampling plan before I proceed.”
|
|
141
|
+
|
|
142
|
+
Never send propositions such as:
|
|
143
|
+
|
|
144
|
+
- “This participant should be eligible.”
|
|
145
|
+
- “This cohort will produce high-quality data.”
|
|
146
|
+
- “This submission deserves payment.”
|
|
147
|
+
- “These respondents are authentic.”
|
|
148
|
+
- “This study should publish automatically.”
|
|
149
|
+
|
|
150
|
+
## Trigger and anti-trigger rules
|
|
151
|
+
|
|
152
|
+
Trigger this recipe when the researcher explicitly asks to reflect with
|
|
153
|
+
SomaCheck. The agent may also **offer** one check when the researcher is choosing
|
|
154
|
+
between defensible recruitment plans, cannot articulate what feels off about a
|
|
155
|
+
draft, or wants to examine their own readiness before a formal review. An offer
|
|
156
|
+
must include the exact proposition and must not call the tool until accepted.
|
|
157
|
+
|
|
158
|
+
Do not trigger when:
|
|
159
|
+
|
|
160
|
+
- the task is routine Prolific retrieval or administration;
|
|
161
|
+
- the proposed subject is a participant, employee, cohort, or respondent;
|
|
162
|
+
- the result would affect eligibility, filtering, payment, bonus, rejection,
|
|
163
|
+
submission quality, authenticity, or performance;
|
|
164
|
+
- the researcher has already made a clear typed choice;
|
|
165
|
+
- the agent is being asked to publish, gate, or automate a launch; or
|
|
166
|
+
- a vibecheck was already used for the same decision.
|
|
167
|
+
|
|
168
|
+
## Consent, privacy, and failure behavior
|
|
169
|
+
|
|
170
|
+
Linking the MCP servers is setup, not blanket consent. A proactive check always
|
|
171
|
+
requires acceptance of its exact wording. Never send Prolific records,
|
|
172
|
+
participant data, identifiers, secrets, or diagnostic claims to SomaCheck. Raw
|
|
173
|
+
phone motion never goes to the agent or Prolific. Do not persist a researcher's
|
|
174
|
+
reading or confidence in Prolific.
|
|
175
|
+
|
|
176
|
+
If Prolific authorization fails, ask the researcher to repair or rotate the
|
|
177
|
+
connection; never request that they paste a token. If the requested scope would
|
|
178
|
+
require participant-level data, stop. If SomaCheck reports an unreadable
|
|
179
|
+
capture, request a retry only if the researcher wants one; unreadable is not a
|
|
180
|
+
third interpretation. If the request expires, is cancelled, or errors, continue
|
|
181
|
+
without a reading. Never infer a result. If the result and the researcher's
|
|
182
|
+
words differ, follow the researcher's words and preserve the difference rather
|
|
183
|
+
than reconciling it into a score.
|
|
184
|
+
|
|
185
|
+
## Verification checklist
|
|
186
|
+
|
|
187
|
+
- [ ] The `prolific` server is the reviewed official implementation and the
|
|
188
|
+
`vibecheck` server exposes the expected tools.
|
|
189
|
+
- [ ] No Prolific or SomaCheck credential appears in chat, config examples,
|
|
190
|
+
propositions, or logs.
|
|
191
|
+
- [ ] The agent names one researcher-owned workspace, project, or study and uses
|
|
192
|
+
only minimum read-only planning calls.
|
|
193
|
+
- [ ] No submission, participant message, identifier, response, or demographic
|
|
194
|
+
export is retrieved or pasted into the flow.
|
|
195
|
+
- [ ] The proposition is first-person and contains no Prolific or participant
|
|
196
|
+
content.
|
|
197
|
+
- [ ] A proactive ask waits for acceptance; an explicit user request does not
|
|
198
|
+
add a redundant consent prompt.
|
|
199
|
+
- [ ] One decision creates at most one `request_vibecheck` request and preserves
|
|
200
|
+
its stable pending handle.
|
|
201
|
+
- [ ] The response distinguishes observation, interpretation, confirmation, and
|
|
202
|
+
choice.
|
|
203
|
+
- [ ] No result affects eligibility, payment, quality, filtering, scoring, or
|
|
204
|
+
launch decisions.
|
|
205
|
+
- [ ] `create_filter_set`, `create_study`, and `publish_study` are not called.
|
|
206
|
+
- [ ] Participant-facing behavior remains blocked by the `respondent_private`,
|
|
207
|
+
methodology/ethics, and Mike-approval gates.
|
|
208
|
+
|
|
209
|
+
## Sources
|
|
210
|
+
|
|
211
|
+
- [Prolific MCP server](https://github.com/prolific-oss/prolific-mcp)
|
|
212
|
+
- [Prolific API fundamentals](https://docs.prolific.com/documentation/get-started/api-fundamentals)
|
|
213
|
+
- [Prolific studies API](https://docs.prolific.com/api-reference/studies)
|
|
214
|
+
- [SomaCheck MCP setup and tool behavior](../README.md)
|
|
215
|
+
- [SomaCheck immediate-request contract](../LIVE-ASK-CONTRACT.md)
|