Remember Contacts
SkillDocs & knowledgeConsolidate contacts from email, calendar, chat history, vCards, and LinkedIn exports into persistent memory.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Remember Contacts skill
What this skill tells your AI
The instructions your AI receives, as published by markmhendrickson/neotoma in skills/remember-contacts/SKILL.md and read by ahel’s review.
Consolidate contacts from multiple sources — email, calendar, chat, vCards, LinkedIn exports — into Neotoma memory. Deduplicates by name and email to build a unified contact graph.
When to use
When the user wants to build a persistent, deduplicated contact list from various data sources.
Prerequisites
Run the ensure-neotoma skill first if Neotoma is not yet installed or configured in your current harness.
Supported sources
| Source | Format | Method |
|---|---|---|
| Gmail/IMAP headers | Email MCP (extract sender/recipient) | |
| Calendar | Event attendees | Calendar MCP |
| vCards | .vcf files | File read |
| CSV export | File read | |
| Chat history | Conversation participants | File read |
| Manual | User-stated contacts | Chat extraction |
Workflow
Phase 0: Verify Neotoma
Confirm Neotoma MCP is connected (call get_session_identity).
Phase 1: Identify sources
- Ask the user which sources to pull contacts from:
- Email (requires email MCP)
- Calendar (requires calendar MCP)
- vCard file
- LinkedIn export CSV
- Chat history files
- For MCP-based sources, verify the relevant MCP is configured.
Phase 2: Collect and deduplicate
- Email MCP: extract unique sender/recipient pairs from recent emails.
- Calendar MCP: extract attendees from recent events.
- vCard files: parse
.vcffiles for name, email, phone, organization. - LinkedIn CSV: parse the connections export for name, title, company, email.
- Chat history: extract participants from conversation files.
Before storing each contact, check for existing records:
- Search by email address first (most unique).
- Search by name if no email match.
- If a match exists, use
correctto update with new fields rather than creating a duplicate.
Phase 3: Preview and confirm
Present the consolidated contact list:
- Total contacts found per source
- Duplicates detected and merged
- New contacts to be created Ask for confirmation before storing.
Phase 4: Store contacts
Store each contact as a contact entity with all available fields:
name,email,phone,organization,title,rolesource_fileordata_sourcefor provenancesource_quotewith the relevant snippet when extracting from text
Link contacts to each other or to the user where relationships are apparent (e.g. same company, frequent email correspondents).
Phase 5: Report results
Summarize:
- Contacts stored (new + updated)
- Sources used
- Top organizations or groups
- Offer follow-up: "Want to enrich these contacts with recent email context?"
Do not
- Create duplicate contacts — always deduplicate by email, then by name.
- Import contacts without user confirmation.
- Store sensitive contact details in chat replies beyond what answering requires.
Signals
- GitHub stars
- 32
- Forks
- 3
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
remember-contacts- Source
- github.com/markmhendrickson/neotoma