このMCPでできること
Stores and synchronizes notes, tasks, development documents, project intent, knowledge graphs, environment secrets, vault files, memories, judgments, and session handoffs.
ツール
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'id': {'type': 'string', 'description': 'Assumption UUID to update. Omit to create a new assumption.'}, 'bmc_block': {'enum': ['key_partners', 'key_activities', 'key_resources', 'value_propositions', 'customer_relationships', 'channels', 'customer_segments', 'cost_structure', 'revenue_streams', 'null'], 'type': 'string', 'description': "Optional Business Model Canvas block this assumption belongs to. Pass 'null' to clear."}, 'statement': {'type': 'string', 'description': 'What is being assumed true (required to create).'}, 'project_id': {'type': 'string', 'description': 'Project UUID this assumption belongs to (required).'}, 'criticality': {'enum': [1, 2, 3], 'type': 'integer', 'description': '1=critical if wrong … 3=minor.'}, 'evidence_condition': {'type': 'string', 'description': "What would be observed to settle this assumption. Pass 'null' to clear."}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'id': {'type': 'string', 'description': 'Document UUID'}, 'title': {'type': 'string', 'description': 'Document title'}, 'category': {'type': 'string', 'description': 'Subcategory to disambiguate title'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Task ID to delete'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': '[get] Document UUID'}, 'title': {'type': 'string', 'description': '[get] Document title (e.g., project-a-memory.md)'}, 'action': {'enum': ['get', 'list', 'categories', 'pull'], 'type': 'string', 'description': 'which operation to run'}, 'search': {'type': 'string', 'description': '[list] Search keyword in document title'}, 'category': {'type': 'string', 'description': '[get] Subcategory (claude, cursor, etc.) to disambiguate title [list] Subcategory filter (claude, cursor, windsurf, copilot, docs, etc.). Omit to list all dev docs. [pull] Subcategory filter. Omit to pull all docs with local_path.'}, 'content_type': {'enum': ['markdown', 'json', 'yaml', 'text'], 'type': 'string', 'description': '[list] Filter by content type'}, 'include_versions': {'type': 'boolean', 'description': '[get] Include version history (default: false)'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': '[update] Document UUID'}, 'mode': {'enum': ['replace', 'append', 'prepend'], 'type': 'string', 'description': '[update] Update mode (default: replace)'}, 'title': {'type': 'string', 'description': '[create] Filename as title (e.g., ainote-memory.md, project-claude.md) [update] Document title'}, 'action': {'enum': ['create', 'update'], 'type': 'string', 'description': 'which operation to run'}, 'content': {'type': 'string', 'description': '[create] Full file content (markdown, json, yaml, text) [update] New content'}, 'category': {'type': 'string', 'description': '[create] Subcategory: memory | claude | cursor | env | docs | custom. Default: docs [update] Subcategory to disambiguate title'}, 'local_path': {'type': 'string', 'description': '[create] Absolute path on this machine (e.g., ~/.claude/projects/-Users-seunghan/memory/MEMORY.md). Used by pull_dev_docs to restore file on other devices. Supports ~ expansion. [update] Update the local file path for multi-device sync'}, 'memory_type': {'enum': ['state', 'event', 'preference'], 'type': 'string', 'description': "[create] Memory update semantics: 'state' = latest value replaces the past (used by memory_search latest_state mode), 'event' = immutable accumulating log, 'preference' = user preference. Omit for plain documents. [update] Set the memory update semantics (state | event | preference). Pass null/empty to clear."}, 'content_type': {'enum': ['markdown', 'json', 'yaml', 'text'], 'type': 'string', 'description': '[create] Content type. Auto-detected from title extension if omitted.'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'op': {'enum': ['push', 'install', 'uninstall', 'reconcile', 'migrate', 'rollback'], 'type': 'string', 'description': '[txn_pull]'}, 'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': '[txn_pull]'}, 'action': {'enum': ['devices', 'drift', 'status', 'txn_pull'], 'type': 'string', 'description': 'which operation to run'}, 'cursor': {'type': 'string', 'description': '[txn_pull]'}, 'device_id': {'type': 'string', 'description': '[devices] Optional calling device id for audit attribution. The X-Ainote-Device-Id header is the canonical source; this argument is the backwards-compatible fallback for clients that predate the header. If both are sent and disagree, the request is rejected (DEVICE_MISMATCH). [drift] [status] Optional calling device id for audit attribution. The X-Ainote-Device-Id header is the canonical source; this argument is the backwards-compatible fallback for clients that predate the header. If both are sent and disagree, the request is rejected (DEVICE_MISMATCH). [txn_pull] Optional calling device id for audit attribution. The X-Ainote-Device-Id header is the canonical source; this argument is the backwards-compatible fallback for clients that predate the header. If both are sent and disagree, the request is rejected (DEVICE_MISMATCH).'}, 'since_hlc': {'type': 'string', 'description': '[txn_pull]'}, 'include_stale': {'type': 'boolean', 'default': True, 'description': '[devices]'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', 'oneOf': [{'required': ['node_id']}, {'required': ['alias']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'alias': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'node_id': {'type': 'string', 'format': 'uuid'}, 'device_id': {'type': 'string', 'description': 'Optional calling device id for audit attribution. The X-Ainote-Device-Id header is the canonical source; this argument is the backwards-compatible fallback for clients that predate the header. If both are sent and disagree, the request is rejected (DEVICE_MISMATCH).'}}, 'additionalProperties': False}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['alias', 'kind', 'ciphertext_b64', 'recipients', 'device_id'], 'properties': {'kind': {'enum': ['api_key', 'oauth_token', 'private_key', 'passphrase'], 'type': 'string'}, 'alias': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'device_id': {'type': 'string', 'format': 'uuid'}, 'client_hlc': {'type': 'string'}, 'recipients': {'type': 'array', 'items': {'type': 'string', 'pattern': '^age1[a-z0-9]{58}$'}, 'minItems': 1}, 'ciphertext_b64': {'type': 'string', 'maxLength': 1048576, 'minLength': 1}}, 'additionalProperties': False}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['node_id', 'new_ciphertext_b64', 'new_recipients', 'device_id'], 'properties': {'node_id': {'type': 'string', 'format': 'uuid'}, 'device_id': {'type': 'string', 'format': 'uuid'}, 'client_hlc': {'type': 'string'}, 'new_recipients': {'type': 'array', 'items': {'type': 'string', 'pattern': '^age1[a-z0-9]{58}$'}, 'minItems': 1}, 'new_ciphertext_b64': {'type': 'string', 'maxLength': 1048576, 'minLength': 1}}, 'additionalProperties': False}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['operations'], 'properties': {'device_id': {'type': 'string', 'description': 'Optional calling device id for audit attribution. The X-Ainote-Device-Id header is the canonical source; this argument is the backwards-compatible fallback for clients that predate the header. If both are sent and disagree, the request is rejected (DEVICE_MISMATCH).'}, 'operations': {'type': 'array', 'items': {'type': 'object', 'required': ['tool', 'args', 'hlc'], 'properties': {'hlc': {'type': 'string'}, 'args': {'type': 'object'}, 'tool': {'type': 'string'}, 'client_txn_id': {'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}}, 'additionalProperties': False}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['txn_id'], 'properties': {'force': {'type': 'boolean', 'default': False}, 'txn_id': {'type': 'string', 'format': 'uuid'}, 'device_id': {'type': 'string', 'description': 'Optional calling device id for audit attribution. The X-Ainote-Device-Id header is the canonical source; this argument is the backwards-compatible fallback for clients that predate the header. If both are sent and disagree, the request is rejected (DEVICE_MISMATCH).'}, 'include_descendants': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'os': {'type': 'string', 'maxLength': 32, 'description': '[heartbeat]'}, 'alias': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': '[enroll]'}, 'action': {'enum': ['enroll', 'request_share', 'heartbeat'], 'type': 'string', 'description': 'which operation to run'}, 'device_id': {'type': 'string', 'description': '[enroll] Optional calling device id for audit attribution. The X-Ainote-Device-Id header is the canonical source; this argument is the backwards-compatible fallback for clients that predate the header. If both are sent and disagree, the request is rejected (DEVICE_MISMATCH). [request_share] The existing device performing the re-encryption (must own access to all secret_node_ids). [heartbeat]'}, 'age_pubkey': {'type': 'string', 'pattern': '^age1[a-z0-9]{58}$', 'description': '[enroll]'}, 'client_hlc': {'type': 'string', 'description': '[request_share]'}, 'capabilities': {'type': 'object', 'properties': {'os': {'type': 'string', 'maxLength': 32}, 'transports': {'type': 'array', 'items': {'type': 'string'}}, 'claude_code_version': {'type': 'string', 'maxLength': 32}}, 'description': '[enroll]', 'additionalProperties': True}, 'secret_shares': {'type': 'array', 'items': {'type': 'object', 'required': ['secret_node_id', 're_encrypted_ciphertext_b64'], 'properties': {'secret_node_id': {'type': 'string', 'format': 'uuid'}, 're_encrypted_ciphertext_b64': {'type': 'string', 'maxLength': 1048576, 'minLength': 1}}, 'additionalProperties': False}, 'minItems': 1, 'description': '[request_share]'}, 'installed_hooks': {'type': 'array', 'items': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'maxItems': 2000, 'description': '[heartbeat]'}, 'enrollment_token': {'type': 'string', 'minLength': 16, 'description': '[enroll]'}, 'installed_skills': {'type': 'array', 'items': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'maxItems': 2000, 'description': '[heartbeat]'}, 'target_device_id': {'type': 'string', 'format': 'uuid', 'description': '[request_share]'}, 'claude_code_version': {'type': 'string', 'maxLength': 32, 'description': '[heartbeat]'}, 'installed_hooks_hash': {'type': 'string', 'maxLength': 64, 'minLength': 64, 'description': '[heartbeat]'}, 'installed_skills_hash': {'type': 'string', 'maxLength': 64, 'minLength': 64, 'description': '[heartbeat]'}, 'installed_mcp_servers_hash': {'type': 'string', 'maxLength': 64, 'minLength': 64, 'description': '[heartbeat]'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'alias': {'type': 'string', 'maxLength': 128, 'description': '[get]'}, 'limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': '[list]'}, 'action': {'enum': ['get', 'list'], 'type': 'string', 'description': 'which operation to run'}, 'cursor': {'type': 'string', 'description': "[list] Opaque cursor (created_at ISO + id) from previous page's next_cursor"}, 'node_id': {'type': 'string', 'format': 'uuid', 'description': '[get]'}, 'device_id': {'type': 'string', 'description': '[get] Optional calling device id for audit attribution. The X-Ainote-Device-Id header is the canonical source; this argument is the backwards-compatible fallback for clients that predate the header. If both are sent and disagree, the request is rejected (DEVICE_MISMATCH). [list] Optional calling device id for audit attribution. The X-Ainote-Device-Id header is the canonical source; this argument is the backwards-compatible fallback for clients that predate the header. If both are sent and disagree, the request is rejected (DEVICE_MISMATCH).'}, 'node_type': {'enum': ['skill', 'hook', 'mcp_server', 'secret', 'setting_fragment'], 'type': 'string', 'description': '[get] [list]'}, 'updated_since_hlc': {'type': 'string', 'description': '[list]'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['node_id', 'device_id'], 'properties': {'node_id': {'type': 'string', 'format': 'uuid'}, 'device_id': {'type': 'string', 'format': 'uuid'}, 'client_hlc': {'type': 'string'}}, 'additionalProperties': False}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'alias': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': '[add]'}, 'action': {'enum': ['add', 'update'], 'type': 'string', 'description': 'which operation to run'}, 'node_id': {'type': 'string', 'format': 'uuid', 'description': '[update]'}, 'payload': {'type': 'object', 'description': '[add]'}, 'device_id': {'type': 'string', 'format': 'uuid', 'description': '[add] [update]'}, 'node_type': {'enum': ['skill', 'hook', 'mcp_server', 'secret', 'setting_fragment'], 'type': 'string', 'description': '[add]'}, 'client_hlc': {'type': 'string', 'description': '[add] [update]'}, 'field_updates': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'value', 'client_hlc'], 'properties': {'field': {'type': 'string', 'maxLength': 256, 'minLength': 1}, 'value': {}, 'client_hlc': {'type': 'string'}}, 'additionalProperties': False}, 'minItems': 1, 'description': '[update]'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'date': {'type': 'string', 'description': '[get] Optional YYYY-MM-DD. Omit for latest.'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': "[list] v2 only: AND match — entries must contain ALL given tags. Example: ['auth', 'mobile']."}, 'time': {'type': 'string', 'description': '[get] Optional HHMM (24h, KST) — same value passed at save time. Required to disambiguate when multiple handoffs share the same project/topic/date.'}, 'limit': {'type': 'integer', 'description': '[list] Max entries to return (default 50).'}, 'since': {'type': 'string', 'description': '[list] ISO8601 timestamp — only entries with updated_at >= since are returned.'}, 'topic': {'type': 'string', 'description': '[get] Topic slug used at handoff_save time.'}, 'action': {'enum': ['get', 'list'], 'type': 'string', 'description': 'which operation to run'}, 'status': {'type': 'string', 'description': "[list] v2 only: filter by frontmatter status (e.g. 'in_progress', 'paused', 'completed', 'blocked'). v1 handoffs without frontmatter are excluded when this filter is set."}, 'project': {'type': 'string', 'description': "[get] Project slug used at handoff_save time. [list] Optional project filter, e.g. 'logi' to list only logi-* handoffs."}, 'task_type': {'type': 'string', 'description': "[list] v2 only: filter by frontmatter task_type (e.g. 'feature', 'bugfix', 'refactor', 'research', 'ops')."}, 'has_blockers': {'type': 'boolean', 'description': '[list] v2 only: filter by frontmatter has_blockers (true/false).'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project', 'topic'], 'properties': {'date': {'type': 'string', 'description': 'Optional override date (YYYY-MM-DD). Defaults to today in server timezone.'}, 'time': {'type': 'string', 'description': "Optional time-of-day suffix in HHMM 24h format (KST), e.g. '1555'. Appended to the topic slug so multiple handoffs on the same day stay distinguishable. Omit for once-per-day saves."}, 'topic': {'type': 'string', 'description': "Short topic slug for this handoff, e.g. 'phase-d-port', 'oauth-fix'. Lowercase-hyphen."}, 'content': {'type': 'string', 'description': "Full handoff text. Should follow the session-handoff skill template (현재 상태 / 작업 위치 / 수정 파일 / 결정 사항 / 다음 STEP / 알려진 이슈). WAF-bypass tip: prefix the string with '__B64__:' followed by base64-encoded payload to bypass Render/Cloudflare edge WAF for large bodies (~10KB+) that get false-positive blocked as SQLi/cmd-injection."}, 'project': {'type': 'string', 'description': "Project slug, e.g. 'logi', 'ainote', 'krx_ai'. Lowercase, no spaces."}, 'device_id': {'type': 'string', 'description': 'Optional: client device identifier (e.g., from ~/.claude/ainote-sync/device.id). Stored on FileIndex so future conflict responses can report which device last wrote the handoff. Same field sync_push uses.'}, 'content_b64': {'type': 'string', 'description': 'Optional: base64-encoded handoff text (use INSTEAD of `content`). For WAF-bypass on large bodies. Server decodes before storing.'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'kind': {'enum': ['approval', 'evidence', 'verdict'], 'type': 'string', 'description': 'Filter by kind.'}, 'limit': {'type': 'integer', 'description': 'Max rows to return (default 50, max 200).'}, 'decision': {'enum': ['pending', 'approved', 'rejected', 'deferred', 'superseded', 'expired'], 'type': 'string', 'description': 'Filter by decision. Omit for all.'}, 'risk_tier': {'enum': [1, 2, 3], 'type': 'integer', 'description': 'Filter by risk_tier.'}, 'project_id': {'type': 'string', 'description': 'Filter by project UUID.'}, 'subject_id': {'type': 'string', 'description': 'Filter by subject UUID (pair with subject_type).'}, 'subject_type': {'enum': ['Assumption', 'Task'], 'type': 'string', 'description': 'Filter by subject type.'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['kind', 'summary'], 'properties': {'kind': {'enum': ['approval', 'evidence', 'verdict'], 'type': 'string', 'description': 'approval | evidence | verdict.'}, 'summary': {'type': 'string', 'description': 'One sentence: what is being judged (required).'}, 'evidence': {'type': 'object', 'description': 'Free-form evidence attached to the request — links, numbers, diff summaries.'}, 'risk_tier': {'enum': [1, 2, 3], 'type': 'integer', 'description': '1=destructive 2=reversible 3=informational. Default: 2.'}, 'project_id': {'type': 'string', 'description': 'Optional project this judgment relates to.'}, 'subject_id': {'type': 'string', 'description': 'Optional. UUID of the Assumption or Task this judgment is about.'}, 'subject_type': {'enum': ['Assumption', 'Task'], 'type': 'string', 'description': 'Optional. Pair with subject_id. Only Assumption or Task are allowed.'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'number', 'description': 'Maximum number of papers to return (default: 25, max: 200)'}, 'offset': {'type': 'number', 'description': 'Number to skip for pagination (default: 0)'}, 'search': {'type': 'string', 'description': 'Keyword to match in paper title or content (case-insensitive partial match)'}, 'sort_by': {'enum': ['created_at', 'updated_at', 'title'], 'type': 'string', 'description': 'Sort field (default: updated_at)'}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort order (default: desc)'}, 'category_id': {'type': 'string', 'description': 'Filter by category UUID'}, 'source_type': {'type': 'string', 'description': "Filter by source type (e.g., 'manual', 'youtube', 'url', 'clipboard')"}, 'paper_category_id': {'type': 'string', 'description': 'Filter by paper-specific folder UUID'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': '[get] Item ID returned by memory_search'}, 'hop': {'type': 'integer', 'maximum': 2, 'minimum': 0, 'description': '[search] Expand results by following [[wikilinks]] N hops from keyword hits (vault only). Scores decay 0.5 per hop. Default 0 (off).'}, 'mode': {'enum': ['keyword', 'latest_state'], 'type': 'string', 'description': '[search] keyword (default) or latest_state'}, 'path': {'type': 'string', 'description': "[get] vault_file only: file path inside the vault (e.g. 'global/MEMORY.md')"}, 'limit': {'type': 'integer', 'description': '[search] Max results (default 10, max 20)'}, 'query': {'type': 'string', 'description': "[search] Search text (e.g. 'render deploy key', 'ainote jwt'). May be blank only in latest_state mode."}, 'action': {'enum': ['get', 'search'], 'type': 'string', 'description': 'which operation to run'}, 'source': {'enum': ['paper', 'vault_file'], 'type': 'string', 'description': '[get] Which store the item lives in (use the `source` field from memory_search results)'}, 'sources': {'type': 'array', 'items': {'enum': ['papers', 'vault'], 'type': 'string'}, 'description': '[search] Memory stores to search. Default: both.'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'id': {'type': 'string', 'description': 'Fetch a single project by UUID. Omit to list all.'}, 'status': {'enum': ['active', 'paused', 'archived'], 'type': 'string', 'description': 'Filter by status. Omit to list all statuses.'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'id': {'type': 'string', 'description': 'Project UUID to update. Omit to create a new project.'}, 'name': {'type': 'string', 'description': 'Project name (required to create).'}, 'intent': {'type': 'string', 'description': "Why this project exists, in one paragraph. Pass 'null' to clear."}, 'status': {'enum': ['active', 'paused', 'archived'], 'type': 'string', 'description': 'active | paused | archived.'}, 'success_criteria': {'type': 'string', 'description': "What observable outcome counts as success. Pass 'null' to clear."}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['path', 'verdict'], 'properties': {'path': {'type': 'string', 'description': 'Vault path the review covered.'}, 'summary': {'type': 'string', 'description': 'Free-form codex output summary. Server HMACs this; raw text is NEVER stored.'}, 'verdict': {'type': 'string', 'description': 'One of: pass, flag, block, error.'}, 'chunk_count': {'type': 'integer', 'description': 'Optional: number of diff chunks the client fed to codex.'}, 'duration_ms': {'type': 'integer', 'description': 'Optional: wall-clock time of the codex review on the client.'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': "Relative file path to delete (e.g., 'global/_waf_probe.md'). No leading slash, no '..'."}, 'force': {'type': 'boolean', 'description': 'Optional: when true, skip CAS check even if base_sha is supplied. Use only for intentional overwrites; presence is auditable via warning logs.'}, 'base_sha': {'type': 'string', 'description': 'Optional: git_sha the client last observed for this path. When present, server compares with current git_sha and returns -32009 conflict on mismatch (with current content for 3-way diff).'}, 'device_id': {'type': 'string', 'description': 'Optional: client device identifier for audit log (e.g., from ~/.claude/ainote-sync/device.id).'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': "Relative file path (e.g., 'global/MEMORY.md', 'launchcrew/firebase.md'). No leading slash, no '..'."}, 'force': {'type': 'boolean', 'description': 'Optional: when true, skip CAS check even if base_sha is supplied. Use only for intentional overwrites; presence is auditable via warning logs.'}, 'content': {'type': 'string', 'description': "Full file content (markdown text). Alternatively prefix with '__B64__:' followed by base64 payload for WAF bypass."}, 'base_sha': {'type': 'string', 'description': 'Optional: git_sha the client last observed for this path. When present, server compares with current git_sha and returns -32009 conflict on mismatch (with current content for 3-way diff). Omit for legacy LWW behavior (response will include a `warning` field nudging clients to upgrade).'}, 'device_id': {'type': 'string', 'description': 'Optional: client device identifier (e.g., from ~/.claude/ainote-sync/device.id). Stored on FileIndex so future conflict responses can report which device last wrote the path.'}, 'content_b64': {'type': 'string', 'description': 'Optional: base64-encoded file content (use INSTEAD of `content`). For WAF-bypass on large bodies. Server decodes before storing. If both supplied, content_b64 wins.'}, 'supports_superseded': {'type': 'boolean', 'description': "Optional capability opt-in. When true AND resolves_conflict_id points at an already-resolved conflict whose (path, remote_sha) matches this push, the server returns a NORMAL 200 with resource_data {status:'superseded', reason:'resolved_elsewhere', applied:false, git_sha:<current remote>} instead of a -32009 error, so the client pulls to converge. Omit (default) to keep the legacy -32009 contract."}, 'resolves_conflict_id': {'type': 'string', 'description': 'Optional: UUID of a vault_conflicts row this push resolves. When supplied, server validates ownership/unresolved/path/sha and atomically marks the conflict as resolution=clean inside the same transaction as the file_indices write. Validation failure rolls back the whole push and returns -32009 stale_conflict_id.'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['items', 'idempotency_key'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content_sha'], 'properties': {'path': {'type': 'string', 'description': "Relative file path. No leading slash, no '..'."}, 'force': {'type': 'boolean', 'description': 'Optional per-item CAS bypass (audited). Suppresses the skipped_identical short-circuit.'}, 'content': {'type': 'string', 'description': "Full file content. May use the '__B64__:' prefix like sync_push."}, 'base_sha': {'type': 'string', 'description': 'Same tri-state semantics as sync_push: omit for legacy LWW, null to assert the path does not exist yet, or the last observed git_sha for CAS.'}, 'device_id': {'type': 'string', 'description': 'Optional per-item device id; falls back to the batch-level device_id.'}, 'content_b64': {'type': 'string', 'description': 'Optional base64 body (use INSTEAD of content) for WAF bypass. Wins over content if both are present.'}, 'content_sha': {'type': 'string', 'description': "REQUIRED. SHA1 hex of the decoded content. Mismatch fails this item only (status 'error'); equality with the current remote git_sha yields 'skipped_identical' instead of a conflict, which is what makes a crashed batch safe to retry."}, 'resolves_conflict_id': {'type': 'string', 'description': 'Optional vault_conflicts UUID this item closes. Requires a non-null base_sha and force=false.'}}}, 'description': 'Up to 200 push items, 4MB total, one entry per unique path. Duplicate paths reject the whole batch.'}, 'device_id': {'type': 'string', 'description': 'Optional batch-level device identifier; per-item device_id overrides it.'}, 'idempotency_key': {'type': 'string', 'description': 'REQUIRED. Opaque client-generated UUID, one per batch ATTEMPT-SET: reuse the same key when retrying the same items after a timeout (the server replays the stored results instead of re-applying), and generate a NEW key whenever the items change. Reusing a key with a different payload is a 400 collision, never a silent replay. Do not derive it from paths or content.'}, 'supports_superseded': {'type': 'boolean', 'description': 'Same capability opt-in as sync_push, applied to every item in the batch.'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'path': {'type': 'string', 'description': "[list] Directory to list (e.g., 'global'). Omit to list from the first page. [pull] Optional directory filter (e.g., 'global' to pull only global files) [diff] Relative vault path. [merge] Relative vault path (e.g., 'global/MEMORY.md'). [conflicts] Optional: filter to a specific path."}, 'limit': {'type': 'integer', 'description': '[list] Max entries per page. Default 200, max 1000. [pull] Max files per page. Default 25, max 100. [conflicts] Optional: max rows to return (default 50, max 200).'}, 'since': {'type': 'string', 'description': '[pull] ISO 8601 timestamp. Only return files updated after this time. Omit to start from the first page.'}, 'action': {'enum': ['list', 'pull', 'diff', 'merge', 'conflicts'], 'type': 'string', 'description': 'which operation to run'}, 'cursor': {'type': 'string', 'description': '[list] Pass `next_cursor` from the previous response to fetch the next page. [pull] Pass `next_cursor` from the previous response to fetch the next page.'}, 'base_sha': {'type': 'string', 'description': '[merge] Optional: git_sha the client believes is the merge base. When supplied, server verifies (informational; merge still runs).'}, 'base_text': {'type': 'string', 'description': "[diff] Optional: client's baseline (last-known remote). When supplied along with local_text, response includes both diffs (base → remote, base → local) so the client can render a 3-way view. [merge] Common ancestor text — what the client had cached when it started editing. Source: client state.json baseline. Required."}, 'device_id': {'type': 'string', 'description': '[merge] Optional: client device identifier. Recorded on any vault_conflict row created downstream.'}, 'local_text': {'type': 'string', 'description': "[diff] Optional: client's current text. When supplied, response includes unified diff (remote → local). [merge] Current local text on the client (post-edit). Required."}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'limit': {'type': 'number', 'description': '[tasks] Maximum number of tasks to return (default: 25, max: 500)'}, 'action': {'enum': ['tasks', 'categories'], 'type': 'string', 'description': 'which operation to run'}, 'offset': {'type': 'number', 'description': '[tasks] Number of tasks to skip for pagination (default: 0). Use with limit to fetch additional pages.'}, 'search': {'type': 'string', 'description': '[tasks] Search keyword in task content and notes (case-insensitive partial match)'}, 'status': {'enum': ['pending', 'completed'], 'type': 'string', 'description': '[tasks] Filter by task status'}, 'overdue': {'type': 'boolean', 'description': '[tasks] Filter overdue incomplete tasks (due_date < today)'}, 'sort_by': {'enum': ['due_date', 'created_at', 'completed_at', 'updated_at', 'is_important'], 'type': 'string', 'description': '[tasks] Sort field (default: created_at)'}, 'location': {'type': 'string', 'description': "[tasks] Filter by location (partial match, e.g., '여의도', '서울')"}, 'due_today': {'type': 'boolean', 'description': '[tasks] Filter tasks due today'}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': '[tasks] Sort order (default: desc)'}, 'category_id': {'type': 'string', 'description': '[tasks] Filter by category UUID'}, 'due_date_end': {'type': 'string', 'description': '[tasks] Filter tasks with due_date <= this date (ISO 8601 format)'}, 'is_important': {'type': 'boolean', 'description': '[tasks] Filter by important tasks only'}, 'due_date_start': {'type': 'string', 'description': '[tasks] Filter tasks with due_date >= this date (ISO 8601 format)'}, 'created_date_end': {'type': 'string', 'description': '[tasks] Filter tasks created <= this date (ISO 8601 format)'}, 'has_notification': {'type': 'boolean', 'description': '[tasks] Filter by notification enabled status'}, 'completed_date_end': {'type': 'string', 'description': '[tasks] Filter tasks completed <= this date (ISO 8601 format)'}, 'created_date_start': {'type': 'string', 'description': '[tasks] Filter tasks created >= this date (ISO 8601 format)'}, 'completed_date_start': {'type': 'string', 'description': '[tasks] Filter tasks completed >= this date (ISO 8601 format)'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': '[update] Task ID (required)'}, 'notes': {'type': 'string', 'description': "[create] Additional notes or details for the task [update] Update notes (or 'null' to clear)"}, 'action': {'enum': ['create', 'update'], 'type': 'string', 'description': 'which operation to run'}, 'content': {'type': 'string', 'description': '[create] Task content (required) [update] New task content'}, 'due_date': {'type': 'string', 'description': "[create] Due date in ISO format (e.g., '2026-01-28' or '2026-01-28T15:00:00+09:00') [update] Update due date in ISO format (or 'null' to clear)"}, 'due_time': {'type': 'string', 'description': "[create] Due time in HH:MM format (e.g., '15:00'). If not provided, task is treated as all-day. [update] Update due time in HH:MM format (or 'null' to make all-day)"}, 'location': {'type': 'string', 'description': "[create] Location where the task takes place [update] Update location (or 'null' to clear)"}, 'is_all_day': {'type': 'boolean', 'description': '[create] Mark as all-day event — suppresses time-of-day rendering. [update] Toggle all-day mode.'}, 'start_date': {'type': 'string', 'description': "[create] Start date for date range tasks in ISO format (e.g., for multi-day events) [update] Update start date in ISO format (or 'null' to clear)"}, 'category_id': {'type': 'string', 'description': "[create] Category ID (UUID) to organize the task [update] Update category ID (or 'null' to remove category)"}, 'repeat_rule': {'type': 'string', 'description': "[create] Recurrence rule (e.g., 'daily', 'weekly', 'monthly', 'yearly', or RRULE format) [update] Update recurrence rule (or 'null' to make non-recurring)"}, 'travel_time': {'type': 'number', 'description': '[create] Minutes of travel time to allow before due_date. [update] Update travel-time minutes.'}, 'completed_at': {'type': 'string', 'description': "[update] Mark as completed (ISO format) or 'null' to uncomplete"}, 'is_important': {'type': 'boolean', 'description': '[create] Mark task as important (default: false) [update] Update important status'}, 'location_lat': {'type': 'number', 'description': '[create] GPS latitude. Pair with location_lng. [update] Update GPS latitude.'}, 'location_lng': {'type': 'number', 'description': '[create] GPS longitude. Pair with location_lat. [update] Update GPS longitude.'}, 'reminder_timing': {'type': 'integer', 'description': '[create] Minutes before due time to send reminder (e.g., 10 for 10 minutes before). Default: 30. Only used when has_notification is true. [update] Minutes before due time to send reminder (e.g., 10 for 10 minutes before). Only used when has_notification is true.'}, 'has_notification': {'type': 'boolean', 'description': '[create] Enable reminder notifications (default: false) [update] Enable/disable reminder notifications'}, 'reminder_timings': {'type': 'array', 'items': {'type': 'integer'}, 'description': '[create] Multiple reminder offsets in minutes before due time (e.g., [10, 60] fires 10 min and 1 hour before). Overrides reminder_timing if provided. [update] Multiple reminder offsets in minutes before due time (e.g., [10, 60]). Pass empty array [] to clear.'}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Vault display name. The GitHub repo name (slug) is derived from it unless `slug` is given.'}, 'slug': {'type': 'string', 'description': 'Optional explicit repo slug (ASCII lowercase-hyphen). Required when `name` has no ASCII letters or digits — e.g. a Korean-only name — because GitHub repo names are ASCII-only.'}, 'description': {'type': 'string', 'description': 'Optional GitHub repo description.'}}}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'name': {'type': 'string', 'description': '[clone] Vault name or slug.'}, 'action': {'enum': ['list', 'clone', 'status'], 'type': 'string', 'description': 'which operation to run'}, 'target_path': {'type': 'string', 'description': '[clone] Preferred local clone path for the returned instructions.'}, 'include_commit_sha': {'type': 'boolean', 'description': "[list] Include each vault's latest_commit_sha (default false). Costs one GitHub API round-trip per vault, so only ask for it when you actually need the remote HEAD."}}, 'additionalProperties': True}
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'path': {'type': 'string', 'description': 'Relative path filter or target file path.'}, 'limit': {'type': 'integer', 'description': 'Max entries per page. list: default 200, max 1000. pull: default 25, max 100.'}, 'since': {'type': 'string', 'description': 'ISO 8601 timestamp for incremental pull.'}, 'action': {'enum': ['list', 'pull', 'push'], 'type': 'string', 'description': 'Sync action. Default list.'}, 'cursor': {'type': 'string', 'description': 'Pass `next_cursor` from the previous response to fetch the next page.'}, 'content': {'type': 'string', 'description': "Required for push (or `content_b64`). Prefix with '__B64__:' for WAF bypass."}, 'content_b64': {'type': 'string', 'description': 'Optional: base64-encoded content (use INSTEAD of `content`) for WAF-bypass on large bodies. Server decodes before storing.'}}}
最近のツール変更
類似のMCPサーバー
Kaiku
Manages team issues, comments, attachments, projects, wiki pages, and related development workflows.
WhiteMagic — governed local memory for agent continuity
Provides local persistent memory, hybrid retrieval, and session continuity for coding and other agents.
Atlassian Rovo MCP Server
Searches and manages Jira, Confluence, Loom, and related Atlassian work data.
ctlsurf
Provides coding agents with a system-of-record notebook containing pages, datastores, tasks, and skills.
Stable Baseline
Manages company documents, knowledge graphs, whiteboards, projects, plans, tasks, teams, and improvement workflows.
Dayze — Life Context
Provides authenticated personal life-context data and tools for contacts, memories, events, expenses, trips, assets, places, and …
YouSpot
Connects personal contacts, companies, notes, files, CRM records, email, Slack, LinkedIn, and calendars, with search, relationshi…
cypher-mcp
Provides named Cypher graph queries and code-orientation tools for tracing capabilities, symbols, invariants, provenance, changes…