Query Markup Documents - On-device hybrid search for markdown files with BM25, vector search, and LLM reranking
AICortex is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Self-hosted brain for any LLM: memory, skills, encrypted vault, devices and scheduled jobs.
Quickstart
This image runs as a local HTTP server (Streamable HTTP), not over stdio, and the port it listens on is not recorded here, so there is no line to print: start it the way its own source says, publishing that port with -p, then add its address to your client as a remote server.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts AICortex as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. It has not been scanned here, so read the surface, and its source, before you approve it.
This image runs as a local HTTP server (Streamable HTTP), not over stdio, and the port it listens on is not recorded here, so there is no line to print: start it the way its own source says, publishing that port with -p, then add its address to your client as a remote server.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
Health check — confirms the connector is reachable and reports the running version.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | no | — |
Register/update a CalDAV endpoint as DATA (no redeploy). base_url = the calendar home (…/calendars/<user>/) or a single calendar (…/<user>/personal/).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| base_url | string | yes | — |
| username | string | no | — |
| password_env | string | no | — |
| tls_insecure | boolean | no | — |
| ca_bundle | string | no | — |
| description | string | no | — |
List registered CalDAV endpoints (name — base_url — description).
Takes no parameters.
Remove a registered CalDAV endpoint by name (does NOT touch the server).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Discover the calendars under a registered endpoint (name · href). Use one of the hrefs as the calendar argument for events.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| endpoint | string | yes | — |
List events in a time range (summary · start · end · uid). calendar = a calendar href from caldav_list_calendars, or empty to use base_url directly.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| endpoint | string | yes | — |
| calendar | string | no | — |
| start | string | no | — |
| end | string | no | — |
Create an event (PUTs an iCalendar object). calendar = a calendar href (from caldav_list_calendars). start/end = ISO-8601. STATE-CHANGING — confirm with the user first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| endpoint | string | yes | — |
| calendar | string | yes | — |
| summary | string | yes | — |
| start | string | yes | — |
| end | string | yes | — |
| description | string | no | — |
Delete a calendar event by its event href (the last field from caldav_list_events) or a full event URL. STATE-CHANGING — confirm with the user first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| endpoint | string | yes | — |
| event | string | yes | — |
List the workspace (/data/work) or a sub-folder. Shows name · size · type, newest first. path is relative to /data/work (empty = the root).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | — |
Read a TEXT file from the workspace (truncated to max_bytes). For binary files use the transfer tools (webdav/sftp/print) instead.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | — |
| max_bytes | integer | no | — |
SEE a workspace image or PDF with vision (not OCR). Returns the file as image content the assistant reads directly — scanned pages (scan_document), e-mail attachments (imap_fetch save_attachments), webdav/ftp downloads, print sources. Raster images are downscaled; PDFs are rendered from page…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | — |
| page | integer | no | — |
| max_pages | integer | no | — |
Write (or append) a TEXT file in the workspace. Creates parent folders.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | — |
| content | string | yes | — |
| append | boolean | no | — |
Move/rename a file or folder within the workspace.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| source | string | yes | — |
| dest | string | yes | — |
Delete a file or folder in the workspace. STATE-CHANGING — confirm first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | — |
| confirm | boolean | no | — |
Workspace usage summary, or details for one path (size, modified, type).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | — |
Register/update an FTP/FTPS endpoint as DATA (no redeploy).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| host | string | yes | — |
| port | integer | no | — |
| tls | string | no | — |
| tls_insecure | boolean | no | — |
| ca_bundle | string | no | — |
| username | string | no | — |
| password_env | string | no | — |
| description | string | no | — |
List configured FTP endpoints (name — host:port — description).
Takes no parameters.
List files at path on a registered FTP endpoint.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| server | string | yes | — |
| path | string | no | — |
Remove a registered FTP endpoint by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Upload a file from the NAS (path under /data) to the FTP endpoint.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| server | string | yes | — |
| nas_path | string | yes | — |
| remote_path | string | yes | — |
Register/update an IMAP account as DATA (no redeploy). security: "ssl" (993, default) | "starttls" (143). password_env = NAME of a vault secret with the (app) password. Leave port=0 to use the default for the security mode.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| host | string | yes | — |
| username | string | yes | — |
| password_env | string | no | — |
| port | integer | no | — |
| security | string | no | — |
| tls_insecure | boolean | no | — |
| ca_bundle | string | no | — |
| description | string | no | — |
List IMAP accounts (name — user@host).
Takes no parameters.
Remove a registered IMAP account by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
List messages (newest first): uid · date · from · subject · size. query = a state (unseen | all | recent | seen | flagged | answered) OR free text (matched against Subject/From). Read-only — nothing is marked seen.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| account | string | yes | — |
| mailbox | string | no | — |
| query | string | no | — |
| limit | integer | no | — |
Read one message by its uid (from imap_search): headers + text body (truncated). Read-only (BODY.PEEK) — it is NOT marked seen. Set save_attachments=true to write attachments into /data/work — image/PDF attachments can then be viewed with fs_view (vision, not just text).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| account | string | yes | — |
| uid | string | yes | — |
| mailbox | string | no | — |
| save_attachments | boolean | no | — |
Register/update an SMTP account as DATA (no redeploy). security:
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| host | string | yes | — |
| from_addr | string | yes | — |
| port | integer | no | — |
| username | string | no | — |
| password_env | string | no | — |
| security | string | no | — |
| tls_insecure | boolean | no | — |
| ca_bundle | string | no | — |
| description | string | no | — |
List SMTP accounts (name — from — host:port).
Takes no parameters.
Remove a registered SMTP account by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Send an email via a registered account. to/cc may be comma-separated.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| account | string | yes | — |
| to | string | yes | — |
| subject | string | yes | — |
| body | string | yes | — |
| attachment | string | no | — |
| cc | string | no | — |
Register/update an MQTT broker or device as DATA (no redeploy).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| host | string | yes | — |
| port | integer | no | — |
| tls | boolean | no | — |
| tls_insecure | boolean | no | — |
| ca_bundle | string | no | — |
| username | string | no | — |
| password_env | string | no | — |
| client_id | string | no | — |
| description | string | no | — |
List configured MQTT brokers (name — host:port — description).
Takes no parameters.
Remove a registered MQTT broker by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Publish to a topic on a registered broker. Pass JSON via payload (a dict) OR a raw string via payload_str. STATE-CHANGING for device command topics — confirm with the user before sending commands.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| broker | string | yes | — |
| topic | string | yes | — |
| payload | object | no | — |
| payload_str | string | no | — |
| qos | integer | no | — |
Subscribe to topic and return up to max_messages messages received within timeout_s. Optionally first publish request_payload (dict) to request_topic to trigger a fresh report from devices that report on demand (a common request/report topic pattern).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| broker | string | yes | — |
| topic | string | yes | — |
| timeout_s | integer | no | — |
| max_messages | integer | no | — |
| request_topic | string | no | — |
| request_payload | object | no | — |
Register/update a network printer as DATA (no redeploy). host = the printer's LAN IP. Most modern printers expose IPP Everywhere/AirPrint at port 631, path /ipp/print (some use /ipp or /). The IP must be inside INTERNAL_ALLOW_CIDRS or prints are blocked by the network policy.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| host | string | yes | — |
| port | integer | no | — |
| path | string | no | — |
| description | string | no | — |
List registered printers (name — host:port — description).
Takes no parameters.
Remove a registered printer by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Print a document on a registered printer via IPP. Provide EITHER file=<path under /data> OR content_base64=<the document bytes, base64> (use this to print something handed to you in chat). document_format defaults to application/pdf (use image/jpeg for photos). STATE-CHANGING / physical output —…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| printer | string | yes | — |
| file | string | no | — |
| content_base64 | string | no | — |
| document_format | string | no | — |
| job_name | string | no | — |
Register/update a network scanner as DATA (no redeploy). host = the device's LAN IP (same as the printer for a multifunction). Leave port=0 / tls="auto" to auto-detect (tries https:443 then http:80, eSCL base /eSCL).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| host | string | yes | — |
| port | integer | no | — |
| base | string | no | — |
| tls | string | no | — |
| ca_bundle | string | no | — |
| tls_insecure | boolean | no | — |
| description | string | no | — |
List registered scanners (name — host — description).
Takes no parameters.
Remove a registered scanner by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Scan a document via eSCL and save it under /data/work. color: color|gray|bw.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scanner | string | yes | — |
| resolution | integer | no | — |
| color | string | no | — |
| source | string | no | — |
| format | string | no | — |
| filename | string | no | — |
| paperless | string | no | — |
Register/update an SSH host as DATA (no redeploy). Auth via EITHER password_env (name of a vault secret with the password) OR key_env (name of a vault secret holding an unencrypted private key). The host must be inside INTERNAL_ALLOW_CIDRS if it's a private/LAN IP.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| host | string | yes | — |
| username | string | yes | — |
| port | integer | no | — |
| password_env | string | no | — |
| key_env | string | no | — |
| description | string | no | — |
List registered SSH hosts (name — user@host:port — description).
Takes no parameters.
Remove a registered SSH host by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Run a command on a registered SSH host; returns exit code + stdout/stderr.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| host | string | yes | — |
| command | string | yes | — |
| timeout | integer | no | — |
Upload a local file (under /data) to the SSH host at remote path dest (SFTP).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| host | string | yes | — |
| source | string | yes | — |
| dest | string | yes | — |
Download a remote file (SFTP) from the SSH host into /data/work.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| host | string | yes | — |
| path | string | yes | — |
| dest | string | no | — |
List a remote directory on the SSH host (SFTP).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| host | string | yes | — |
| path | string | no | — |
Register/update a WebDAV endpoint as DATA (no redeploy). base_url = the WebDAV root, e.g. Nextcloud https://<host>/remote.php/dav/files/<user>/ .
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| base_url | string | yes | — |
| username | string | no | — |
| password_env | string | no | — |
| tls_insecure | boolean | no | — |
| ca_bundle | string | no | — |
| description | string | no | — |
List registered WebDAV endpoints (name — base_url — description).
Takes no parameters.
Remove a registered WebDAV endpoint by name (does NOT touch remote files).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
List a folder on the endpoint (name · size · type). path is relative to base_url, e.g. "Shared/Reports".
| Parameter | Type | Required | Notes |
|---|---|---|---|
| endpoint | string | yes | — |
| path | string | no | — |
Upload a local file (under /data, e.g. /data/work/scan.pdf) to the endpoint at dest (relative to base_url, e.g. "Shared/Reports/scan.pdf").
| Parameter | Type | Required | Notes |
|---|---|---|---|
| endpoint | string | yes | — |
| source | string | yes | — |
| dest | string | yes | — |
Download a file from the endpoint (path relative to base_url) into /data/work. dest = optional filename; defaults to the remote file name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| endpoint | string | yes | — |
| path | string | yes | — |
| dest | string | no | — |
Create a folder on the endpoint (MKCOL). path relative to base_url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| endpoint | string | yes | — |
| path | string | yes | — |
Delete a file/folder on the endpoint. STATE-CHANGING — confirm first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| endpoint | string | yes | — |
| path | string | yes | — |
Register an INBOUND webhook receiver as DATA. Its public URL is `https://<host>/hooks/<name>`. Configure at least one auth method:
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| secret_env | string | no | — |
| hmac_secret_env | string | no | — |
| hmac_header | string | no | — |
| notify | string | no | — |
| description | string | no | — |
List inbound webhooks (name — path — how it authenticates — notify).
Takes no parameters.
Remove a registered inbound webhook by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
OUTBOUND — POST json_body to url (a notification/outgoing webhook).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | — |
| json_body | object | no | — |
| secret_header | string | no | — |
| secret_env | string | no | — |
Register/update an upstream MCP server as DATA (no redeploy).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| url | string | yes | — |
| transport | string | no | — |
| token_env | string | no | — |
| auth_header | string | no | — |
| auth_scheme | string | no | — |
| description | string | no | — |
List registered upstream MCP servers (name — url — description).
Takes no parameters.
Remove a registered upstream MCP server by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
List the tools a registered upstream MCP server exposes (discovery).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| server | string | yes | — |
Call a tool on a registered upstream MCP server. STATE-CHANGING tools on the remote side — confirm with the user before invoking actions.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| server | string | yes | — |
| tool | string | yes | — |
| args | object | no | — |
Post a message to an agent (or 'user' / 'all'). Append-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| to | string | yes | — |
| body | string | yes | — |
| subject | string | no | — |
| sender | string | no | — |
Read messages addressed to agent (also matches 'all'), newest last.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| agent | string | yes | — |
| unread_only | boolean | no | — |
| limit | integer | no | — |
Mark a message as read/handled by id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| message_id | string | yes | — |
Delete one message by id, or purge all read messages (purge_read=True).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| message_id | string | no | — |
| purge_read | boolean | no | — |
Add a task to the shared board (status=open) for any agent to claim.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | — |
| detail | string | no | — |
| created_by | string | no | — |
| needs | string | no | — |
| for_agent | string | no | — |
| session_id | string | no | — |
| project | string | no | — |
List the tasks on the shared agent board — work handed between agents — oldest first, every match (id, status, owner, title). Check it before adding or claiming one (task_add / task_claim via integration_call).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | no | open, claimed, blocked or done; empty = all |
| owner | string | no | Agent holding the task, as after owner= in the list; empty = any |
Recommend the best open task(s) for owner to pick up next (then claim with task_claim). Ranking: tasks assigned to you → tasks whose needs match your capabilities → unassigned/unspecific. caps = extra capability tags (your registered agent capabilities are included automatically).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| owner | string | yes | — |
| caps | string | no | — |
Claim an open task for owner (sets status=claimed). A claim holds for lease_minutes; until then other agents can't take the task over (the same owner may re-claim to extend it). After the lease runs out the task is free again, so a crashed agent can't block it forever.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| task_id | string | yes | — |
| owner | string | yes | — |
| lease_minutes | integer | no | — |
Hand a task to another agent (or release it: to=""). Sets the new owner, appends a note, and drops the recipient an inbox message with the linked session_id so they can pick up exactly where you left off.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| task_id | string | yes | — |
| to | string | no | — |
| note | string | no | — |
Update a task's status (open/claimed/blocked/done) and/or append a progress note.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| task_id | string | yes | — |
| status | string | no | — |
| note | string | no | — |
Delete a task from the board by id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| task_id | string | yes | — |
Register or refresh an agent (upsert by name); updates last_seen — this IS your presence heartbeat, so call it at the start of every session and whenever you resume. capabilities = comma/space tags used to route tasks (e.g. "mql5, build, vision"). status = a free-text note (e.g. "idle", "busy").
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| role | string | no | — |
| capabilities | string | no | — |
| status | string | no | — |
List registered agents with live presence (online/idle/away), online first — so you can see who's available to take work right now. You see your own agents (an admin: everyone's).
Takes no parameters.
Remove one of your agents from the registry by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Create/update a scheduled job (stored as DATA on the NAS).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| schedule | string | yes | — |
| prompt | string | yes | — |
| notify | string | no | — |
| enabled | boolean | no | — |
| owner | string | no | — |
| runner | string | no | — |
| once | boolean | no | — |
List scheduled jobs (id — schedule — enabled — last run). A non-admin sees only their OWN jobs; an admin sees all.
Takes no parameters.
Delete a scheduled job by name/id. A non-admin may delete only their OWN jobs; an admin may delete any.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
For the NAS runner: switch the connector to run AS a job's owner, using the short-lived capability token from cron_due. Every following tool call in this run is scoped + gated as the owner (their memory / vault / services / skills) until act_as_end. Runner/admin only, and not while another act-as…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| act_as_token | string | yes | — |
| job_id | string | no | — |
For the NAS runner: end the current act-as run and INVALIDATE its token (single-use), so the next job runs under the correct identity. Runner/admin;
Takes no parameters.
For the NAS runner: return enabled jobs that are due now, or were due in the last few minutes (a missed tick), and have not run since, as JSON [{id, prompt, notify, owner, act_as_token}]. Run each, then call cron_mark_run(id).
Takes no parameters.
For the runner: mark a job as run this minute (prevents double execution);
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| result | string | no | — |
What this connector is and how to use it (DE + EN): memory, skills, services, secrets, the confirm-before-actions rule, and the workflow.
Takes no parameters.
Save a durable, TYPED memory and write it back to the brain.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | Short title; it names the memory |
| content | string | yes | The fact itself, in Markdown |
| type | string | yes | Required — one of the four types above |
| scope | string | no | — |
| tags | string | no | Comma-separated, e.g. "garden, mqtt" |
| source | string | no | Where the fact comes from, e.g. a URL; default "session" |
| review | string | no | YYYY-MM-DD: from then on cortex_start lists it as due for review |
| project | string | no | Project this fact belongs to, e.g. "Birdhouse"; empty = general |
| expected_version | integer | no | The version you read with memory_read; refused if it changed since. 0 = don't check |
Stage a CANDIDATE memory (not live) for later review — for 'might be worth remembering' facts you're unsure about. It lands in the candidates queue (shown in bootstrap); promote it with memory_promote or drop it with memory_reject. For facts you're sure about, use memory_write directly.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | — |
| content | string | yes | — |
| type | string | no | — |
| tags | string | no | — |
List saved memories in a scope (each line: name — [type] title).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scope | string | no | — |
Read a memory's full content and version by its name — find the name with memory_search. An unknown name returns "No memory named …".
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | The name memory_search returned (before the ' — ') |
| scope | string | no | — |
Find memories by words (any order); best matches first — a hit in the title counts most, then tags/project, then the text. Returns name, title and a snippet; memory_read gives the full text.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Words to look for, any order |
| scope | string | no | — |
| project | string | no | Only this project's memories |
| type | string | no | Only this type: user, feedback, project or reference |
| tag | string | no | Only memories with this tag |
| limit | integer | no | Most results, 1–100 |
Delete a memory by its name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| scope | string | no | — |
List memory candidates awaiting review (auto-captured or staged via memory_note). Promote the keepers (memory_promote), reject the rest (memory_reject) — this is how the brain learns without polluting itself.
Takes no parameters.
Promote a reviewed candidate into live memory (default scope 'shared').
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| scope | string | no | — |
| type | string | no | — |
Reject (delete) a memory candidate without promoting it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
List the playbook library: multi-stage workflows (e.g. an AI-native software
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category | string | no | — |
Find playbooks whose title, description, stages or guidance match the words of query (best first).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | — |
A playbook in full: every stage with goal, artifact, template and approval, the plays and the guidance.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Create or update a playbook. stages = list of {id, name, goal, artifact, template, approval: webui|chat|none, approver} in order; plays (optional) = list of {id, stage, title, requires: [ids]}. A shared playbook is changed only by an admin or its author.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| title | string | yes | — |
| description | string | yes | — |
| stages | array/string | yes | — |
| category | string | no | — |
| plays | array/string | no | — |
| guidance | string | no | — |
| source | string | no | — |
Delete a playbook from the library (admin or its author). Runs keep working.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Start a run of playbook for project. Returns the first stage: its goal, the artifact to write and its template.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| playbook | string | yes | — |
| project | string | yes | — |
| title | string | no | — |
Where a run stands and what to do next — one run by id, or the active runs of a project (or all of yours).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| run_id | string | no | — |
| project | string | no | — |
List playbook runs (status active, done, cancelled or all).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project | string | no | — |
| status | string | no | — |
Submit the current stage's artifact (text, and/or a reference to the repo file and commit or a URL). A stage with approval 'none' moves on; otherwise it waits for the person's decision.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| run_id | string | yes | — |
| artifact | string | no | — |
| ref_path | string | no | — |
| ref_commit | string | no | — |
| ref_url | string | no | — |
| note | string | no | — |
Record the person's own decision given in this conversation — only for a stage whose approval is 'chat'. Never decide on the person's behalf.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| run_id | string | yes | — |
| decision | string | yes | — |
| note | string | no | — |
Cancel a run (its history is kept).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| run_id | string | yes | — |
List the runners you may give a scheduled job to (id — name — kind — on/off).
Takes no parameters.
Store a secret on the NAS, encrypted at rest. Reference it by name as a service's token_env. The value is never shown back. ADMIN-ONLY.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| value | string | yes | — |
| owner | string | no | — |
| description | string | no | — |
List the NAMES of stored secrets (never the values). A confined user sees only the shared secrets plus the ones in their OWN namespace; an admin sees all (tagged by owner).
Takes no parameters.
Delete a stored secret by name. ADMIN-ONLY. owner = a user's Pocket ID sub to delete from that user's private vault; empty for a shared secret.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| owner | string | no | — |
Show whether per-user data isolation is active and how many users are configured. Isolation is on whenever AUTH_ENFORCE is on (the default);
Takes no parameters.
Set a user's data area in policy.json (create or update). identity = the person's Pocket ID sub (or a client_id).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| identity | string | yes | — |
| memory | string | no | — |
| vault | string | no | — |
| services | string | no | — |
| skills | string | no | — |
| grant | string | no | — |
| note | string | no | — |
Show one user's stored area config and how it resolves. (Admin-only.)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| identity | string | yes | — |
List all users with a configured area + their resolved scope. (Admin-only.)
Takes no parameters.
Remove a user's per-user area override (they revert to the default).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| identity | string | yes | — |
Mint an agent key for identity (a Pocket ID sub / client_id). The same key works as a bearer token on /mcp (Hermes, OpenClaw, Codex, Agents SDK, LM Studio, ...) and on the REST layer (POST /api/v1/tools/<name>). name labels the agent (e.g. "hermes"). The key runs through the SAME authz +…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| identity | string | yes | — |
| name | string | no | — |
| scopes | string | no | — |
| ttl_days | integer | no | — |
| profile | string | no | — |
List API keys — keyid prefix, identity, scopes, expiry, status (NEVER the secret). (Admin-only.)
Takes no parameters.
Revoke (delete) an API key by its keyid (the ak_<keyid> prefix from apikey_list). Takes effect immediately. (Admin-only.)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| keyid | string | yes | — |
Call this first in every conversation. Returns a briefing: who the user is and how they want you to work; for project its notes, open tasks and last session (a project with no notes yet says so); for task matching skills and integrations. Without arguments: that profile and the known projects.…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project | string | no | — |
| task | string | no | — |
Start-of-conversation briefing, identical to cortex_start: who the user is, how they want you to work and the project's notes, tasks and last session.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project | string | no | — |
| task | string | no | — |
Everything registered that you may use: your memories by type, skill categories, services, devices, scheduled jobs, webhooks, agents, the task board and recent sessions. Longer than cortex_start — call it when you need the full picture.
Takes no parameters.
Find a tool beyond the core set — devices, services, files, mail, calendars, printing, scanning, SSH, webhooks, scheduling, playbooks, agents and administration. Returns matches best first, each with its parameters (* = required); no match says so. Run one with integration_call. For how-to…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | What you want to do, in plain words (any language) |
| limit | integer | no | Most matches, 1–20 |
Run a tool found with integration_search and return its result unchanged — its own errors too; a name you may not call is refused with a pointer to integration_search. Same permissions as calling the tool directly: one that changes or deletes data does so here as well, so confirm such steps as you…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Tool name exactly as integration_search returned it |
| arguments | object | no | That tool's parameters as an object |
Register/update a callable service (stored as DATA — no redeploy).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| base_url | string | yes | — |
| token_env | string | no | — |
| auth_scheme | string | no | — |
| description | string | no | — |
| auth_header | string | no | — |
| write_only | boolean | no | — |
| category | string | no | — |
| tls_insecure | boolean | no | — |
| ca_bundle | string | no | — |
| username | string | no | — |
List configured services, grouped by category (name — base_url — description).
Takes no parameters.
Remove a registered service by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Call a registered service's API. Only configured services can be reached;
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service | string | yes | — |
| path | string | no | — |
| method | string | no | — |
| json_body | object/array/string/integer/number/boole | no | — |
| params | object | no | — |
| offset | integer | no | — |
| max_chars | integer | no | — |
Append a checkpoint to a work session so another LLM/device can resume it — for handing over work in progress; durable facts belong in memory_write.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| summary | string | yes | What happened and where it stands, in a few lines |
| title | string | no | Title of a new session; its id is made from it |
| session_id | string | no | Id from an earlier session_save to continue it; empty = new session |
| next_steps | string | no | What to do next, for whoever resumes |
| status | string | no | e.g. "open" (default), "blocked" or "done" |
| model | string | no | Which LLM you are, e.g. "claude" or "chatgpt" |
| project | string | no | Project this work belongs to; cortex_start shows its latest session |
List work sessions (id — title · updated · status · last model), newest first.
Takes no parameters.
Load a session's full checkpoint history. Without an id, loads the most recently updated session — i.e. 'where we left off'.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| session_id | string | no | — |
Delete one of your sessions by id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| session_id | string | yes | — |
Remove sessions not updated within max_age_days (0 = use the configured SESSION_RETENTION_DAYS default). Runs automatically on save/list too. With enforcement on, a non-admin prunes only their own sessions.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| max_age_days | integer | no | — |
Find skills for a task: up to 10 lines "name — description", best first (a word in the name counts most, then description, tags, text); no match says so.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | The task in plain words |
| category | string | no | Only skills in this category; empty = all |
Without a category: list the CATEGORIES with a skill count each (compact, scales to hundreds of skills). With a category: list the skills in it (name — description). Use skill_search to find a skill across all categories.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category | string | no | — |
Load a skill's full instructions (its whole SKILL.md) by name — find the name with skill_search. An unknown name, or a skill outside your allowed set, gets a message saying so.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | The name skill_search returned (before the ' — ') |
Read a resource file bundled with a skill.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| filename | string | yes | — |
Create or update a skill: writes <name>/SKILL.md with frontmatter (name, description, category, tags + Markdown instructions).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| description | string | yes | — |
| instructions | string | yes | — |
| tags | string | no | — |
| category | string | no | — |
Delete a skill and its folder by name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under Apache-2.0
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install AICortex or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing ships as a container image. The scanner reads packages on npm and PyPI and public source; an image is neither, so there is no grade here — not a withheld one, an unmeasured one.
Release history
It installs from a container image rather than from a versioned package, so the command cannot be pinned to a release. The history below is for reading; the current release on file is 2.3.4.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish AICortex can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.