{"openapi":"3.1.0","info":{"title":"Prolific (BYOK) API","version":"0.1.0","description":"Prolific (BYOK) lets an AI assistant read your own Prolific data through the Prolific API with a key you supply (Prolific API token). Read-only: 12 tools (get_me, list_workspaces, get_workspace_balance, list_projects, list_studies, get_study, count_study_submissions, list_batches, get_batch_status, get_dataset, list_collections, list_filter_sets). The BYOK key travels with each request, is used...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-prolific.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-prolific/docs"},"termsOfService":"https://connectorbay.com/byok-prolific/terms"},"servers":[{"url":"https://byok-prolific.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-prolific/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_me":{"post":{"operationId":"get_me","summary":"Show the id of the Prolific account the token belongs to, to test that the token works. Use for \"Which Prolific account ","description":"Show the id of the Prolific account the token belongs to, to test that the token works. Use for \"Which Prolific account is my token for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_meArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_workspaces":{"post":{"operationId":"list_workspaces","summary":"List the workspaces you belong to with id, title, description and owner. Use for \"Which Prolific workspaces do I have\".","description":"List the workspaces you belong to with id, title, description and owner. Use for \"Which Prolific workspaces do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_workspacesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_workspace_balance":{"post":{"operationId":"get_workspace_balance","summary":"Show a workspace's funds: currency, total balance and the available balance after funds reserved for active studies (in ","description":"Show a workspace's funds: currency, total balance and the available balance after funds reserved for active studies (in cents or pence). Use for \"How much money is left in my Prolific workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Prolific workspace id (list_workspaces returns it).","maxLength":200,"title":"Workspace Id","type":"string"}},"required":["workspace_id"],"title":"get_workspace_balanceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_projects":{"post":{"operationId":"list_projects","summary":"List the projects of a workspace with title, visibility type, description and owner. Use for \"Which projects are in my P","description":"List the projects of a workspace with title, visibility type, description and owner. Use for \"Which projects are in my Prolific workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Prolific workspace id (list_workspaces returns it).","maxLength":200,"title":"Workspace Id","type":"string"}},"required":["workspace_id"],"title":"list_projectsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_studies":{"post":{"operationId":"list_studies","summary":"List your studies with status, places taken, reward and cost in cents, and publish dates; filter by status. Use for \"Whi","description":"List your studies with status, places taken, reward and cost in cents, and publish dates; filter by status. Use for \"Which of my Prolific studies are active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by one status such as ACTIVE, or several as (ACTIVE|PAUSED).","title":"Status"}},"title":"list_studiesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_study":{"post":{"operationId":"get_study","summary":"Get one study: names, status, duration, places, reward, project, labels, device needs and data collection method (comple","description":"Get one study: names, status, duration, places, reward, project, labels, device needs and data collection method (completion codes are not returned). Use for \"Show Prolific study 64b2c3d4\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"study_id":{"description":"Prolific study id (list_studies returns it).","maxLength":200,"title":"Study Id","type":"string"}},"required":["study_id"],"title":"get_studyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/count_study_submissions":{"post":{"operationId":"count_study_submissions","summary":"Count a study's submissions by status (active, approved, awaiting review, rejected, returned, timed out and total). Use ","description":"Count a study's submissions by status (active, approved, awaiting review, rejected, returned, timed out and total). Use for \"How many submissions of Prolific study 64b2c3d4 are awaiting review\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"study_id":{"description":"Prolific study id (list_studies returns it).","maxLength":200,"title":"Study Id","type":"string"}},"required":["study_id"],"title":"count_study_submissionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_batches":{"post":{"operationId":"list_batches","summary":"List the AI Task Builder batches of a workspace with status, task and instruction counts and creation time. Use for \"Whi","description":"List the AI Task Builder batches of a workspace with status, task and instruction counts and creation time. Use for \"Which Prolific AI Task Builder batches do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Prolific workspace id (list_workspaces returns it).","maxLength":200,"title":"Workspace Id","type":"string"}},"required":["workspace_id"],"title":"list_batchesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_batch_status":{"post":{"operationId":"get_batch_status","summary":"Get the processing status (UNINITIALISED, PROCESSING, READY or ERROR) of one AI Task Builder batch. Use for \"Is Prolific","description":"Get the processing status (UNINITIALISED, PROCESSING, READY or ERROR) of one AI Task Builder batch. Use for \"Is Prolific batch 0198a1b2 ready\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"batch_id":{"description":"AI Task Builder batch id (list_batches returns it).","maxLength":200,"title":"Batch Id","type":"string"}},"required":["batch_id"],"title":"get_batch_statusArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_dataset":{"post":{"operationId":"get_dataset","summary":"Get one AI Task Builder dataset: name, datapoint count, schema version, status or import jobs and workspace. Use for \"Sh","description":"Get one AI Task Builder dataset: name, datapoint count, schema version, status or import jobs and workspace. Use for \"Show Prolific dataset 0198a1b2\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dataset_id":{"description":"AI Task Builder dataset id (a batch lists its dataset ids).","maxLength":200,"title":"Dataset Id","type":"string"}},"required":["dataset_id"],"title":"get_datasetArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_collections":{"post":{"operationId":"list_collections","summary":"List the AI Task Builder collections of a workspace with name and creation and modification times. Use for \"Which Prolif","description":"List the AI Task Builder collections of a workspace with name and creation and modification times. Use for \"Which Prolific AI Task Builder collections do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Prolific workspace id (list_workspaces returns it).","maxLength":200,"title":"Workspace Id","type":"string"}},"required":["workspace_id"],"title":"list_collectionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_filter_sets":{"post":{"operationId":"list_filter_sets","summary":"List saved participant filter sets of a workspace with name, version, lock state and description. Use for \"Which partici","description":"List saved participant filter sets of a workspace with name, version, lock state and description. Use for \"Which participant filter sets do I have on Prolific\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Prolific workspace id to list filter sets for.","title":"Workspace Id"},"organisation_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Prolific organisation id to list filter sets for.","title":"Organisation Id"}},"title":"list_filter_setsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}