Limits
All nine tools are read-only. Repeating a call does not create a second side effect. The tools read Elova's retained records. They do not reach the public web or live n8n.
Annotations on every tool:
| Annotation | Value | Meaning |
|---|---|---|
readOnlyHint | true | The tool does not modify Elova or n8n |
destructiveHint | false | The tool does not delete or overwrite |
idempotentHint | true | The same arguments read the same retained view, apart from later collection |
openWorldHint | false | The tool does not search outside Elova |
These are client hints. Authorization still runs on every call.
What is never returned
- n8n URLs and credentials
- workflow parameters, settings, and credentials
- node connections and a workflow graph
- node inputs, outputs, and raw execution payloads
- error stacks
- tracing identifiers
- dedicated identity or email fields
- aggregate token
usageon statistics (usageis alwaysnull)
Customer-controlled names and error text can still contain personal information. Review the client before you approve access.
Pages
| Tool | Page |
|---|---|
get_many_workspaces | limit 1–50, default 50. Cursor max 1024 characters |
get_many_instances | One list, at most 20. No cursor |
get_many_sync_jobs | limit 1–50, default 50, from the newest 100 jobs. No cursor |
get_many_executions | limit 1–50, default 50. Cursor max 4096 characters |
get_many_workflows | limit 1–50, default 50. Cursor max 4096 characters |
Keep the same filters and the same limit when you send cursor. A cursor is bound to the account, approval generation, eligible workspace set, filters, and page size.
- A changed binding returns
VALIDATION_ERROR. That includes a different eligible workspace set, a different limit or filter, or a tampered cursor. - Loss of the selected workspace can return
NOT_FOUNDinstead. MCP_CURSOR_STALEmeans the retained snapshot or source changed. The text isMCP_CURSOR_STALE: Read settings changed. Restart without a cursor.
Discard the cursor and start again without one. Do not treat every authorization change as MCP_CURSOR_STALE.
nextCursor: null means this filter has no further page. It does not mean history is complete. Read coverage.
Truncation inside a record
| Flag | Bound |
|---|---|
workflowNameTruncated | Execution label shortened to 100 Unicode code points |
nameTruncated | Workflow name shortened to 200 Unicode code points |
nodesTruncated | Node inventory prefix, at most 1000 nodes and 32 KiB |
history.truncated | Diagnostic prefix, at most 64 nodes, 128 runs, 16 usage rows per run, and 48 KiB |
truncated on sync jobs | More jobs exist in the newest-100 window than limit |
nodeCount includes nodes omitted from the inventory. A shortened name is display data. The local UUID remains the selector.
Time and history
periodistoday,7d,30d, orall- Execution list
perioddefaults toall - Undated executions are included only for
all - Statistics require
timeZone. Execution lists default to the workspace zone - Statistics return at most 30 buckets
coverage.partialis alwaystrue- Reads do not fill gaps by calling n8n
Request and rate limits
Each running MCP process applies these limits:
- request body at most 32 KiB
- response at most 256 KiB
- request deadline 30 seconds
- 4 concurrent requests globally
- 2 concurrent requests per account
- 60 requests per minute per approval
A limit response is HTTP 429 with Retry-After. Wait and retry the same read. Do not send a write to work around it. There is no write tool.
Connection limits
- Approval expiry is 1, 7, or 30 days, and never more than 30 days
- One approval can include at most 50 workspaces
- The approval page lists at most 200 eligible workspaces
- An account can have at most 100 active approvals
- Access tokens last at most 5 minutes
- A refresh token cannot be reused
- The shipped identity configuration ends an idle sign-in session after 30 minutes and ends every sign-in session after 30 days
The approval expiry can end access sooner than the sign-in session ceiling.