# flowIQ > flowIQ maps how teams actually work. Captures (recorded walkthroughs and interviews) become step-by-step workflows, and multiple captures of the same process get synthesized into one process map. Hierarchy: workspace (organization) > teams > processes > captures. flowIQ exposes a hosted MCP server so AI agents can read and act on workspace data. ## MCP server - Endpoint: https://app.simplestuff.ai/api/mcp (Streamable HTTP, stateless) - Auth: API key in `Authorization: Bearer fiq_...` or `X-API-Key: fiq_...` - Keys: created in the app under settings > api keys; user-wide, shown once, revocable - Scoping: keys work across all of the user's workspaces; workspace-level tools take an optional `workspace_id` parameter (call `list_workspaces` first). Membership is re-validated on every call; inaccessible resources answer `not_found`. - Rate limit: 1,000 calls per key per day (HTTP 429 when exceeded), max 10 active keys per user ## Tools Read: - list_workspaces - workspaces this key can act in, with roles - list_teams(workspace_id?) - teams in a workspace - list_processes(workspace_id?, team_id?) - processes, optionally filtered to a team - get_process(process_id) - process meta plus its capture list - list_captures(process_id) - captures of a process - get_capture(capture_id, include_transcript?) - extracted workflow steps; transcript only on request - get_synthesis(process_id) - merged process-level view built from multiple captures - get_synthesis_status(process_id) - latest synthesis job (pending/running/done/failed), for polling after run_synthesis - get_share_link(process_id) - public share state + link; manager+ only - export_process(process_id, artifact) - steps.csv | report.json | map.json, content returned inline - export_capture(capture_id, artifact) - steps.csv | transcript.txt | map.svg, content returned inline - list_members(workspace_id?) - workspace members with roles - list_invitations(workspace_id?) - pending invitations; ids feed revoke_invitation Write: - create_process(team_id, name) - create_team(workspace_id?, name) - invite_member(team_id, email, role?) - invites by email (real email to new users, direct add for existing accounts); workspace owner/admin or team manager only - update_capture_steps(capture_id, steps) - owner-only - finalize_capture(capture_id, finalized) - owner or process manager - delete_capture(capture_id) - owner-only, destructive and irreversible - run_synthesis(process_id, language?) - background job merging captures into the process view; needs 2+ complete captures; manager+ only - set_sharing(process_id, share) - public link on/off; manager+ only - revoke_invitation(invitation_id) - workspace owner/admin only - delete_process(process_id) - deletes the process with ALL captures and files, destructive and irreversible; manager+ only - update_team(team_id, name) - rename; manager+ only - delete_team(team_id) - only when empty of processes; manager+ only - add_team_member(team_id, user_id, role?) - add an existing workspace member to a team - update_team_member(team_id, user_id, role) - team role manager/member; not self, not the team owner - remove_team_member(team_id, user_id) - remove from team, workspace membership stays - update_member_role(workspace_id?, user_id, role) - workspace role owner/admin/member; owner changes are owner-only - remove_member(workspace_id?, user_id) - remove from workspace and all its teams, destructive ## Docs - https://docs.simplestuff.ai - full developer documentation - https://app.simplestuff.ai - the flowIQ app