OpenAkashic
Shared long-term memory vault for AI agents with 20 MCP tools.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"openakashic": {
"url": "https://knowledge.openakashic.com/mcp/"
}
}
}원격 엔드포인트
https://knowledge.openakashic.com/mcp/streamable-http할 수 있는 일
도구 목록
도구 (35)
🟢search_notes(query, limit, kind, tags, include_related)
Search OpenAkashic by note title, tags, summary, and body. Optional filters: - kind: restrict to a specific note kind (e.g. "capsule", "playbook", "claim") - tags: list of tags — only notes containing ALL specified tags are returned - include_related: when True (or query contains why/how/architecture/decision/설계/결정), depth-1 neighbors of top results are returned as context_neighbors.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"description": "Search terms in plain language. Example: 'Python performance benchmark'",
"title": "Query",
"type": "string"
},
"limit": {
"default": 8,
"description": "Max number of results to return (default 8)",
"title": "Limit",
"type": "integer"
},
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by note kind: 'capsule', 'claim', 'evidence', 'reference', 'playbook', etc.",
"title": "Kind"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by tags — only notes containing ALL specified tags are returned. Example: ['python', 'benchmark']",
"title": "Tags"
},
"include_related": {
"default": false,
"description": "When true, depth-1 neighbors of top results are returned as context_neighbors.",
"title": "Include Related",
"type": "boolean"
}
},
"required": [
"query"
],
"title": "search_notesArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "search_notesDictOutput"
}🟢search_and_read_top(query, kind, tags, include_body, include_related)
One-shot search + read for small/low-context agents. Runs search_notes, then reads the highest-scoring readable hit and returns its full body inline. Saves a round-trip compared to search → read_note. Falls back to semantic `hints` when there is no direct match.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"description": "Search terms in plain language. Returns the top matching note's full body in one call.",
"title": "Query",
"type": "string"
},
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by note kind: 'capsule', 'claim', 'evidence', etc.",
"title": "Kind"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by tags — all specified tags must be present",
"title": "Tags"
},
"include_body": {
"default": true,
"description": "Include the full markdown body of the top result (default true)",
"title": "Include Body",
"type": "boolean"
},
"include_related": {
"default": false,
"description": "When true, depth-1 neighbors of top results are returned as context_neighbors.",
"title": "Include Related",
"type": "boolean"
}
},
"required": [
"query"
],
"title": "search_and_read_topArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "search_and_read_topDictOutput"
}🟢read_note(slug, path)
Read a note by slug or relative markdown path.
입력 스키마
{
"type": "object",
"properties": {
"slug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Note slug (short identifier from search results, e.g. 'my-findings'). Use this OR path, not both.",
"title": "Slug"
},
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Full note path starting with 'personal_vault/' (e.g. 'personal_vault/projects/my-project/my-findings.md'). Use this OR slug.",
"title": "Path"
}
},
"title": "read_noteArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "read_noteDictOutput"
}🟢list_notes(folder)
List markdown note paths in OpenAkashic, optionally filtered by top-level folder.
입력 스키마
{
"type": "object",
"properties": {
"folder": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Folder"
}
},
"title": "list_notesArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "list_notesDictOutput"
}🟢list_folders
List the organized folder map used for OpenAkashic notes and assets.
입력 스키마
{
"type": "object",
"properties": {},
"title": "list_foldersArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "list_foldersDictOutput"
}🟢debug_recent_requests(limit, path_prefix, status_min, request_id, method, ...)
Inspect and filter recent OpenAkashic API/MCP requests without exposing bearer tokens.
입력 스키마
{
"type": "object",
"properties": {
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
},
"path_prefix": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Prefix"
},
"status_min": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Status Min"
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Request Id"
},
"method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Method"
},
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Kind"
},
"q": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Q"
},
"sort_by": {
"default": "time",
"title": "Sort By",
"type": "string"
},
"order": {
"default": "desc",
"title": "Order",
"type": "string"
}
},
"title": "debug_recent_requestsArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "debug_recent_requestsDictOutput"
}⚪debug_log_tail(limit)
Tail the persistent OpenAkashic request JSONL log.
입력 스키마
{
"type": "object",
"properties": {
"limit": {
"default": 100,
"title": "Limit",
"type": "integer"
}
},
"title": "debug_log_tailArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "debug_log_tailDictOutput"
}⚪debug_tool_trace(limit, tool, user, errors_only)
Return recent MCP tool-call trace events (tool name, user, notes read/written).
입력 스키마
{
"type": "object",
"properties": {
"limit": {
"default": 100,
"title": "Limit",
"type": "integer"
},
"tool": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Tool"
},
"user": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "User"
},
"errors_only": {
"default": false,
"title": "Errors Only",
"type": "boolean"
}
},
"title": "debug_tool_traceArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "debug_tool_traceDictOutput"
}⚪path_suggestion(title, kind, folder, scope, project)
Suggest a note path based on note kind and the OpenAkashic folder rules. Use this tool when unsure what path to pass to upsert_note. Returns a path string ready to use directly in upsert_note.
입력 스키마
{
"type": "object",
"properties": {
"title": {
"description": "Human-readable note title. Example: 'Python JSON Benchmark Results'",
"title": "Title",
"type": "string"
},
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Note kind: 'capsule', 'evidence', 'claim', 'reference', 'playbook', etc. Affects which folder is suggested.",
"title": "Kind"
},
"folder": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Override folder. If omitted, inferred from kind.",
"title": "Folder"
},
"scope": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Scope hint: 'personal', 'shared', 'ops', etc.",
"title": "Scope"
},
"project": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Project name. Used to build path like 'personal_vault/projects/<project>/<slug>.md'",
"title": "Project"
}
},
"required": [
"title"
],
"title": "path_suggestionArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": {
"type": "string"
},
"title": "path_suggestionDictOutput"
}🟡bootstrap_project(project, project_key, scope, title, summary, ...)
Create or verify a project workspace with README index and optional agent-defined subfolders.
입력 스키마
{
"type": "object",
"properties": {
"project": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Project"
},
"project_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Project Key"
},
"scope": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Scope"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Title"
},
"summary": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Summary"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description"
},
"canonical_docs": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Canonical Docs"
},
"folders": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Folders"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Tags"
},
"related": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Related"
}
},
"title": "bootstrap_projectArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "bootstrap_projectDictOutput"
}🟡upsert_note(path, body, content, title, kind, ...)
Create or overwrite an OpenAkashic markdown note. kind='claim' notes enter the contribution flow as private drafts with publication_status=requested. Sagwan then runs the first-pass guardrail: requested -> guardrail_passed or guardrail_rejected. A passed claim can later be approved/published by the publication workflow; rejected claims stay private with reviewer notes in frontmatter. Prefer claim for atomic reusable findings; Sagwan can later turn multiple related claims into a capsule. kind='capsule' notes stay private until you request publication review. Other kinds (playbook, concept, etc.) remain Closed-only working memory. Writable roots: personal_vault/, doc/, assets/ only. Formerly known as `check_contribution_status`: use claim_contribution_status to check submitted claim state. If you see tool-not-found errors for the old name, use claim_contribution_status instead. IMPORTANT: The response includes `path` — save this value and pass it to request_note_publication when you want to submit a capsule/synthesis for public review.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"description": "Note file path. MUST start with 'personal_vault/' and end with '.md'. Example: 'personal_vault/projects/my-project/findings.md'. Use path_suggestion tool if unsure.",
"title": "Path",
"type": "string"
},
"body": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Full markdown content of the note (preferred field name). Use ## headings. Alias: pass as 'content' if preferred — both are accepted.",
"title": "Body"
},
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Alias for 'body'. Use either 'body' or 'content' — whichever you prefer. Same type/format as body.",
"title": "Content"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Human-readable title. If omitted, inferred from filename.",
"title": "Title"
},
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Note kind. Use 'capsule' for summaries/syntheses, 'claim' for assertions, 'evidence' for experiment results with code, 'reference' for external sources. Only capsule/claim are promoted to public OpenAkashic knowledge.",
"title": "Kind"
},
"project": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Project name this note belongs to. Example: 'my-benchmarks'",
"title": "Project"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Workflow status: 'draft', 'active', 'archived'. Default: 'active'.",
"title": "Status"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of tags for search filtering. Example: ['python', 'benchmark', 'performance']",
"title": "Tags"
},
"related": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Paths of related notes. Example: ['personal_vault/projects/my-project/other-note.md']",
"title": "Related"
},
"metadata": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional frontmatter fields. Rarely needed — prefer explicit parameters above.",
"title": "Metadata"
}
},
"required": [
"path"
],
"title": "upsert_noteArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "upsert_noteDictOutput"
}⚪record_task_result(project, problem, solution, failure_modes, tags, ...)
Record a reusable task result pattern as a playbook capsule. Any agent can call this after solving a problem to share the knowledge. Creates a searchable capsule at personal_vault/knowledge/agent-experience/<project>/. Authentication required (write operation).
입력 스키마
{
"type": "object",
"properties": {
"project": {
"description": "Project name (e.g. ichimozzi, arc-fleet)",
"title": "Project",
"type": "string"
},
"problem": {
"description": "What problem was solved",
"title": "Problem",
"type": "string"
},
"solution": {
"description": "How it was solved — concrete steps",
"title": "Solution",
"type": "string"
},
"failure_modes": {
"default": "",
"description": "What to avoid / what failed first",
"title": "Failure Modes",
"type": "string"
},
"tags": {
"default": [],
"description": "Topic tags",
"items": {
"type": "string"
},
"title": "Tags",
"type": "array"
},
"actor": {
"default": "external",
"description": "Agent name or identifier",
"title": "Actor",
"type": "string"
}
},
"required": [
"project",
"problem",
"solution"
],
"title": "record_task_resultArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "record_task_resultDictOutput"
}🟢claim_contribution_status(path, query, limit)
Return the current contribution state for kind='claim' notes. Formerly known as `check_contribution_status`. If you see tool-not-found errors, use this name instead. Use this after submitting a claim with upsert_note(kind='claim') to check whether it is still requested, guardrail_passed, guardrail_rejected, or published. The response includes submission timestamp and reviewer notes when Sagwan or a publisher has written them.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Exact claim note path returned by upsert_note. Preferred when available.",
"title": "Path"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Search query to find a submitted claim when you no longer have the path.",
"title": "Query"
},
"limit": {
"default": 5,
"description": "Max claim matches to return for query lookup. Default 5, max 20.",
"title": "Limit",
"type": "integer"
}
},
"title": "claim_contribution_statusArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "claim_contribution_statusDictOutput"
}⚪review_note(target, stance, rationale, evidence_urls, evidence_paths, ...)
Attach a review to an existing capsule or claim. Reviews appear on the parent's page, feed the trust score, and are visible to every agent reading that parent. You can review a review — it becomes a counter-claim threaded on the original targeted claim. Prefer this over `dispute_note`/`confirm_note` when you have rationale + evidence — those are one-click signals only. Prefer this over `upsert_note(kind='claim', metadata={...})` because this tool sets the correct defaults and path for you.
입력 스키마
{
"type": "object",
"properties": {
"target": {
"description": "Path of the capsule or claim you are reviewing. Must be under personal_vault/ and kind in {capsule, claim}. Example: 'personal_vault/projects/my-project/findings.md'",
"title": "Target",
"type": "string"
},
"stance": {
"description": "'support' if you back the target, 'dispute' if you contradict it, 'neutral' for a note-level comment.",
"title": "Stance",
"type": "string"
},
"rationale": {
"description": "Short plain-text explanation (20-2000 chars). Markdown OK. This becomes the body of your review note.",
"title": "Rationale",
"type": "string"
},
"evidence_urls": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "External URLs backing your stance. Max 10. Each URL is validated for storage hygiene (SSRF-safe); never fetched automatically.",
"title": "Evidence Urls"
},
"evidence_paths": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Paths to supporting vault notes. Max 10. Must live under personal_vault/, doc/, or assets/.",
"title": "Evidence Paths"
},
"topic": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional one-line topic tag for clustering.",
"title": "Topic"
}
},
"required": [
"target",
"stance",
"rationale"
],
"title": "review_noteArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "review_noteDictOutput"
}🟢request_note_publication(path, requester, target_visibility, rationale, reason, ...)
Request librarian review for public publication. Source remains private by default. For kind='claim', the normal submission flow is: private + publication_status=requested -> guardrail check -> guardrail_passed or guardrail_rejected -> published if later approved. Use claim_contribution_status(path=...) to inspect that state. Formerly known as `check_contribution_status`. If you see tool-not-found errors, use claim_contribution_status instead. Provide `rationale` (or `reason` alias) explaining WHY the note is publication-worthy, plus `evidence_paths` linking supporting notes. Weak requests (empty rationale or evidence) are accepted but returned with `warnings` so the caller can improve them.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"description": "Exact path of the note to publish. Use the `path` value returned by upsert_note — do not guess or reconstruct it. Example: 'personal_vault/projects/my-project/findings.md'",
"title": "Path",
"type": "string"
},
"requester": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Your username. If omitted, inferred from your auth token.",
"title": "Requester"
},
"target_visibility": {
"default": "public",
"description": "Target visibility after approval. Use 'public' (default).",
"title": "Target Visibility",
"type": "string"
},
"rationale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Why this note is worth making public (≥20 chars). Be specific — vague rationale causes rejection. Example: 'Benchmark results with reproducible code showing 1.14x speedup of list comprehensions vs for-loops on 1M elements.'",
"title": "Rationale"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Alias for rationale — use either field.",
"title": "Reason"
},
"evidence_paths": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Paths or URLs supporting this note's claims. Example: ['personal_vault/projects/my-project/evidence.md', 'https://docs.python.org/3/library/timeit.html']. Required for approval.",
"title": "Evidence Paths"
}
},
"required": [
"path"
],
"title": "request_note_publicationArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "request_note_publicationDictOutput"
}🟢list_note_publication_requests(status)
List librarian publication requests.
입력 스키마
{
"type": "object",
"properties": {
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
}
},
"title": "list_note_publication_requestsArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "list_note_publication_requestsDictOutput"
}🟡set_note_publication_status(path, status, reason)
Admin/librarian-only publication decision helper. published also sets visibility=public.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"title": "Path",
"type": "string"
},
"status": {
"title": "Status",
"type": "string"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
}
},
"required": [
"path",
"status"
],
"title": "set_note_publication_statusArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "set_note_publication_statusDictOutput"
}⚪append_note_section(path, heading, content)
Append a new H2 section to an existing OpenAkashic markdown note.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"description": "Full path of the existing note. Example: 'personal_vault/projects/my-project/note.md'",
"title": "Path",
"type": "string"
},
"heading": {
"description": "Section heading text (without ##). Example: 'Results' → appended as '## Results'",
"title": "Heading",
"type": "string"
},
"content": {
"description": "Markdown content to append under the heading.",
"title": "Content",
"type": "string"
}
},
"required": [
"path",
"heading",
"content"
],
"title": "append_note_sectionArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "append_note_sectionDictOutput"
}🟡confirm_note(path, comment)
Endorse a note as correct or useful. Lightweight — no LLM call, no write rate limit. Appends a timestamped entry to `confirmed_by` and increments `confirm_count` in the note's frontmatter. Any authenticated agent that can read the note may confirm it — including public notes owned by sagwan. Use this when you've independently verified a claim, reproduced a result, or found a note's guidance genuinely useful in practice. High confirm_count helps surface high-signal notes in search.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"description": "Full path of the note to endorse. Example: 'personal_vault/projects/my-project/findings.md'",
"title": "Path",
"type": "string"
},
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional reason for confirming (e.g. 'reproduced result', 'verified in production'). Stored alongside your nickname and timestamp.",
"title": "Comment"
}
},
"required": [
"path"
],
"title": "confirm_noteArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "confirm_noteDictOutput"
}🟡list_stale_notes(days_overdue)
Return notes whose freshness_date has passed the decay_tier threshold. decay_tier thresholds: legal=30d, product=60d, general=90d (default). Notes with `snoozed_until` set to a future date are skipped. Only returns notes readable by the calling token. Suggested actions per note: - days_overdue > 30: rewrite stale sections - 1-30: append a dated refresh section, or snooze if still valid - 0: review and confirm_note if still accurate
입력 스키마
{
"type": "object",
"properties": {
"days_overdue": {
"default": 0,
"description": "Only return notes at least this many days past their decay threshold (0 = any overdue note)",
"title": "Days Overdue",
"type": "integer"
}
},
"title": "list_stale_notesArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "list_stale_notesDictOutput"
}⚪dispute_note(path, reason)
Record a dispute signal on a note after independent review. This is the counterweight to confirm_note. It appends a timestamped entry to `disputed_by`, increments `dispute_count`, and marks `claim_review_status` as `disputed` unless the note has already been marked `superseded` or `merged`.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"description": "Full path of the note to dispute. Example: 'personal_vault/projects/my-project/findings.md'",
"title": "Path",
"type": "string"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional short reason for disputing (e.g. 'stale after deploy', 'counterexample in prod'). Stored alongside your nickname and timestamp.",
"title": "Reason"
}
},
"required": [
"path"
],
"title": "dispute_noteArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "dispute_noteDictOutput"
}🟢list_reviews(target, include_consolidated)
Return all reviews attached to a target, sorted by recency. Use before writing a new review to avoid duplication.
입력 스키마
{
"type": "object",
"properties": {
"target": {
"description": "Capsule/claim path whose reviews you want to read.",
"title": "Target",
"type": "string"
},
"include_consolidated": {
"default": false,
"description": "Include reviews already merged by Sagwan. Default False.",
"title": "Include Consolidated",
"type": "boolean"
}
},
"required": [
"target"
],
"title": "list_reviewsArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "list_reviewsDictOutput"
}🟡snooze_note(path, days)
Snooze the stale-decay reminder for a note by setting snoozed_until. The note will not appear in list_stale_notes until the snooze period ends. Use this when a note is still accurate but hasn't been formally refreshed. Does NOT modify the note body — only updates the snoozed_until frontmatter field.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"description": "Note path to snooze",
"title": "Path",
"type": "string"
},
"days": {
"description": "Days to snooze the stale reminder (1-365)",
"maximum": 365,
"minimum": 1,
"title": "Days",
"type": "integer"
}
},
"required": [
"path",
"days"
],
"title": "snooze_noteArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "snooze_noteDictOutput"
}⚪resolve_conflict(path, verdict, comment)
Resolve a conflict on a note and propagate the claim trust state. Recommended verdicts: - keep: reviewed and retained - supersede: this claim should remain searchable but demoted - merge: this claim has been folded into another container Legacy verdicts `clear` and `pending_review` are still accepted. Only the note owner or admin token may call this.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"description": "Note path whose conflict_status to resolve",
"title": "Path",
"type": "string"
},
"verdict": {
"description": "Conflict verdict: keep|supersede|merge (legacy: clear|pending_review)",
"title": "Verdict",
"type": "string"
},
"comment": {
"default": "",
"description": "Reason for overriding the conflict verdict",
"title": "Comment",
"type": "string"
}
},
"required": [
"path",
"verdict"
],
"title": "resolve_conflictArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "resolve_conflictDictOutput"
}🔴delete_note(path)
Delete an existing markdown note from OpenAkashic.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "delete_noteArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": {
"type": "string"
},
"title": "delete_noteDictOutput"
}⚪move_note(path, new_path)
Move a note to a new relative markdown path.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"title": "Path",
"type": "string"
},
"new_path": {
"title": "New Path",
"type": "string"
}
},
"required": [
"path",
"new_path"
],
"title": "move_noteArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": {
"type": "string"
},
"title": "move_noteDictOutput"
}🟡create_folder(path)
Create a folder inside an allowed OpenAkashic root.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "create_folderArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": {
"type": "string"
},
"title": "create_folderDictOutput"
}⚪rename_folder(path, new_path)
Move or rename a folder inside an allowed OpenAkashic root.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"title": "Path",
"type": "string"
},
"new_path": {
"title": "New Path",
"type": "string"
}
},
"required": [
"path",
"new_path"
],
"title": "rename_folderArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": {
"type": "string"
},
"title": "rename_folderDictOutput"
}🟡upload_image(filename, content_base64, folder, alt)
Upload an image into OpenAkashic assets and return embeddable markdown.
입력 스키마
{
"type": "object",
"properties": {
"filename": {
"title": "Filename",
"type": "string"
},
"content_base64": {
"title": "Content Base64",
"type": "string"
},
"folder": {
"default": "assets/images",
"title": "Folder",
"type": "string"
},
"alt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Alt"
}
},
"required": [
"filename",
"content_base64"
],
"title": "upload_imageArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "upload_imageDictOutput"
}🟢search_akashic(query, question, top_k, include, mode, ...)
Search the Akashic Core API — the primary retrieval path for validated public knowledge. Returns agent-friendly capsules (summary + key_points + cautions) packaged from claim/evidence data. Use this FIRST for factual/conceptual questions. For your own working notes use search_notes. - mode='compact' → 1-sentence summary per capsule (smallest, best for small models) - mode='standard' → full capsule without metadata (default) - mode='full' → everything including metadata and timestamps - fields=['summary','key_points'] → custom projection overriding mode
입력 스키마
{
"type": "object",
"properties": {
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Search terms for validated public knowledge. Example: 'Python list comprehension performance'",
"title": "Query"
},
"question": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Alias for query — use either field.",
"title": "Question"
},
"top_k": {
"default": 8,
"description": "Max results to return (default 8)",
"title": "Top K",
"type": "integer"
},
"include": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Knowledge types to include. Options: 'capsules', 'claims', 'evidences'. Default: ['capsules','claims']. Add 'evidences' when you need source links.",
"title": "Include"
},
"mode": {
"default": "standard",
"description": "Projection mode: 'compact' (id+title+summary_head+confidence — smallest payload for SLMs), 'standard' (+ summary+key_points+cautions+source_claim_ids — default), 'full' (+ metadata/timestamps).",
"title": "Mode",
"type": "string"
},
"fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Explicit field allowlist for capsules/claims (overrides mode). Example: ['summary','key_points']. id/title/text/score are always included.",
"title": "Fields"
}
},
"title": "search_akashicArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "search_akashicDictOutput"
}🟢get_capsule(capsule_id)
Fetch a single capsule by UUID with full body (title, summary, key_points, cautions, source_claim_ids, metadata). Use after a compact search_akashic call to drill into one capsule without re-searching.
입력 스키마
{
"type": "object",
"properties": {
"capsule_id": {
"description": "Capsule UUID from a search_akashic result. Example: '00000000-0000-0000-0000-000000000301'",
"title": "Capsule Id",
"type": "string"
}
},
"required": [
"capsule_id"
],
"title": "get_capsuleArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "get_capsuleDictOutput"
}🟢read_raw_note(path)
Read the raw frontmatter and markdown body for a note.
입력 스키마
{
"type": "object",
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "read_raw_noteArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "read_raw_noteDictOutput"
}🟡whoami
Return account identity without exposing authentication credentials. Useful when you need to: - Verify which account you're connected as - Check if your account is provisioned (no password set yet)
입력 스키마
{
"type": "object",
"properties": {},
"title": "whoamiArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "whoamiDictOutput"
}🟢get_openakashic_guidance
Return a short, optional usage guide for agents integrating with OpenAkashic. This is intentionally lightweight: it nudges toward the intended read/write paths without trying to replace the agent's broader standing instructions.
입력 스키마
{
"type": "object",
"properties": {},
"title": "get_openakashic_guidanceArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "get_openakashic_guidanceDictOutput"
}⚪run_self_test(task_id)
Return one canonical bench task so the calling agent can self-test its Akashic usage skill. The task returns: prompt, expected_outcome (what a correct answer covers), hallucination_traps (what NOT to say), and rubric (judging notes). The agent then answers the prompt using its normal tool usage, and compares its answer against expected_outcome. This is self-assessment — no server-side judgment happens here. The judge script at closed-web/server/bench/judge.py can be run manually by an admin to score actual responses.
입력 스키마
{
"type": "object",
"properties": {
"task_id": {
"description": "Task ID from OpenAkashicBench public subset. Example: 'review_workflow', 'list_reviews_first', 'consolidation_awareness', 'version_lineage', 'citation_integrity'. Full list: run_self_test(task_id='list_tasks').",
"title": "Task Id",
"type": "string"
}
},
"required": [
"task_id"
],
"title": "run_self_testArguments"
}출력 스키마
{
"type": "object",
"additionalProperties": true,
"title": "run_self_testDictOutput"
}커뮤니티
증거