Tool Reference
The neuroflash MCP server exposes 95 tools across 7 API domains. In Traditional Mode each one is available directly. In Plan Mode the same endpoints are addressable as paths inside an execute_plan JSON document; in Exploratory Mode they're routed through discover / query / compare.
Plan Mode tools
Two server-side tools are registered in every mode that supports orchestration (plan, layered, tools, all):
search_api(query)— keyword search over the endpoint registry. Use this to discover the rightmethod+pathbefore writing a plan. No API calls are made.execute_plan(plan)— submit a typed JSON DSL plan. Supportscall,let,if/then/else,foreach(≤ 20 iterations), andparallel(≤ 5 concurrent).letops includepick,map,filter,sort_by,take,count,first,last,format. Total plan ≤ 32 KiB, ≤ 50 steps, depth ≤ 5; runtime cap 60s, per-call 30s.
execute_plan is the right choice for any workflow that chains 3+ API calls, applies a transformation, or needs branching/parallelism. See the Modes page for the full DSL reference.
Direct tools
What changed — 2026-04-08
Several tool signatures were tightened to match the underlying API. If you integrated before this date, review the list below:
import_brand_voice_from_urlandimport_brand_voice_from_textnow requirecountry(2-letter lowercase, e.g.us,de),language(2-letter lowercase, e.g.en,de), andaudienceModelId(default:538b1efc6f88ad88feebf7acd8c618facb54fe82).country+languagemust form a valid locale pair — see the brand voice overview docs for the supported table.import_audience_from_urlnow takesurls(plural, comma-separated string, 1–10 URLs) instead ofurl, plus a requiredaudienceModelId.create_target_audienceandupdate_target_audiencenow require the full demographic profile on every call:residence,pain_points,interests,needs,min_age,max_age, and the gender distribution fieldsgender_female,gender_male,gender_non_binary,gender_prefer_not_to_say(decimals summing to1.0). Partial updates are not supported — read the existing audience and pass all fields back.get_conversation,get_conversation_messages, anddelete_conversationnow requireworkspace_idin addition toconversation_uuid.update_brand_voice—nameis required on every PUT. To update onlydescription, pass the existingnameunchanged.generate_textaccepts a user-facingprompt(and optionalmodel— discover IDs vialist_ai_models); the tool converts it to the OpenAImessagesarray internally.chat_in_conversationaccepts a singlemessagestring which the tool converts to themessagesarray internally.edit_imageaccepts a singularimage_url, sent to the API asimage_urlsarray internally.chat_with_twin_groupandget_twin_group_opinionsnow accept an optionaltwin_idsarray — pass it to target a known subset of twins instead of fanning out to the whole group vialist_twins(which is what the wrappers do whentwin_idsis omitted).chat_with_twinandchat_with_twin_groupaccept an optionalresponse_schema(a JSON Schema object) for strict, upstream-validated structured replies — use it instead of describing the desired JSON format in the prompt, which is only followed probabilistically. It replaces the default{answer, reason}envelope. The upstream's 5-option probability-weighted sampling mode ("verbalized sampling", which can add a strayprobabilityfield to replies and destabilize format adherence) is disabled by default by these tools — passuse_verbalized_sampling: trueto opt back in (not combinable withresponse_schema).
What changed — 2026-08-13: conversation compaction
chat_in_conversationreplays the whole stored history on every call. The conversations service treats themessagesarray as the entire conversation, so the tool reads the thread back and sends it in full; a partial array would delete the stored history.chat_in_conversationalso condenses the thread once it outgrows the context budget. The summary is written by the service, not by this server, so the web app, the MCP server and direct API callers all get the same one. It reads the stored summary before deciding, so a long thread is not re-summarised on every turn. Passauto_compact: falseto manage it yourself.compact_conversation(new) forces a compaction now. The service picks the boundary, writes the summary and stores it; later chat calls send that summary in place of the summarised messages. Nothing is deleted.get_conversation_compactions(new) lists a conversation's stored summaries, oldest first. The highest generation is the one currently applied.get_conversation_messagespages back to the first message instead of returning the newest 100. Those newest rows are exactly the ones a compaction does not summarise away.
Digital Twins
13 tools
Digital twin service — demographic twin groups, individual twins, reactions
list_static_groups
List all available demographic twin groups (static groups)
list_twins
List individual digital twins in a specific group. Accepts a static group key or a target audience ID (audience twins resolve via /twins?targetAudienceId=)
get_twin
Get the full profile of a specific digital twin by ID
list_reactions
List twin reactions (sentiment responses) generated in a workspace
get_reaction_sources
Get the source twin profiles that contributed to a specific reaction
list_workspace_twins
List digital twins across a workspace with filters (target audience, name prefix, sort)
get_audience_twin_metrics
Get twin counts and creation metrics grouped by target audience
list_twin_creation_jobs
List twin creation jobs for a target audience
get_twin_creation_job
Get the status and result of a twin creation job
chat_with_twin
Chat directly with an individual digital twin. Give explicit situational context (where the asset is seen, price, alternatives) and ask for a verbal reaction before any numeric rating; replies are stated opinions, not behavior predictions. Twin endpoints are stateless — for multi-turn follow-ups pass the full history via `messages`.
get_twin_group_opinions
Ask a twin group one question and get every twin's answer plus an aggregated summary. Single-question wrapper over the same endpoint as chat_with_twin_group. Prefer a deliberate panel of 5-10 twin_ids (omitting twin_ids fans out to all twins via an extra list_twins call; max 20). Ask for verbal reactions before numeric ratings; answers are stated opinions, not behavior predictions.
chat_with_twin_group
Start a conversation with an entire demographic twin group. Prefer a deliberate panel of 5-10 twin_ids (omitting twin_ids fans out to all twins via an extra list_twins call). ONE stimulus per call — never batch items to compare. Answers are stated opinions, not behavior predictions. Twin endpoints are stateless — for multi-turn follow-ups pass the full history via `messages`.
create_twin_creation_job
Start an async job that creates N digital twins for a target audience. Returns the job; twins appear as the job processes.
Workspaces
28 tools
Workspace service — workspace management, members, subscriptions, invites
list_workspaces
List all workspaces the authenticated user is a member of
get_workspace
Get details of a specific workspace including name, settings, and plan
list_workspace_members
List all members of a workspace with their roles and status
get_workspace_subscription
Get the current subscription plan and status for a workspace
list_workspace_invites
List all pending invites for a workspace
get_workspace_member
Get a single workspace member by ID
list_customer_workspace_members
List workspace memberships for the given customer
list_user_workspace_members
List workspace memberships for the given user
get_workspace_invite
Get a single workspace invite by ID
get_workspace_subscription_by_id
Get a specific subscription record for a workspace by ID
get_billing_contact
Get the billing contact for a workspace
get_stripe_checkout_session
Get a previously created Stripe checkout session by ID
create_workspace_invite
Invite a user to join a workspace by email address
delete_workspace_invite
Cancel/delete a pending workspace invite
create_workspace
Create a new workspace with the current customer as the owner
update_workspace
Update a workspace's name
delete_workspace
Permanently delete a workspace (destructive)
create_workspace_member
Create a workspace member directly (admin/support only)
update_workspace_member
Update a workspace member's role
delete_workspace_member
Remove a member from a workspace
confirm_workspace_invite
Accept a workspace invite using its confirmation code
deny_workspace_invite
Reject a workspace invite using its confirmation code
resend_workspace_invite_email
Resend the invitation email for a workspace invite
update_workspace_subscription
Update a subscription (admin)
patch_workspace_subscription
Partially update a subscription (admin)
increment_word_usage
Increment the word-usage counter on the workspace's current subscription
update_billing_contact
Update the billing contact for a workspace (name and email are required; other fields sync from Stripe)
create_stripe_checkout_session
Create a Stripe checkout session so the customer can create or update a subscription
Brand Voice
19 tools
Brand voice service — create and manage brand voices
list_brand_voices
List all brand voices in a workspace
get_brand_voice
Get a specific brand voice by ID, including all its style attributes
get_brand_voice_limits
Get the plan limits for brand voices in a workspace
list_brands
List all brands in a workspace
get_brand
Get a brand by ID
create_brand_voice
Create a new brand voice in a workspace
update_brand_voice
Update an existing brand voice. Accepts the full attribute set from import endpoints. Name is always required; all other fields are optional. JSON array/object fields (perspective, vocabulary, glossaries, generalTone, etc.) accept Python lists and dicts in execute_code — they are serialised automatically.
delete_brand_voice
Delete a brand voice from a workspace
import_brand_voice_from_url
Create a brand voice by analysing a URL
import_brand_voice_from_text
Create a brand voice by analysing a sample text
create_brand
Create a brand in a workspace. All fields are required by the API; pass empty strings or empty arrays for unknown values.
update_brand
Update a brand. PUT semantics — all fields required on every call.
delete_brand
Delete a brand from a workspace
duplicate_brand_voice
Duplicate a brand voice under a new name
upgrade_brand_voice
Upgrade a legacy brand voice to the current schema, attaching an audience model
get_brand_voice_ds_prompt
Convert a brand voice into the DS prompt format used by data-science backends
calculate_brand_voice_contradiction
Calculate the contradiction score for a brand voice against an audience model
record_brand_voice_usage
Record a usage event for a brand voice (used for analytics/quotas)
import_brand_voice_from_file
Create a brand voice by importing the contents of a base64-encoded file
Audience
13 tools
Audience service — create and manage target audiences
list_target_audiences
List target audiences in a workspace (paginated — pass page/size to reach later pages)
get_target_audience
Get a specific target audience by ID
get_audience_limits
Get the plan limits for target audiences in a workspace
get_target_audience_image
Get the image associated with a target audience
create_target_audience
Create a new target audience in a workspace. Provide a full demographic profile: name (3–100 chars), residence (2–50 chars — short location label like 'Berlin' or 'Western Europe', NOT a full descriptor), country, age range (min/max 0–200), gender distribution (female/male/non-binary/prefer-not-to-say as 0–1 fractions summing to 1), pain points, interests, and needs (1–15 entries each, max 250 chars per entry). Returns the created audience including its ID.
update_target_audience
Update an existing target audience. PUT semantics — full demographic profile required on every call, including gender distribution (female/male/non-binary/prefer-not-to-say as 0–1 fractions summing to 1). Same field caps as create_target_audience apply (name 3–100, residence 2–50, painPoints/interests/needs 1–15 entries × 250 chars).
delete_target_audience
Delete a target audience from a workspace
import_audience
Infer a target-audience profile from any combination of free-form text, URLs, brand voices, and uploaded files. Returns a PREPARED profile (name, residence, painPoints, interests, needs, minAge, maxAge, genderDistribution, country, nativeLanguage, additionalInformation) — does NOT persist the audience and does NOT return an audience ID. Forward the returned fields to create_target_audience to save it (then use the resulting ID for create_twin_creation_job). Trim 'residence' to ≤ 50 chars before forwarding; minAge < 18 is auto-clamped to 18 upstream and maxAge ≤ minAge is auto-reset to 100.
import_audience_from_url
DEPRECATED — use import_audience instead. Analyse one or more URLs and return a PREPARED target-audience profile. Does NOT persist or return an ID — forward the returned fields to create_target_audience. Trim 'residence' to ≤ 50 chars before forwarding (fieldValidation.error.max otherwise).
duplicate_target_audience
Duplicate an existing target audience under a new name
set_target_audience_image
Upload or update the image associated with a target audience (base64-encoded)
delete_target_audience_image
Delete the image associated with a target audience
record_target_audience_usage
Record a usage event for a target audience (used for analytics/quotas)
Content
10 tools
Content generation service — text generation, AI models, conversations
list_ai_models
List all available AI models that can be used for text generation
list_conversations
List all saved conversations for the authenticated user
get_conversation
Get details of a specific saved conversation. workspace_id is required — the service enforces workspace-scoped ownership.
get_conversation_messages
Get every message in a saved conversation, oldest first. Pages to the start of the thread, so a conversation over 100 messages comes back complete — including the early messages a compaction summarised away. workspace_id is required — the service enforces workspace-scoped ownership.
get_conversation_compactions
List a conversation's stored summaries, oldest first. The highest generation is the one currently applied. workspace_id is required — the service enforces workspace-scoped ownership.
generate_text
Generate marketing or creative text content using neuroflash AI
create_conversation
Create a new persistent conversation session
delete_conversation
Delete a conversation and all its messages. workspace_id is required — the service enforces workspace-scoped ownership.
chat_in_conversation
Send a message in an existing persistent conversation. The tool replays the whole stored history on every call and condenses it via the service once it outgrows the context budget.
compact_conversation
Condense a long conversation: the service summarises everything except the recent tail and stores the summary, which later chat calls send in place of the summarised messages. Nothing is deleted — the full history is still readable. workspace_id is required — the service enforces workspace-scoped ownership.
Image
5 tools
Image generation service — generate, edit, and manage AI-generated images
list_image_models
List all available AI models for image generation
list_image_history
List previously generated images and their metadata
generate_image
Generate an image from a text prompt using AI (text-to-image)
edit_image
Edit or transform an existing image using a text prompt (image-to-image)
delete_image
Delete a previously generated image from the history
Usage
3 tools
Usage service — usage types and workspace quotas
list_usage_types
List all available usage types and their definitions
get_workspace_quotas
Get all usage quotas for a workspace
get_workspace_quota
Get the usage quota for a specific usage type in a workspace