PKM Person¶
Creates or updates person profiles in AnyType with rich org context — role, relationship to the user, org affiliations, and links to other people and projects. Designed for rapid org mapping during onboarding.
When to use¶
- "Add person: Sarah Chen, my skip-level at Stord, VP Engineering"
- "Update my notes on Marcus — he owns the infra team"
- "Link Alice to the platform project"
- "Who do I know at this company?" (query mode)
- Post-meeting: capturing new contacts or updating relationship notes
What you produce¶
- One AnyType
personobject (created or updated) - Org links between people (reports-to, peer-of) where provided
- Audit-log entry per write
MCP tools used¶
mcp__anytype__API-list-spaces— resolve space IDmcp__anytype__API-search-space— check if person already exists before creatingmcp__anytype__API-create-object— create new person profilemcp__anytype__API-get-object— read current fields before updatemcp__anytype__API-update-object— update fields or add relations
Procedure¶
Add a new person¶
- Check for existing record via
mcp__anytype__API-search-space(search by name,type_key: person). - If a match exists, switch to Update flow rather than creating a duplicate.
- Classify data — people records are
internalby default; setprivate_sensitiveif the person is part of a sensitive hire, negotiation, or NDA context. - ⚠️ Never write a person record to Sensitive · Human only space via MCP. Tell the user to add it manually there.
- Resolve space ID via
mcp__anytype__API-list-spaces. Default: Agent · LLM wiki. - Create the person object via
mcp__anytype__API-create-object: type_key:person- Fields (per
schemas/object-types.md):name— requiredorg_role— job title / role at their org (e.g. "VP Engineering")relationship_type— one of:manager,peer,report,stakeholder,recruiter,external,unknownnotes— any context from the conversation (how you met, what they own, agreements made)last_contact— today's date if met todaytags— org name, team, domain (e.g.["stord", "infrastructure"])
- Optional:
aliasesfor nicknames or handles - Link to projects if the person is associated with a known project:
- Read existing
affiliationsfirst; merge before writing. - Wire org edges if the conversation revealed who they report to or work with:
reports_to(directed) — set on this person, pointing at their manager. Do not mirror onto the manager.collaborates_with(symmetric) — set on both ends.- Delegate the actual write to
pkm-link(handles read-before-write merge, directionality, and audit). These two relations are what populate the organization graph for export. - Audit log — append to
knowledge/anytype-integration/runbooks/audit-log.md. Action:write. Object type:Person.
Update an existing person¶
- Find via
mcp__anytype__API-search-space. If multiple matches, ask to disambiguate. - Read via
mcp__anytype__API-get-object— capture current field values. - Update via
mcp__anytype__API-update-object: - Append to
notes— do not replace existing notes. - Merge any new
affiliationsortagswith existing values. - Update
last_contactto today if this was a recent interaction. - Audit log — action:
write. Rationale: what changed and why.
Link two people (org structure)¶
Use this when capturing reporting relationships or team membership. These person↔person edges are the data the Glovebox graph tier analyzes, so capture them deliberately.
- Find both person objects via
mcp__anytype__API-search-space. - Choose the relation:
- Reporting line →
reports_to, directed: set on the report, pointing at the manager. Never mirror it (mirroring inverts the org chart). - Peer / working relationship →
collaborates_with, symmetric: set on both ends. - Use
pkm-linkskill to establish the relation — it handles read-before-write merge, directionality, and audit logging. - Add a note on each person's profile summarizing the relationship if useful context.
Query people¶
- Use
mcp__anytype__API-search-spacewithtype_key: personand optional tag filter. - Return: name, org_role, relationship_type, last_contact.
- Useful prompts: "who do I know at Stord?", "list my direct reports", "who owns the security team?"
Org mapping workflow (new job onboarding)¶
During the first weeks of a new job, run this skill after each meeting or introduction:
- One
pkm-personcall per new contact (or update if they exist). - Note
relationship_typeandorg_roleimmediately while fresh. - At end of week: run a query to review the full person graph; use
pkm-linkto wire any missingreports_to(reporting lines) andcollaborates_with(peer) edges. Complete edges are what make the graph worth exporting. - Tag people by team so queries like "who's on the platform team?" work.
Privacy note: real colleague data should not be exported to a cloud-bound graph analysis until the Glovebox graph tier's no-leak contract is proven against synthetic data. Capturing colleagues in your local AnyType is fine (it stays local/encrypted); exporting the graph for agentic analysis is the step that waits on the contract. See
docs/use-cases/graph-relationship-analysis.md.
Anti-patterns¶
- Don't create duplicate person records — always search first.
- Don't overwrite
affiliations,tags, ornotes— read and merge. - Don't mirror
reports_to— it is directed (report → manager). Usecollaborates_withfor symmetric peer links. - Don't conflate
relationship_type(to the user) withreports_to/collaborates_with(person↔person) — they answer different questions. - Don't write to Sensitive · Human only space via MCP.
- Don't capture comp, offer, or NDA-related details about a person here — direct the user to Sensitive space for manual entry.
- Don't set
relationship_typetounknownif you can reasonably infer it from context.
Compatibility¶
- Requires AnyType Local API key (agent-scoped) injected via env var.
- Requires the
anytypeMCP server configured. - Local-only network egress.