MCP.Market

Ainote MCP server

online · 100% uptime
by seunghan91·io.github.seunghan91/ainote·v1.3.2

Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.

B73/100grade B
What users say
No reviews yet
Be the first
Safety scan
B73/100

full report

Adoption
New

48 downloads/wk

Reviews

Write one

Nobody has reviewed Ainote yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Ainote tools (35, 12 write)

write = sends, deletes, buys or posts
  • assumption_writewrite actionFree

    Create or update an assumption under a project (L2 intent layer). Omit `id` to create, pass it to update. There is no delete tool. 🔴 `verdict` is REJECTED with an error if passed — verdict is confirmed only through a human judgment decision (see judgment_submit). This tool can only shape the assumption itself: what is being assumed, how critical it is, and what evidence would settle it.

  • auth_keyFree

    Obtain an MCP key. action: login | signup (consolidated surface — same handlers as the legacy tools) Required per action — login: email, password | signup: email, password.

  • delete_dev_docwrite actionFree

    Soft-delete a dev document by title or UUID. Reversible from trash. Pass `category` when multiple docs share the same title across subcategories (memory/claude/cursor/env/docs).

  • delete_taskwrite actionFree

    Soft-delete a task by ID. Destructive but reversible within 30 days (TaskCleanupJob purges trash daily at 2am KST). Returns 404 if the task does not exist or is not owned by the authenticated user.

  • dev_doc_writewrite actionFree

    Create or update a dev doc (non-destructive). action: create | update. Deletion is a separate tool (delete_dev_doc). (consolidated surface — same handlers as the legacy tools) Required per action — create: title, content | update: content.

  • dev_docs_readFree

    Read dev docs. action: get | list | categories | pull (consolidated surface — same handlers as the legacy tools)

  • env_sync.secret_pullFree

    Pull an encrypted secret blob. Response is ciphertext_b64 only — server never sees and never returns plaintext.

  • env_sync.secret_pushFree

    Push a new client-encrypted secret. Ciphertext only — server never sees plaintext. Recipients must include the pushing device's own pubkey.

  • env_sync.secret_rotateFree

    Rotate a secret: soft-delete the old node, create a new live node with the same alias and the new ciphertext+recipients. 7-day grace before hard delete of old ciphertext bytes.

  • env_sync_readFree

    Read env-sync state. action: devices | drift | status | txn_pull. Secret reads are a separate tool (env_sync.secret_pull). (consolidated surface — same handlers as the legacy tools)

  • env_sync_txn_pushFree

    Ingest a batched envelope of client-recorded env_sync mutations. HLC-skew gated, partial-success on conflict.

  • env_sync_txn_rollbackFree

    Inverse-apply a prior env_sync transaction. Safety gates: ownership, idempotency, descendant-conflict (force opt-out).

  • env_sync_writewrite actionFree

    Non-destructive env-sync writes. action: enroll | request_share | heartbeat. Secret push/rotate are separate tools. (consolidated surface — same handlers as the legacy tools) Required per action — enroll: alias, age_pubkey, enrollment_token | request_share: target_device_id, secret_shares, device_id | heartbeat: device_id, installed_skills_hash, installed_hooks_hash.

  • get_setup_guideFree

    Get instructions for setting up AI Note MCP in Claude Desktop, Cursor, or other MCP clients. No authentication required.

  • graph_readFree

    Read knowledge-graph nodes. action: get | list (consolidated surface — same handlers as the legacy tools)

  • graph_soft_deletewrite actionFree

    Soft-delete an env_sync graph node (sets deleted_at; .live scope hides it from reads). Idempotent — re-deleting a deleted node is a no-op success.

  • graph_writewrite actionFree

    Add or update a graph entity (non-destructive). action: add | update. Deletion is a separate tool (graph_soft_delete). (consolidated surface — same handlers as the legacy tools) Required per action — add: node_type, alias, payload, device_id | update: node_id, device_id, field_updates.

  • handoff_readFree

    Read session handoffs. action: get | list (consolidated surface — same handlers as the legacy tools) Required per action — get: project, topic.

  • handoff_saveFree

    Save a session handoff note for cross-device / cross-session continuation. Stored at handoffs/{project}-{topic}-{YYYY-MM-DD}.txt in the user's primary vault. Use the optional `time` param (HHMM, KST) to disambiguate multiple handoffs saved on the same day — it is appended to the topic slug (e.g. topic='phase-d', time='1555' → handoffs/{project}-phase-d-1555-{date}.txt).

  • judgment_listFree

    List the authenticated user's own judgments (L3 layer) — use this to check your own blocking status (risk_tier 1 pending = execution blocked). Default order matches the /command queue: risk_tier ascending, then arrival order.

  • judgment_submitwrite actionFree

    Request a human judgment (L3 layer) by attaching evidence — approval, evidence, or verdict. This is the ONLY door an agent has into the judgment queue. 🔴 `decision` is REJECTED with an error if passed — judgments are always created with decision='pending'. Only a human decides them (from the /command queue). Use judgment_list afterwards to check whether this judgment has since been decided. risk_tier controls urgency: 1=destructive (blocks execution until decided), 2=reversible (may auto-proceed after a wait window), 3=informational (auto-expires after 24h).

  • list_papersFree

    List notes/papers from AI Note. Supports keyword search across title and content, category filtering, pagination, and sorting. Returns id/title/content_preview/category_id/created_at. Use this when the user asks 'find my note about X', 'what did I write on Y', or wants to search their knowledge base.

  • memory_readFree

    Read agent memory. action: get | search (consolidated surface — same handlers as the legacy tools) Required per action — get: source | search: query.

  • project_readFree

    List the authenticated user's projects (L2 intent layer), or fetch one by id. Each entry includes riskiest_assumption — the single highest-priority unverified assumption (or, if all are verified, the highest-criticality one).

  • project_writewrite actionFree

    Create or update a project (L2 intent layer). Omit `id` to create, pass it to update. There is no delete tool — use status: 'archived' to retire a project.

  • sync_audit_layer5Free

    Record the result of a client-side Layer 5 codex review (sync.py merge gate) as a vault_events row. Body of the review is NOT stored — only an HMAC digest of the summary so operators can correlate without exposing review content. Opt-in: server skips writes (still returns success) unless ENV['AINOTE_LAYER5_AUDIT']='on' AND a versioned HMAC secret is configured. Used by the sync.py SessionStart hook + merge command to surface 'why was this blocked?' across multi-PC sessions.

  • sync_deletewrite actionFree

    Delete a file from the primary vault. Optional CAS via base_sha to detect concurrent multi-PC writes. Protected paths (global/memory/, global/skills/, global/planning/, global/intent/, global/claude-config/, handoffs/) require base_sha or explicit force:true (audited). Idempotent: deleting a non-existent path returns success with deleted:false.

  • sync_pushFree

    Push a markdown file into the primary vault. Optional CAS via base_sha to detect concurrent multi-PC writes (Layer 3 of multi-PC sync plan). WAF-bypass tip: large bodies (~10KB+) that get false-positive blocked at Cloudflare can be sent via `content_b64` (base64-encoded) OR `content` prefixed with `__B64__:` instead. When the push CREATES a new .md file, the response may carry `dedup_candidates` — existing memory files that look similar (keyword + title similarity, no LLM). It is an advisory, not a rejection: YOU decide to merge into one of them (re-push that path), drop this write as a duplicate (skip), or keep it as a new memory (store).

  • sync_push_batchFree

    Push MANY files into the primary vault in ONE call. Use this instead of looping sync_push whenever you have more than a couple of changed paths — the cost of sync_push is round trips, not bytes. Per-item semantics are identical to sync_push (Layer 3 base_sha CAS, superseded contract, content_b64 WAF fallback). Partial success is normal and returns HTTP 200: read `results[]` and match entries by `path`, NOT by position. A conflict result always carries `remote_sha` + `conflict_reason` so you can go straight to sync_merge. Request-level failures (duplicate paths in one batch, idempotency key reused with a different payload, >200 items, >4MB) return 4xx and apply NOTHING. Each item MUST carry `content_sha` (SHA1 hex of the decoded body, same algorithm as git_sha) — it powers both the integrity check and the retry-safe `skipped_identical` result. Newly created .md items may carry `dedup_candidates` (same merge/skip/store advisory as sync_push); a batch creating more than 10 new files skips the check entirely and reports `dedup_skipped: "bulk"`.

  • sync_readFree

    Read-only vault sync operations. action: list | pull | diff | merge | conflicts. Writes (push/delete) are separate tools — they carry CAS semantics. (consolidated surface — same handlers as the legacy tools) Required per action — diff: path | merge: path, base_text, local_text.

  • task_writewrite actionFree

    Create or update a task (non-destructive). action: create | update. Deletion is a separate tool (delete_task). (consolidated surface — same handlers as the legacy tools) Required per action — create: content | update: id.

  • tasks_readFree

    Read tasks and task categories. action: tasks | categories (consolidated surface — same handlers as the legacy tools)

  • vault_createwrite actionFree

    Create a new private vault as a GitHub repository under the user's account. Requires the user to have completed the GitHub App install flow first.

  • vault_readFree

    Read vault metadata. action: list | clone | status (consolidated surface — same handlers as the legacy tools) Required per action — clone: name.

  • vault_syncFree

    Wrapper around vault file sync. action=list|pull|push to work against the primary vault. list/pull are paginated — narrow with `path`/`since` and follow `next_cursor` instead of pulling the whole vault. For push: WAF-bypass via `content_b64` or `content: '__B64__:...'` prefix (mirrors sync_push).

Public scan report

scanner v0.1.9 · 2026-09-27 · same rubric, same numbers if you re-run it

no findings
  • Code scan31 source files scanned25/25
  • Live reliabilityremote reachable in 1277ms20/20
  • Tool poisoning35 tool descriptions checked15/15
  • Auth qualityAPI key sent as a header8/15
  • Maintenancerepository not readable: repo not found3/15
  • Maintainer identityno repository or website to verify2/10
Overall 73/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Ainote compares

Against every graded Productivity MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
73/100
higher than 35% of 1,299 Productivity servers
Tools
35
the typical Productivity server has 7
Tools that change things
34%
typical: 0%. Fewer write tools means less an agent can break
Uptime
100%
of our recent checks; the typical remote Productivity server answers 100%
Response time
1,106 ms
faster than 10% of 655 Productivity servers
Downloads a week
48
more than 37% of 427 Productivity servers with a package

What its tools let an agent do: 19 read · 14 change · 2 delete

Install Ainote in Claude Code, Cursor or VS Code

claude mcp add --transport http ainote https://api.ainote.dev/api/mcp
Add to Cursor

Ainote: common questions

Is Ainote MCP server safe?
Mostly: it is graded B (73/100). Read the Ainote safety report
How do I install Ainote?
It runs remotely at api.ainote.dev. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
Does Ainote need an API key?
Yes. The registry entry asks for AINOTE_API_KEY, Authorization.
Is Ainote maintained?
The latest release is v1.3.2.
Is Ainote up?
100% of our last 28 checks got an answer. We check remote servers about four times a day.
What can I use instead of Ainote?
Servers from other publishers that do the same job: Agent-Native Content MCP server, classifier.dev docs MCP server and loci MCP server.
How does Ainote compare with other Productivity MCP servers?
safety score 73/100 (higher than 35% of 1,299 Productivity servers); tools 35 (the typical Productivity server has 7); tools that change things 34% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Ainote

Same job from other publishers: the closest match first, then the best rated.

  • Agent-Native Content
    Open-source Obsidian for MDX - edit local docs with agent assistance
    A
  • classifier.dev docs
    classifier.dev documentation as tools: list, read and search the reference, benchmark and guides.
    A
  • loci
    Cross-session memory and hybrid RAG over your notes and docs. Local-first, with cited answers.
    A
  • Open & Async
    Draft decision docs, turn meetings into async artifacts, and triage sync vs async in your editor.
    A
  • Obsidian Vault MCP
    Local Zotero, MinerU, Obsidian literature workflow with transactional Analysis notes.
    A