Inistate MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| INISTATE_API_BASE | No | API base URL | https://api.inistate.com |
| INISTATE_MCP_MODE | No | Initial mode: runtime, configure, or frontend | configure |
| INISTATE_API_TOKEN | Yes | Bearer token for Inistate API authentication | |
| INISTATE_DEBUG_FILE | No | Set to 1 to log write-path tool calls to ./debug.log, or to a path to log there. Off by default; logs identifiers only, never field values | |
| INISTATE_MCP_NO_SETUP | No | Set to 1 to force server mode from a terminal (skip the interactive wizard) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_workspacesA | List workspaces the current user has access to. Typically the first call of a session. If exactly one workspace matches, it is selected automatically and its module list is returned — no set_workspace or list_modules needed; otherwise call set_workspace next. |
| set_workspaceA | Set the active workspace for the current session. The response includes the workspace's module list — go straight to list_entries / get_form / get_module_schema with those names; list_modules is only needed to refresh. In stateless/remote mode, prefer passing workspaceId directly to each tool instead. Workflow sequences after workspace is set:
|
| list_modulesA | List all discoverable modules in the current workspace. set_workspace already returns this list — call this only to refresh it or when operating stateless without set_workspace. |
| get_module_schemaA | Get the canvas schema for a module. Use tier=basic (default) for fields and states only. Use tier=extended to also include activities and flows. Use basic for query operations. Use extended when you need to understand available activities and state transitions. |
| get_module_canvasA | Get the full module definition with stable IDs. The output is round-trippable — modify and send back via update_module. Use this when modifying a module to preserve IDs for renaming. Modify workflow: list_modules → get_module_canvas → (apply changes) → validate_design → update_module. Load resource inistate://schema before modifying to know valid field types, colors, and actors. |
| list_entriesA | Query entries with filters, sorting, pagination. Filter keys are field display names; values are equality (simple) or operator objects (contains/startsWith/endsWith/min/max/above/below/between/after/before/empty/exists/yes/no/is/not/excludes). Use {or:[…]} for OR; multiple keys are AND-ed. Use 'me' for User-field self-match. See FilterOperators in inistate://schema/runtime for the full set. Token control: use |
| get_entryA | Read a single entry by its ID. Returns current field values, state, audit metadata, and available activities. |
| get_formA | Get the form fields, current values, and options for a module activity. Call this before the FIRST submit_activity on each (module, activity) pair — the form schema is stable within a session, so reuse it for subsequent entries (per-entry current values come from get_entry/list_entries). User values with no matching field: omit them and note the omission. Never fabricate form data — when a value is uncertain, submit with a lower ai.confidence and state the assumption instead of blocking to ask. |
| submit_activityA | Perform an activity on a module entry: standard (create [no entryId], edit, delete, changeStatus, comment, duplicate, manage) or any custom activity from get_module_schema. Call get_form before the first submission per (module, activity); reuse its schema for further entries. The |
| submit_activitiesA | Bulk variant of submit_activity: one module + one activity applied to many entries, each item with its own input. Use instead of N sequential submit_activity calls when creating/editing many rows — one tool turn instead of N. A per-item |
| get_entry_historyA | Get the audit trail and comments for an entry. Returns chronological list of actions (create, edit, state changes, comments) with field-level change details and AI traceability context. |
| upload_fileA | FALLBACK ONLY — use request_upload_url + confirm_upload first; call this only after that presigned flow has actually failed. Uploads via base64. Returns { path, filename, mimeType, size } — use path as the File/Image field value in submit_activity. Max 50MB. Blocked: .exe, .bat, .cmd, .dll, .msi. |
| download_fileA | Download a file by module name. Construct the URL from a File/Image field value: field.path = '/s/{guid}/{fileName}'. Returns a pre-signed S3 URL (1hr TTL). |
| request_upload_urlA | DEFAULT upload path for every file (up to 500MB); upload_file is only the fallback if this flow fails. Flow: 1) call this tool, 2) PUT the raw bytes to uploadUrl with Content-Type exactly matching contentType (S3 rejects mismatches with 403), 3) call confirm_upload({ s3Key }) — its returned path is the File/Image field value for submit_activity. uploadUrl expires in ~1 hour; call again on expiry. |
| confirm_uploadA | Confirm a presigned upload after the PUT to uploadUrl succeeded. The server verifies the object in S3 and returns { url, filename, mimeType, size } — url is the /s/ path usable as a File/Image field value. Returns 400 if the file is not in S3 (ensure the PUT completed first). |
| design_workflowA | Generate a scaffolded ModuleSchema template from a natural language description. Use when the user wants to create a new module or workflow. Design workflow: design_workflow → (complete template) → validate_design → create_module → get_module_schema(tier=extended). Load resources inistate://schema and inistate://design-guide before designing for valid field types, colors, and design rules. |
| validate_designA | Validate a module schema without submitting anything. create_module (and update_module on full-canvas payloads) runs these same checks internally, so this tool is optional there — use it to iterate on a draft, or before a partial update_module where the merged canvas cannot be checked client-side. |
| create_moduleA | Create a new module. Supports workflow modules (states, activities, flows) and record list modules (fields only). Requires Administrator, Consultant, or Workspace Admin role. Validates internally with the same rules as validate_design and returns structured errors without creating anything — a separate validate_design call beforehand is optional. See inistate://schema/configure for field types, color palette, and design rules. |
| update_moduleA | Update an existing module. A section you pass (information/states/activities/flows) replaces that section's entire list — include every existing item you want to keep (matched by id, which enables renaming; omit id to add new items). Omitted sections are left unchanged. Always call get_module_canvas first to obtain the stable module id and item ids. Full-canvas payloads (information included) are validated internally like create_module; for partial payloads, validate the merged canvas with validate_design first. |
| scaffold_moduleA | Not available on this backend — calls return a structured capability_unavailable message. Local-runtime only; use design_workflow to draft a module here. |
| switch_modeA | Switch tool surface. 'configure' (default) = entry CRUD + module design tools and design resources. 'runtime' = entry CRUD plus get_module_schema (available in every mode). 'frontend' = configure + the inistate://frontend-guide resource (REST reference for building Vue/React UIs that call the Inistate API directly) — use it when the user wants a custom UI. The tool/resource list refreshes via list_changed after this call. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| design_factsops_workflow | Guide an AI agent through designing a complete FACTSOps workflow module from scratch. |
| execute_activity | Guide an AI agent through executing a specific activity on an entry. |
| diagnose_entry | Guide an AI agent through investigating the current state and history of an entry. |
| modify_module | Guide an AI agent through modifying an existing module's schema — adding fields, states, activities, or flows. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| modules | List of all FACTSOps modules in the workspace — quick capability indexing |
| guardrails | Server-enforced rules for submit_activity. Read once per session — they apply silently and only surface as structured errors when triggered. |
| schema-runtime | DEFAULT resource — load at session start for runtime work (reading/writing entries, files, history). Reference for what tool schemas don't carry: response/type definitions (entry, form, history), field value shapes (File/Image/Module/User), filter operators, and key workflow rules. Tool inputs are documented on the tools themselves. Does NOT include module design content — for creating/updating modules load inistate://schema/configure + inistate://design-guide instead; loading both doubles context cost, pick one. |
| schema-configure | Load ONLY when the user asks to create a new module, edit a module schema, or design a workflow. Contains the ModuleSchema write format (Field/State/Activity/Flow definitions), state color palette with decision rules and keyword hints, and module_types (workflow vs record list). Pair with inistate://design-guide for a complete design context. Do NOT load for runtime data operations — use inistate://schema/runtime instead. |
| design-guide | FACTS Module Design Guide — requirements gathering questions, state color system, SVG workflow diagram specification, and module design rules. Load this in design mode alongside inistate://schema/configure to generate workflow diagrams and ask structured requirements questions. Do NOT load for runtime operations. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Inistate/inistate-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server