ToolPin

io.github.seunghan91/ainote

io.github.seunghan91/ainote · v1.3.2 · MCP 2025-03-26

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

Reachability reachable
checked 2026-07-14 03:46 UTC
Registry status active
Tools pinned 51
b56246bad121
Tools last changed unchanged since first capture 2026-07-14

Provenance

Registry namespace io.github.seunghan91 (GitHub-account verified by the official registry)
Repository github.com/seunghan91/ainote
Website https://docs.ainote.dev
Remote endpoints
https://api.ainote.dev/api/mcp (streamable-http)

Observed changes

When (UTC)EventDetail
2026-07-14 03:46 first capture 51 tools pinned

Pinned tool definitions (51)

ToolDescription
list_tasks List all tasks from AI Note with advanced filtering, date ranges, location search, and sorting
create_task Create a new task in AI Note. Supports full task creation with dates, times, location, notes, and notifications.
update_task Update an existing task. All fields are optional except id.
delete_task 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.
list_categories List all task categories for the authenticated user. Returns id/name/color/icon/task_count tuples. Read-only — use create_task with category_id to assign tasks to a category.
list_papers 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',...
list_dev_docs List dev documents under the dev/ category hierarchy. Filter by subcategory (claude, cursor, windsurf, copilot, docs, etc.), search by title, or filter by content type.
get_dev_doc Get a single dev document by title or id. Returns full content.
create_dev_doc Save a document to AI Note cloud for multi-device sync and persistent storage. PRIMARY USE CASES: - Memory files: ~/.claude/projects/.../memory/MEMORY.md (AI context that survives device switches) - AI config files: CLAUDE.md,...
update_dev_doc Update an existing dev document. Supports replace (default), append, or prepend modes. Optionally update the local_path for sync.
pull_dev_docs Restore all synced files to this device. Fetches every dev doc that has a local_path set and writes the content to that path on disk. WHEN TO USE: - First time setup on a new machine (desktop, laptop, etc.) - After reinstalling macOS...
delete_dev_doc 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).
list_dev_categories List all subcategories under dev/ (memory, claude, cursor, env, docs, mcp, custom...) with document counts. Use to discover which categories exist before calling list_dev_docs with a category filter.
signup_and_get_key Create a new AI Note account and get an MCP API key. No authentication required. Use this if you don't have an account yet.
login_and_get_key Log in to an existing AI Note account and return an MCP API key. No prior authentication required. SIDE EFFECT: if the user has no MCP key yet, this call creates one (write to user.mcp_keys), so it is NOT idempotent and must be gated...
get_setup_guide Get instructions for setting up AI Note MCP in Claude Desktop, Cursor, or other MCP clients. No authentication required.
vault_list List the authenticated user's GitHub-backed vaults. Each entry includes slug, github_repo_full_name, sync status, indexed file count, and is_primary flag. Read-only. Pair with vault_clone to get the git clone URL or vault_sync to...
vault_create 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_clone Return the GitHub HTTPS clone URL for an existing vault. Authentication is via the user's normal GitHub credentials (PAT or gh CLI).
vault_connect_status Check whether the user has installed the ainote GitHub App. If connected, returns account_login + installation_id. If not, returns an install_url to surface to the user. Read-only; talks to GitHub API.
vault_sync Wrapper around vault file sync. action=list|pull|push to work against the primary vault. For push: WAF-bypass via `content_b64` or `content: '__B64__:...'` prefix (mirrors sync_push).
sync_push 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...
sync_pull Legacy alias for pulling files from the primary vault.
sync_list Legacy alias for listing files in the primary vault.
sync_delete 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/claude-config/, handoffs/) require base_sha or explicit...
sync_merge Compute a stateless 3-way merge for a vault file. Server runs `git merge-file --diff3 --stdout` over (base_text, local_text, current remote from file_indices) and returns the merged text plus the exact remote_sha it merged against. NO...
sync_diff Return the unified diff (and raw remote text) of a vault file. Useful for surfacing what `sync_merge` would conflict on, or for the client to render a `git diff` view before pushing. NO database mutation. Server has no history —...
sync_pending_conflicts List unresolved vault_conflicts rows for the authenticated user's primary vault. Used by clients (e.g. SessionStart hook) to surface conflicts that need merge attention. Returns up to `limit` rows ordered by most recent first.
sync_audit_layer5 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....
handoff_save 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...
handoff_list List session handoff notes saved in the primary vault under handoffs/, most-recent first. v2 frontmatter fields (status / has_blockers / tags / task_type) can be filtered server-side and are exposed in each entry without fetching the...
handoff_get Retrieve a session handoff by project + topic. If date is omitted, returns the most recent matching handoff. Pass `time` (HHMM, KST) to fetch a specific same-day save when multiple exist. Read-only: handoffs older than 7 days are not...
memory_search Search your memory (dev docs / papers + vault markdown files) and get ranked snippets with IDs. COST PRINCIPLE: search returns snippets only; call memory_get for full content. MODES: - keyword (default): hybrid keyword + semantic...
memory_get Fetch the full content of ONE memory item found via memory_search. source='paper' requires `id`; source='vault_file' accepts `id` or `path`. Only the authenticated user's own items are accessible. Returns { found: false } when the item...
graph_get_node Read a live env_sync graph node and its per-field LWW state. Lookup by node_id OR (alias + node_type).
graph_list_nodes List live env_sync graph nodes for the calling user with optional node_type and HLC-since filters.
graph_add_entity Create a new env_sync graph node (skill/hook/mcp_server/secret/setting_fragment). Same-alias collisions open a conflict bucket — no silent overwrite.
graph_update_entity Per-field LWW update for an env_sync graph node. Identity-immutable field mismatches open a conflict bucket (no partial writes).
graph_soft_delete 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.
env_sync.device_enroll Complete device enrollment by exchanging a one-shot enrollment_token for a registered device row with the device's age public key.
env_sync.device_list List enrolled devices for the calling user. Each entry includes age pubkey, capabilities, last_sync_at.
env_sync.device_request_secret_share Share existing secrets with a newly enrolled device by uploading re-encrypted ciphertexts. Plaintext never transits.
env_sync.secret_push Push a new client-encrypted secret. Ciphertext only — server never sees plaintext. Recipients must include the pushing device's own pubkey.
env_sync.secret_pull Pull an encrypted secret blob. Response is ciphertext_b64 only — server never sees and never returns plaintext.
env_sync.secret_rotate 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_txn_push Ingest a batched envelope of client-recorded env_sync mutations. HLC-skew gated, partial-success on conflict.
env_sync_txn_pull Paginated read of env_sync transaction log, HLC-ordered. Read-only; filterable by since_hlc + op.
env_sync_txn_rollback Inverse-apply a prior env_sync transaction. Safety gates: ownership, idempotency, descendant-conflict (force opt-out).
env_sync.heartbeat_ping Device heartbeat ping. Updates last_sync_at + capabilities, triggers fast-path drift recheck if installed-set hashes changed.
env_sync.drift_status Cross-device drift report. Lists skills present on one device but missing on another, with dwell time.
env_sync.sync_status User-level vault health snapshot: node counts, pending conflicts, last transaction, device liveness.

Status badge

ToolPin status badge for io.github.seunghan91/ainote

[![ToolPin](https://toolpin.dev/badge/io.github.seunghan91/ainote.svg)](https://toolpin.dev/servers/io.github.seunghan91/ainote)

Maintain this server? Add the badge to your README — it links your users to this live status page.