Skip to content

PKM Capture

Single-step entrypoint for adding anything to the personal knowledge system.

When to use

  • "Save this for later" / "capture this" / "add to PKM".
  • Pasting a snippet that should not stay in chat history.
  • Recording something said in a meeting that's worth keeping.

What you produce

  • One AnyType Inbox object with classification, capture source, and content.
  • Optionally an Idea, Event, Person, or Project object if classification is high-confidence.
  • One audit-log entry per write.

MCP tools used

  • mcp__anytype__API-list-spaces — resolve space ID by name
  • mcp__anytype__API-create-object — create Inbox entry and any upgraded object
  • mcp__anytype__API-update-object — write result_ref back to the Inbox entry after upgrade

Procedure

  1. Capture content. Verbatim from the user input or selection.
  2. Determine data classification — required (SPB-01).
  3. If unclear, ask before writing.
  4. Default for ambiguous private notes: private_sensitive.
  5. Choose target Space (layout):
  6. Resolve space ID by calling mcp__anytype__API-list-spaces — do not hardcode IDs.
  7. Default for agent-driven writes: Agent · LLM wiki.
  8. Job hunt Space: MCP write only after explicit user approval in this chat for that capture.
  9. Sensitive · Human only: never read or write via MCP; if the capture clearly belongs there (offer, NDA detail, comp), tell the user to paste it in Anytype manually.
  10. Create Inbox object via mcp__anytype__API-create-object:
  11. type_key: inbox
  12. Properties to set (per inbox-entry.schema.json):
    • captured_at (date) — now
    • capture_source (select) — one of: chat, clipboard, email, voice, manual ⚠️ Use capture_source, NOT source — the source key is reserved by AnyType's built-in URL property.
    • content (text) — captured text
    • data_classification (select) — private_sensitive / internal / low_sensitive
    • processed (checkbox) — false
  13. Use the agent-scoped key (never user key, SPB-02/SPB-03).
  14. Confidence-based classification:
  15. If classifier confidence > 0.85 for one of (Task, Person, Event, Idea, Project), create a second object of that type:
    • Task → type_key: task (use pkm-task skill procedure for field population)
    • Indicators: imperative phrasing ("I need to", "follow up with", "send X by"), explicit deadlines, words like "action item", "TODO", "commit to"
    • Set task_source: chat; set due_date if mentioned
    • Person → type_key: person
    • Event → type_key: event
    • Idea → type_key: idea
    • Project → type_key: pkm_project ⚠️ NOT project (that's the built-in type)
  16. Else leave as inbox; user can classify later.
  17. Write result_ref back to Inbox (only if step 5 created a new object):
  18. Call mcp__anytype__API-update-object on the Inbox object.
  19. Set result_ref (objects) to the ID of the newly created object.
  20. Set processed (checkbox) to true.
  21. Audit log: append a row to audit-log.md (SPB-12).
  22. Action: write for the Inbox creation; classify if upgraded.
  23. Mirror to wiki? Only if classification is low_sensitive or internal AND the user opts in. Default: Anytype only.

Anti-patterns

  • Don't write to Anytype without a classification.
  • Don't reuse the user-level AnyType key.
  • Don't echo the captured content into a cloud model context if it's private_sensitive.
  • Don't use MCP against Sensitive · Human only for any operation.
  • Don't auto-classify with confidence < 0.85 — leave to inbox.
  • Don't use type_key: project — use pkm_project.
  • Don't use property key source on Inbox — use capture_source.
  • Don't use property key source on Task — use task_source.

Compatibility

  • Requires AnyType Local API key (agent-scoped) injected via env var.
  • Requires the anytype MCP server to be configured.
  • Local-only network egress.