{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_m5rku6bghd5z","handle":"mob-demo","url":"https://wellknown.network/agents/mob-demo","links":{"self":"https://wellknown.network/agents/mob-demo/record.json","html":"https://wellknown.network/agents/mob-demo","markdown":"https://wellknown.network/agents/mob-demo/record.md","api":"https://wellknown.network/api/v1/agents/mob-demo","status":"https://wellknown.network/api/v1/agents/mob-demo/status","claim":"https://wellknown.network/agents/mob-demo/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/mob-demo/claim.json","badge":"https://wellknown.network/agents/mob-demo/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/mob-demo/history","tools":"https://wellknown.network/api/v1/agents/mob-demo/tools"},"ard":{"identifier":"urn:air:demo.mobcrm.au:server:mob-demo","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Mob (Demo)","summary":"Ephemeral no-signup demo of Mob, an AI-first personal CRM you run in natural language.","description":"Ephemeral no-signup demo of Mob, an AI-first personal CRM you run in natural language.","publisher":{"name":"benkaiser","url":null},"homepage":"https://mobcrm.au/","repository":"https://github.com/benkaiser/mob-mcp-crm","version":"0.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://demo.mobcrm.au/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-03T06:24:01.691573Z","publishedAt":"2026-08-03T06:24:01.691573Z","registryName":"io.github.benkaiser/mob-demo"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"productivity.tasks","name":"Tasks & To-do","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"productivity.crm","name":"CRM & Sales","confidence":0.807,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.54,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.525,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":0.51,"provenance":"derived"}],"categories":["communication","content","infra","productivity","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-10-10T01:25:20.234Z","lastProbedAt":"2026-10-10T01:25:20.234Z","statusComputedAt":"2026-10-10T01:26:13.683Z","reliability30d":{"probes":54,"successRate":0.9815,"p50Ms":419,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":54,"ok":53,"authBoundaryOk":0,"serviceOk":53,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T01:25:20.234Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":438,"error":null,"detail":{"tools":[{"name":"contact_create","description":"Create a new contact with basic info"},{"name":"contact_get","description":"Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes,"},{"name":"contact_update","description":"Update contact fields"},{"name":"contact_delete","description":"Soft-delete a contact (can be restored later)"},{"name":"contact_restore","description":"Restore a soft-deleted contact"},{"name":"contact_list","description":"List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results."},{"name":"contact_merge","description":"Merge two contacts into one. All child records (notes, activities, tags, etc.) from the secondary contact are moved to the primary. The secondary contact is sof"},{"name":"contact_find_duplicates","description":"Scan for potential duplicate contacts using name, email, and phone matching. Returns pairs of contacts that may be duplicates with the reason for the match."},{"name":"contact_method_manage","description":"Add, update, or remove a contact method (email, phone, social handle, etc.)"},{"name":"address_manage","description":"Add, update, or remove an address for a contact"},{"name":"food_preferences_get","description":"Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)"},{"name":"food_preferences_upsert","description":"Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes."},{"name":"custom_field_manage","description":"Add, update, or remove a custom field on a contact"},{"name":"relationship_manage","description":"Add, update, remove, or list relationships between contacts.\n• action=\"add\": Create a relationship between two contacts. Automatically creates the inverse relat"},{"name":"note_manage","description":"Create, update, delete, or restore a note for a contact.\n• action=\"create\": Add a new note. Requires contact_id and body. Optional title, is_pinned.\n• action=\"u"},{"name":"note_list","description":"List and search notes. When contact_id is provided alone, lists that contact's notes (pinned first). Add query, tag_name, is_pinned, or omit contact_id to searc"},{"name":"tag_manage","description":"Manage tags and contact tagging.\n• action=\"list\": List all tags for the authenticated user. No additional fields required.\n• action=\"create\": Create a new tag ("},{"name":"activity_manage","description":"Create, get, update, delete, or restore an activity/interaction.\n• action=\"create\": Record a new activity. Requires type, occurred_at, participant_contact_ids. "},{"name":"activity_list","description":"List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names."},{"name":"activity_type_manage","description":"List, create, update, or delete custom activity types"},{"name":"life_event_manage","description":"Create, list, update, delete, or restore life events for a contact.\n• action=\"create\": Record a new life event. Requires contact_id, event_type, and title. Opti"},{"name":"contact_timeline","description":"Get the unified timeline for a contact (activities, life events, notes, etc.)"},{"name":"reminder_manage","description":"Create, list, update, complete, snooze, delete, or restore reminders.\n• action=\"create\": Create a reminder for a contact. Requires contact_id, title, and remind"},{"name":"notification_list","description":"List notifications (newest first)"},{"name":"notification_create","description":"Create a custom notification"},{"name":"notification_read","description":"Mark notification(s) as read. Pass id for a single notification, or all=true for all."},{"name":"gift_manage","description":"Create, update, delete, or restore a gift for a contact.\n• action=\"create\": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name,"},{"name":"gift_list","description":"List gifts, optionally filtered by contact, status, or direction. Add occasion, sort_by, sort_order, or omit contact_id for a cross-contact gift tracker with su"},{"name":"debt_manage","description":"Create, list, update, settle, delete, restore, or summarize debts.\n• action=\"create\": Track a new debt. Requires contact_id, amount, direction. Optional currenc"},{"name":"task_manage","description":"Create, list, update, complete, delete, or restore tasks.\n• action=\"create\": Create a task. Requires title. Optional description, contact_id, due_date, priority"},{"name":"data_export","description":"Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)"},{"name":"data_statistics","description":"Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)"},{"name":"prime","description":"IMPORTANT: Call this tool FIRST before any other tool to load essential CRM context. Returns a compact overview of the user's data: the current user's identity "},{"name":"upcoming_birthdays","description":"Find contacts with birthdays coming up within a time window or in a specific month. Returns contacts sorted by soonest birthday first, with age calculations whe"},{"name":"global_search","description":"Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fiel"},{"name":"contacts_needing_attention","description":"Find contacts you haven't interacted with recently - the \"who am I neglecting?\" query. Returns contacts sorted by staleness (longest since last interaction firs"},{"name":"upcoming_reminders","description":"Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming)."},{"name":"batch_create_contacts","description":"Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"batch_tag_contacts","description":"Apply a tag to multiple contacts in one call. Max 50 contacts per batch. Creates the tag if it doesn't exist. Runs atomically - if any item fails, the entire ba"},{"name":"batch_create_activities","description":"Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"manage_settings","description":"View or update your personal settings (timezone, birthday reminder preferences).\n• action=\"get\": View current settings\n• action=\"update\": Update settings. Optio"},{"name":"manage_push_notifications","description":"Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts."}],"toolCount":42,"toolsHash":"73583a21bf9d212f1ca6f621efba72ed0a83b617f66bdd658d140219d14230a6","serverName":"mob-crm","capabilities":["prompts","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T19:27:44.776Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":445,"error":null,"detail":{"tools":[{"name":"contact_create","description":"Create a new contact with basic info"},{"name":"contact_get","description":"Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes,"},{"name":"contact_update","description":"Update contact fields"},{"name":"contact_delete","description":"Soft-delete a contact (can be restored later)"},{"name":"contact_restore","description":"Restore a soft-deleted contact"},{"name":"contact_list","description":"List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results."},{"name":"contact_merge","description":"Merge two contacts into one. All child records (notes, activities, tags, etc.) from the secondary contact are moved to the primary. The secondary contact is sof"},{"name":"contact_find_duplicates","description":"Scan for potential duplicate contacts using name, email, and phone matching. Returns pairs of contacts that may be duplicates with the reason for the match."},{"name":"contact_method_manage","description":"Add, update, or remove a contact method (email, phone, social handle, etc.)"},{"name":"address_manage","description":"Add, update, or remove an address for a contact"},{"name":"food_preferences_get","description":"Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)"},{"name":"food_preferences_upsert","description":"Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes."},{"name":"custom_field_manage","description":"Add, update, or remove a custom field on a contact"},{"name":"relationship_manage","description":"Add, update, remove, or list relationships between contacts.\n• action=\"add\": Create a relationship between two contacts. Automatically creates the inverse relat"},{"name":"note_manage","description":"Create, update, delete, or restore a note for a contact.\n• action=\"create\": Add a new note. Requires contact_id and body. Optional title, is_pinned.\n• action=\"u"},{"name":"note_list","description":"List and search notes. When contact_id is provided alone, lists that contact's notes (pinned first). Add query, tag_name, is_pinned, or omit contact_id to searc"},{"name":"tag_manage","description":"Manage tags and contact tagging.\n• action=\"list\": List all tags for the authenticated user. No additional fields required.\n• action=\"create\": Create a new tag ("},{"name":"activity_manage","description":"Create, get, update, delete, or restore an activity/interaction.\n• action=\"create\": Record a new activity. Requires type, occurred_at, participant_contact_ids. "},{"name":"activity_list","description":"List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names."},{"name":"activity_type_manage","description":"List, create, update, or delete custom activity types"},{"name":"life_event_manage","description":"Create, list, update, delete, or restore life events for a contact.\n• action=\"create\": Record a new life event. Requires contact_id, event_type, and title. Opti"},{"name":"contact_timeline","description":"Get the unified timeline for a contact (activities, life events, notes, etc.)"},{"name":"reminder_manage","description":"Create, list, update, complete, snooze, delete, or restore reminders.\n• action=\"create\": Create a reminder for a contact. Requires contact_id, title, and remind"},{"name":"notification_list","description":"List notifications (newest first)"},{"name":"notification_create","description":"Create a custom notification"},{"name":"notification_read","description":"Mark notification(s) as read. Pass id for a single notification, or all=true for all."},{"name":"gift_manage","description":"Create, update, delete, or restore a gift for a contact.\n• action=\"create\": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name,"},{"name":"gift_list","description":"List gifts, optionally filtered by contact, status, or direction. Add occasion, sort_by, sort_order, or omit contact_id for a cross-contact gift tracker with su"},{"name":"debt_manage","description":"Create, list, update, settle, delete, restore, or summarize debts.\n• action=\"create\": Track a new debt. Requires contact_id, amount, direction. Optional currenc"},{"name":"task_manage","description":"Create, list, update, complete, delete, or restore tasks.\n• action=\"create\": Create a task. Requires title. Optional description, contact_id, due_date, priority"},{"name":"data_export","description":"Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)"},{"name":"data_statistics","description":"Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)"},{"name":"prime","description":"IMPORTANT: Call this tool FIRST before any other tool to load essential CRM context. Returns a compact overview of the user's data: the current user's identity "},{"name":"upcoming_birthdays","description":"Find contacts with birthdays coming up within a time window or in a specific month. Returns contacts sorted by soonest birthday first, with age calculations whe"},{"name":"global_search","description":"Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fiel"},{"name":"contacts_needing_attention","description":"Find contacts you haven't interacted with recently - the \"who am I neglecting?\" query. Returns contacts sorted by staleness (longest since last interaction firs"},{"name":"upcoming_reminders","description":"Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming)."},{"name":"batch_create_contacts","description":"Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"batch_tag_contacts","description":"Apply a tag to multiple contacts in one call. Max 50 contacts per batch. Creates the tag if it doesn't exist. Runs atomically - if any item fails, the entire ba"},{"name":"batch_create_activities","description":"Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"manage_settings","description":"View or update your personal settings (timezone, birthday reminder preferences).\n• action=\"get\": View current settings\n• action=\"update\": Update settings. Optio"},{"name":"manage_push_notifications","description":"Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts."}],"toolCount":42,"toolsHash":"73583a21bf9d212f1ca6f621efba72ed0a83b617f66bdd658d140219d14230a6","serverName":"mob-crm","capabilities":["prompts","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T13:30:37.230Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":415,"error":null,"detail":{"tools":[{"name":"contact_create","description":"Create a new contact with basic info"},{"name":"contact_get","description":"Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes,"},{"name":"contact_update","description":"Update contact fields"},{"name":"contact_delete","description":"Soft-delete a contact (can be restored later)"},{"name":"contact_restore","description":"Restore a soft-deleted contact"},{"name":"contact_list","description":"List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results."},{"name":"contact_merge","description":"Merge two contacts into one. All child records (notes, activities, tags, etc.) from the secondary contact are moved to the primary. The secondary contact is sof"},{"name":"contact_find_duplicates","description":"Scan for potential duplicate contacts using name, email, and phone matching. Returns pairs of contacts that may be duplicates with the reason for the match."},{"name":"contact_method_manage","description":"Add, update, or remove a contact method (email, phone, social handle, etc.)"},{"name":"address_manage","description":"Add, update, or remove an address for a contact"},{"name":"food_preferences_get","description":"Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)"},{"name":"food_preferences_upsert","description":"Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes."},{"name":"custom_field_manage","description":"Add, update, or remove a custom field on a contact"},{"name":"relationship_manage","description":"Add, update, remove, or list relationships between contacts.\n• action=\"add\": Create a relationship between two contacts. Automatically creates the inverse relat"},{"name":"note_manage","description":"Create, update, delete, or restore a note for a contact.\n• action=\"create\": Add a new note. Requires contact_id and body. Optional title, is_pinned.\n• action=\"u"},{"name":"note_list","description":"List and search notes. When contact_id is provided alone, lists that contact's notes (pinned first). Add query, tag_name, is_pinned, or omit contact_id to searc"},{"name":"tag_manage","description":"Manage tags and contact tagging.\n• action=\"list\": List all tags for the authenticated user. No additional fields required.\n• action=\"create\": Create a new tag ("},{"name":"activity_manage","description":"Create, get, update, delete, or restore an activity/interaction.\n• action=\"create\": Record a new activity. Requires type, occurred_at, participant_contact_ids. "},{"name":"activity_list","description":"List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names."},{"name":"activity_type_manage","description":"List, create, update, or delete custom activity types"},{"name":"life_event_manage","description":"Create, list, update, delete, or restore life events for a contact.\n• action=\"create\": Record a new life event. Requires contact_id, event_type, and title. Opti"},{"name":"contact_timeline","description":"Get the unified timeline for a contact (activities, life events, notes, etc.)"},{"name":"reminder_manage","description":"Create, list, update, complete, snooze, delete, or restore reminders.\n• action=\"create\": Create a reminder for a contact. Requires contact_id, title, and remind"},{"name":"notification_list","description":"List notifications (newest first)"},{"name":"notification_create","description":"Create a custom notification"},{"name":"notification_read","description":"Mark notification(s) as read. Pass id for a single notification, or all=true for all."},{"name":"gift_manage","description":"Create, update, delete, or restore a gift for a contact.\n• action=\"create\": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name,"},{"name":"gift_list","description":"List gifts, optionally filtered by contact, status, or direction. Add occasion, sort_by, sort_order, or omit contact_id for a cross-contact gift tracker with su"},{"name":"debt_manage","description":"Create, list, update, settle, delete, restore, or summarize debts.\n• action=\"create\": Track a new debt. Requires contact_id, amount, direction. Optional currenc"},{"name":"task_manage","description":"Create, list, update, complete, delete, or restore tasks.\n• action=\"create\": Create a task. Requires title. Optional description, contact_id, due_date, priority"},{"name":"data_export","description":"Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)"},{"name":"data_statistics","description":"Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)"},{"name":"prime","description":"IMPORTANT: Call this tool FIRST before any other tool to load essential CRM context. Returns a compact overview of the user's data: the current user's identity "},{"name":"upcoming_birthdays","description":"Find contacts with birthdays coming up within a time window or in a specific month. Returns contacts sorted by soonest birthday first, with age calculations whe"},{"name":"global_search","description":"Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fiel"},{"name":"contacts_needing_attention","description":"Find contacts you haven't interacted with recently - the \"who am I neglecting?\" query. Returns contacts sorted by staleness (longest since last interaction firs"},{"name":"upcoming_reminders","description":"Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming)."},{"name":"batch_create_contacts","description":"Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"batch_tag_contacts","description":"Apply a tag to multiple contacts in one call. Max 50 contacts per batch. Creates the tag if it doesn't exist. Runs atomically - if any item fails, the entire ba"},{"name":"batch_create_activities","description":"Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"manage_settings","description":"View or update your personal settings (timezone, birthday reminder preferences).\n• action=\"get\": View current settings\n• action=\"update\": Update settings. Optio"},{"name":"manage_push_notifications","description":"Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts."}],"toolCount":42,"toolsHash":"73583a21bf9d212f1ca6f621efba72ed0a83b617f66bdd658d140219d14230a6","serverName":"mob-crm","capabilities":["prompts","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T06:23:02.302Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":439,"error":null,"detail":{"tools":[{"name":"contact_create","description":"Create a new contact with basic info"},{"name":"contact_get","description":"Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes,"},{"name":"contact_update","description":"Update contact fields"},{"name":"contact_delete","description":"Soft-delete a contact (can be restored later)"},{"name":"contact_restore","description":"Restore a soft-deleted contact"},{"name":"contact_list","description":"List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results."},{"name":"contact_merge","description":"Merge two contacts into one. All child records (notes, activities, tags, etc.) from the secondary contact are moved to the primary. The secondary contact is sof"},{"name":"contact_find_duplicates","description":"Scan for potential duplicate contacts using name, email, and phone matching. Returns pairs of contacts that may be duplicates with the reason for the match."},{"name":"contact_method_manage","description":"Add, update, or remove a contact method (email, phone, social handle, etc.)"},{"name":"address_manage","description":"Add, update, or remove an address for a contact"},{"name":"food_preferences_get","description":"Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)"},{"name":"food_preferences_upsert","description":"Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes."},{"name":"custom_field_manage","description":"Add, update, or remove a custom field on a contact"},{"name":"relationship_manage","description":"Add, update, remove, or list relationships between contacts.\n• action=\"add\": Create a relationship between two contacts. Automatically creates the inverse relat"},{"name":"note_manage","description":"Create, update, delete, or restore a note for a contact.\n• action=\"create\": Add a new note. Requires contact_id and body. Optional title, is_pinned.\n• action=\"u"},{"name":"note_list","description":"List and search notes. When contact_id is provided alone, lists that contact's notes (pinned first). Add query, tag_name, is_pinned, or omit contact_id to searc"},{"name":"tag_manage","description":"Manage tags and contact tagging.\n• action=\"list\": List all tags for the authenticated user. No additional fields required.\n• action=\"create\": Create a new tag ("},{"name":"activity_manage","description":"Create, get, update, delete, or restore an activity/interaction.\n• action=\"create\": Record a new activity. Requires type, occurred_at, participant_contact_ids. "},{"name":"activity_list","description":"List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names."},{"name":"activity_type_manage","description":"List, create, update, or delete custom activity types"},{"name":"life_event_manage","description":"Create, list, update, delete, or restore life events for a contact.\n• action=\"create\": Record a new life event. Requires contact_id, event_type, and title. Opti"},{"name":"contact_timeline","description":"Get the unified timeline for a contact (activities, life events, notes, etc.)"},{"name":"reminder_manage","description":"Create, list, update, complete, snooze, delete, or restore reminders.\n• action=\"create\": Create a reminder for a contact. Requires contact_id, title, and remind"},{"name":"notification_list","description":"List notifications (newest first)"},{"name":"notification_create","description":"Create a custom notification"},{"name":"notification_read","description":"Mark notification(s) as read. Pass id for a single notification, or all=true for all."},{"name":"gift_manage","description":"Create, update, delete, or restore a gift for a contact.\n• action=\"create\": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name,"},{"name":"gift_list","description":"List gifts, optionally filtered by contact, status, or direction. Add occasion, sort_by, sort_order, or omit contact_id for a cross-contact gift tracker with su"},{"name":"debt_manage","description":"Create, list, update, settle, delete, restore, or summarize debts.\n• action=\"create\": Track a new debt. Requires contact_id, amount, direction. Optional currenc"},{"name":"task_manage","description":"Create, list, update, complete, delete, or restore tasks.\n• action=\"create\": Create a task. Requires title. Optional description, contact_id, due_date, priority"},{"name":"data_export","description":"Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)"},{"name":"data_statistics","description":"Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)"},{"name":"prime","description":"IMPORTANT: Call this tool FIRST before any other tool to load essential CRM context. Returns a compact overview of the user's data: the current user's identity "},{"name":"upcoming_birthdays","description":"Find contacts with birthdays coming up within a time window or in a specific month. Returns contacts sorted by soonest birthday first, with age calculations whe"},{"name":"global_search","description":"Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fiel"},{"name":"contacts_needing_attention","description":"Find contacts you haven't interacted with recently - the \"who am I neglecting?\" query. Returns contacts sorted by staleness (longest since last interaction firs"},{"name":"upcoming_reminders","description":"Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming)."},{"name":"batch_create_contacts","description":"Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"batch_tag_contacts","description":"Apply a tag to multiple contacts in one call. Max 50 contacts per batch. Creates the tag if it doesn't exist. Runs atomically - if any item fails, the entire ba"},{"name":"batch_create_activities","description":"Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"manage_settings","description":"View or update your personal settings (timezone, birthday reminder preferences).\n• action=\"get\": View current settings\n• action=\"update\": Update settings. Optio"},{"name":"manage_push_notifications","description":"Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts."}],"toolCount":42,"toolsHash":"73583a21bf9d212f1ca6f621efba72ed0a83b617f66bdd658d140219d14230a6","serverName":"mob-crm","capabilities":["prompts","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T00:25:38.201Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":452,"error":null,"detail":{"tools":[{"name":"contact_create","description":"Create a new contact with basic info"},{"name":"contact_get","description":"Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes,"},{"name":"contact_update","description":"Update contact fields"},{"name":"contact_delete","description":"Soft-delete a contact (can be restored later)"},{"name":"contact_restore","description":"Restore a soft-deleted contact"},{"name":"contact_list","description":"List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results."},{"name":"contact_merge","description":"Merge two contacts into one. All child records (notes, activities, tags, etc.) from the secondary contact are moved to the primary. The secondary contact is sof"},{"name":"contact_find_duplicates","description":"Scan for potential duplicate contacts using name, email, and phone matching. Returns pairs of contacts that may be duplicates with the reason for the match."},{"name":"contact_method_manage","description":"Add, update, or remove a contact method (email, phone, social handle, etc.)"},{"name":"address_manage","description":"Add, update, or remove an address for a contact"},{"name":"food_preferences_get","description":"Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)"},{"name":"food_preferences_upsert","description":"Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes."},{"name":"custom_field_manage","description":"Add, update, or remove a custom field on a contact"},{"name":"relationship_manage","description":"Add, update, remove, or list relationships between contacts.\n• action=\"add\": Create a relationship between two contacts. Automatically creates the inverse relat"},{"name":"note_manage","description":"Create, update, delete, or restore a note for a contact.\n• action=\"create\": Add a new note. Requires contact_id and body. Optional title, is_pinned.\n• action=\"u"},{"name":"note_list","description":"List and search notes. When contact_id is provided alone, lists that contact's notes (pinned first). Add query, tag_name, is_pinned, or omit contact_id to searc"},{"name":"tag_manage","description":"Manage tags and contact tagging.\n• action=\"list\": List all tags for the authenticated user. No additional fields required.\n• action=\"create\": Create a new tag ("},{"name":"activity_manage","description":"Create, get, update, delete, or restore an activity/interaction.\n• action=\"create\": Record a new activity. Requires type, occurred_at, participant_contact_ids. "},{"name":"activity_list","description":"List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names."},{"name":"activity_type_manage","description":"List, create, update, or delete custom activity types"},{"name":"life_event_manage","description":"Create, list, update, delete, or restore life events for a contact.\n• action=\"create\": Record a new life event. Requires contact_id, event_type, and title. Opti"},{"name":"contact_timeline","description":"Get the unified timeline for a contact (activities, life events, notes, etc.)"},{"name":"reminder_manage","description":"Create, list, update, complete, snooze, delete, or restore reminders.\n• action=\"create\": Create a reminder for a contact. Requires contact_id, title, and remind"},{"name":"notification_list","description":"List notifications (newest first)"},{"name":"notification_create","description":"Create a custom notification"},{"name":"notification_read","description":"Mark notification(s) as read. Pass id for a single notification, or all=true for all."},{"name":"gift_manage","description":"Create, update, delete, or restore a gift for a contact.\n• action=\"create\": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name,"},{"name":"gift_list","description":"List gifts, optionally filtered by contact, status, or direction. Add occasion, sort_by, sort_order, or omit contact_id for a cross-contact gift tracker with su"},{"name":"debt_manage","description":"Create, list, update, settle, delete, restore, or summarize debts.\n• action=\"create\": Track a new debt. Requires contact_id, amount, direction. Optional currenc"},{"name":"task_manage","description":"Create, list, update, complete, delete, or restore tasks.\n• action=\"create\": Create a task. Requires title. Optional description, contact_id, due_date, priority"},{"name":"data_export","description":"Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)"},{"name":"data_statistics","description":"Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)"},{"name":"prime","description":"IMPORTANT: Call this tool FIRST before any other tool to load essential CRM context. Returns a compact overview of the user's data: the current user's identity "},{"name":"upcoming_birthdays","description":"Find contacts with birthdays coming up within a time window or in a specific month. Returns contacts sorted by soonest birthday first, with age calculations whe"},{"name":"global_search","description":"Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fiel"},{"name":"contacts_needing_attention","description":"Find contacts you haven't interacted with recently - the \"who am I neglecting?\" query. Returns contacts sorted by staleness (longest since last interaction firs"},{"name":"upcoming_reminders","description":"Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming)."},{"name":"batch_create_contacts","description":"Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"batch_tag_contacts","description":"Apply a tag to multiple contacts in one call. Max 50 contacts per batch. Creates the tag if it doesn't exist. Runs atomically - if any item fails, the entire ba"},{"name":"batch_create_activities","description":"Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"manage_settings","description":"View or update your personal settings (timezone, birthday reminder preferences).\n• action=\"get\": View current settings\n• action=\"update\": Update settings. Optio"},{"name":"manage_push_notifications","description":"Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts."}],"toolCount":42,"toolsHash":"73583a21bf9d212f1ca6f621efba72ed0a83b617f66bdd658d140219d14230a6","serverName":"mob-crm","capabilities":["prompts","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T17:27:50.344Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":445,"error":null,"detail":{"tools":[{"name":"contact_create","description":"Create a new contact with basic info"},{"name":"contact_get","description":"Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes,"},{"name":"contact_update","description":"Update contact fields"},{"name":"contact_delete","description":"Soft-delete a contact (can be restored later)"},{"name":"contact_restore","description":"Restore a soft-deleted contact"},{"name":"contact_list","description":"List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results."},{"name":"contact_merge","description":"Merge two contacts into one. All child records (notes, activities, tags, etc.) from the secondary contact are moved to the primary. The secondary contact is sof"},{"name":"contact_find_duplicates","description":"Scan for potential duplicate contacts using name, email, and phone matching. Returns pairs of contacts that may be duplicates with the reason for the match."},{"name":"contact_method_manage","description":"Add, update, or remove a contact method (email, phone, social handle, etc.)"},{"name":"address_manage","description":"Add, update, or remove an address for a contact"},{"name":"food_preferences_get","description":"Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)"},{"name":"food_preferences_upsert","description":"Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes."},{"name":"custom_field_manage","description":"Add, update, or remove a custom field on a contact"},{"name":"relationship_manage","description":"Add, update, remove, or list relationships between contacts.\n• action=\"add\": Create a relationship between two contacts. Automatically creates the inverse relat"},{"name":"note_manage","description":"Create, update, delete, or restore a note for a contact.\n• action=\"create\": Add a new note. Requires contact_id and body. Optional title, is_pinned.\n• action=\"u"},{"name":"note_list","description":"List and search notes. When contact_id is provided alone, lists that contact's notes (pinned first). Add query, tag_name, is_pinned, or omit contact_id to searc"},{"name":"tag_manage","description":"Manage tags and contact tagging.\n• action=\"list\": List all tags for the authenticated user. No additional fields required.\n• action=\"create\": Create a new tag ("},{"name":"activity_manage","description":"Create, get, update, delete, or restore an activity/interaction.\n• action=\"create\": Record a new activity. Requires type, occurred_at, participant_contact_ids. "},{"name":"activity_list","description":"List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names."},{"name":"activity_type_manage","description":"List, create, update, or delete custom activity types"},{"name":"life_event_manage","description":"Create, list, update, delete, or restore life events for a contact.\n• action=\"create\": Record a new life event. Requires contact_id, event_type, and title. Opti"},{"name":"contact_timeline","description":"Get the unified timeline for a contact (activities, life events, notes, etc.)"},{"name":"reminder_manage","description":"Create, list, update, complete, snooze, delete, or restore reminders.\n• action=\"create\": Create a reminder for a contact. Requires contact_id, title, and remind"},{"name":"notification_list","description":"List notifications (newest first)"},{"name":"notification_create","description":"Create a custom notification"},{"name":"notification_read","description":"Mark notification(s) as read. Pass id for a single notification, or all=true for all."},{"name":"gift_manage","description":"Create, update, delete, or restore a gift for a contact.\n• action=\"create\": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name,"},{"name":"gift_list","description":"List gifts, optionally filtered by contact, status, or direction. Add occasion, sort_by, sort_order, or omit contact_id for a cross-contact gift tracker with su"},{"name":"debt_manage","description":"Create, list, update, settle, delete, restore, or summarize debts.\n• action=\"create\": Track a new debt. Requires contact_id, amount, direction. Optional currenc"},{"name":"task_manage","description":"Create, list, update, complete, delete, or restore tasks.\n• action=\"create\": Create a task. Requires title. Optional description, contact_id, due_date, priority"},{"name":"data_export","description":"Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)"},{"name":"data_statistics","description":"Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)"},{"name":"prime","description":"IMPORTANT: Call this tool FIRST before any other tool to load essential CRM context. Returns a compact overview of the user's data: the current user's identity "},{"name":"upcoming_birthdays","description":"Find contacts with birthdays coming up within a time window or in a specific month. Returns contacts sorted by soonest birthday first, with age calculations whe"},{"name":"global_search","description":"Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fiel"},{"name":"contacts_needing_attention","description":"Find contacts you haven't interacted with recently - the \"who am I neglecting?\" query. Returns contacts sorted by staleness (longest since last interaction firs"},{"name":"upcoming_reminders","description":"Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming)."},{"name":"batch_create_contacts","description":"Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"batch_tag_contacts","description":"Apply a tag to multiple contacts in one call. Max 50 contacts per batch. Creates the tag if it doesn't exist. Runs atomically - if any item fails, the entire ba"},{"name":"batch_create_activities","description":"Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"manage_settings","description":"View or update your personal settings (timezone, birthday reminder preferences).\n• action=\"get\": View current settings\n• action=\"update\": Update settings. Optio"},{"name":"manage_push_notifications","description":"Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts."}],"toolCount":42,"toolsHash":"73583a21bf9d212f1ca6f621efba72ed0a83b617f66bdd658d140219d14230a6","serverName":"mob-crm","capabilities":["prompts","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T11:22:28.893Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":415,"error":null,"detail":{"tools":[{"name":"contact_create","description":"Create a new contact with basic info"},{"name":"contact_get","description":"Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes,"},{"name":"contact_update","description":"Update contact fields"},{"name":"contact_delete","description":"Soft-delete a contact (can be restored later)"},{"name":"contact_restore","description":"Restore a soft-deleted contact"},{"name":"contact_list","description":"List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results."},{"name":"contact_merge","description":"Merge two contacts into one. All child records (notes, activities, tags, etc.) from the secondary contact are moved to the primary. The secondary contact is sof"},{"name":"contact_find_duplicates","description":"Scan for potential duplicate contacts using name, email, and phone matching. Returns pairs of contacts that may be duplicates with the reason for the match."},{"name":"contact_method_manage","description":"Add, update, or remove a contact method (email, phone, social handle, etc.)"},{"name":"address_manage","description":"Add, update, or remove an address for a contact"},{"name":"food_preferences_get","description":"Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)"},{"name":"food_preferences_upsert","description":"Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes."},{"name":"custom_field_manage","description":"Add, update, or remove a custom field on a contact"},{"name":"relationship_manage","description":"Add, update, remove, or list relationships between contacts.\n• action=\"add\": Create a relationship between two contacts. Automatically creates the inverse relat"},{"name":"note_manage","description":"Create, update, delete, or restore a note for a contact.\n• action=\"create\": Add a new note. Requires contact_id and body. Optional title, is_pinned.\n• action=\"u"},{"name":"note_list","description":"List and search notes. When contact_id is provided alone, lists that contact's notes (pinned first). Add query, tag_name, is_pinned, or omit contact_id to searc"},{"name":"tag_manage","description":"Manage tags and contact tagging.\n• action=\"list\": List all tags for the authenticated user. No additional fields required.\n• action=\"create\": Create a new tag ("},{"name":"activity_manage","description":"Create, get, update, delete, or restore an activity/interaction.\n• action=\"create\": Record a new activity. Requires type, occurred_at, participant_contact_ids. "},{"name":"activity_list","description":"List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names."},{"name":"activity_type_manage","description":"List, create, update, or delete custom activity types"},{"name":"life_event_manage","description":"Create, list, update, delete, or restore life events for a contact.\n• action=\"create\": Record a new life event. Requires contact_id, event_type, and title. Opti"},{"name":"contact_timeline","description":"Get the unified timeline for a contact (activities, life events, notes, etc.)"},{"name":"reminder_manage","description":"Create, list, update, complete, snooze, delete, or restore reminders.\n• action=\"create\": Create a reminder for a contact. Requires contact_id, title, and remind"},{"name":"notification_list","description":"List notifications (newest first)"},{"name":"notification_create","description":"Create a custom notification"},{"name":"notification_read","description":"Mark notification(s) as read. Pass id for a single notification, or all=true for all."},{"name":"gift_manage","description":"Create, update, delete, or restore a gift for a contact.\n• action=\"create\": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name,"},{"name":"gift_list","description":"List gifts, optionally filtered by contact, status, or direction. Add occasion, sort_by, sort_order, or omit contact_id for a cross-contact gift tracker with su"},{"name":"debt_manage","description":"Create, list, update, settle, delete, restore, or summarize debts.\n• action=\"create\": Track a new debt. Requires contact_id, amount, direction. Optional currenc"},{"name":"task_manage","description":"Create, list, update, complete, delete, or restore tasks.\n• action=\"create\": Create a task. Requires title. Optional description, contact_id, due_date, priority"},{"name":"data_export","description":"Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)"},{"name":"data_statistics","description":"Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)"},{"name":"prime","description":"IMPORTANT: Call this tool FIRST before any other tool to load essential CRM context. Returns a compact overview of the user's data: the current user's identity "},{"name":"upcoming_birthdays","description":"Find contacts with birthdays coming up within a time window or in a specific month. Returns contacts sorted by soonest birthday first, with age calculations whe"},{"name":"global_search","description":"Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fiel"},{"name":"contacts_needing_attention","description":"Find contacts you haven't interacted with recently - the \"who am I neglecting?\" query. Returns contacts sorted by staleness (longest since last interaction firs"},{"name":"upcoming_reminders","description":"Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming)."},{"name":"batch_create_contacts","description":"Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"batch_tag_contacts","description":"Apply a tag to multiple contacts in one call. Max 50 contacts per batch. Creates the tag if it doesn't exist. Runs atomically - if any item fails, the entire ba"},{"name":"batch_create_activities","description":"Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"manage_settings","description":"View or update your personal settings (timezone, birthday reminder preferences).\n• action=\"get\": View current settings\n• action=\"update\": Update settings. Optio"},{"name":"manage_push_notifications","description":"Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts."}],"toolCount":42,"toolsHash":"73583a21bf9d212f1ca6f621efba72ed0a83b617f66bdd658d140219d14230a6","serverName":"mob-crm","capabilities":["prompts","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T04:26:25.302Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":515,"error":null,"detail":{"tools":[{"name":"contact_create","description":"Create a new contact with basic info"},{"name":"contact_get","description":"Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes,"},{"name":"contact_update","description":"Update contact fields"},{"name":"contact_delete","description":"Soft-delete a contact (can be restored later)"},{"name":"contact_restore","description":"Restore a soft-deleted contact"},{"name":"contact_list","description":"List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results."},{"name":"contact_merge","description":"Merge two contacts into one. All child records (notes, activities, tags, etc.) from the secondary contact are moved to the primary. The secondary contact is sof"},{"name":"contact_find_duplicates","description":"Scan for potential duplicate contacts using name, email, and phone matching. Returns pairs of contacts that may be duplicates with the reason for the match."},{"name":"contact_method_manage","description":"Add, update, or remove a contact method (email, phone, social handle, etc.)"},{"name":"address_manage","description":"Add, update, or remove an address for a contact"},{"name":"food_preferences_get","description":"Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)"},{"name":"food_preferences_upsert","description":"Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes."},{"name":"custom_field_manage","description":"Add, update, or remove a custom field on a contact"},{"name":"relationship_manage","description":"Add, update, remove, or list relationships between contacts.\n• action=\"add\": Create a relationship between two contacts. Automatically creates the inverse relat"},{"name":"note_manage","description":"Create, update, delete, or restore a note for a contact.\n• action=\"create\": Add a new note. Requires contact_id and body. Optional title, is_pinned.\n• action=\"u"},{"name":"note_list","description":"List and search notes. When contact_id is provided alone, lists that contact's notes (pinned first). Add query, tag_name, is_pinned, or omit contact_id to searc"},{"name":"tag_manage","description":"Manage tags and contact tagging.\n• action=\"list\": List all tags for the authenticated user. No additional fields required.\n• action=\"create\": Create a new tag ("},{"name":"activity_manage","description":"Create, get, update, delete, or restore an activity/interaction.\n• action=\"create\": Record a new activity. Requires type, occurred_at, participant_contact_ids. "},{"name":"activity_list","description":"List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names."},{"name":"activity_type_manage","description":"List, create, update, or delete custom activity types"},{"name":"life_event_manage","description":"Create, list, update, delete, or restore life events for a contact.\n• action=\"create\": Record a new life event. Requires contact_id, event_type, and title. Opti"},{"name":"contact_timeline","description":"Get the unified timeline for a contact (activities, life events, notes, etc.)"},{"name":"reminder_manage","description":"Create, list, update, complete, snooze, delete, or restore reminders.\n• action=\"create\": Create a reminder for a contact. Requires contact_id, title, and remind"},{"name":"notification_list","description":"List notifications (newest first)"},{"name":"notification_create","description":"Create a custom notification"},{"name":"notification_read","description":"Mark notification(s) as read. Pass id for a single notification, or all=true for all."},{"name":"gift_manage","description":"Create, update, delete, or restore a gift for a contact.\n• action=\"create\": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name,"},{"name":"gift_list","description":"List gifts, optionally filtered by contact, status, or direction. Add occasion, sort_by, sort_order, or omit contact_id for a cross-contact gift tracker with su"},{"name":"debt_manage","description":"Create, list, update, settle, delete, restore, or summarize debts.\n• action=\"create\": Track a new debt. Requires contact_id, amount, direction. Optional currenc"},{"name":"task_manage","description":"Create, list, update, complete, delete, or restore tasks.\n• action=\"create\": Create a task. Requires title. Optional description, contact_id, due_date, priority"},{"name":"data_export","description":"Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)"},{"name":"data_statistics","description":"Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)"},{"name":"prime","description":"IMPORTANT: Call this tool FIRST before any other tool to load essential CRM context. Returns a compact overview of the user's data: the current user's identity "},{"name":"upcoming_birthdays","description":"Find contacts with birthdays coming up within a time window or in a specific month. Returns contacts sorted by soonest birthday first, with age calculations whe"},{"name":"global_search","description":"Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fiel"},{"name":"contacts_needing_attention","description":"Find contacts you haven't interacted with recently - the \"who am I neglecting?\" query. Returns contacts sorted by staleness (longest since last interaction firs"},{"name":"upcoming_reminders","description":"Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming)."},{"name":"batch_create_contacts","description":"Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"batch_tag_contacts","description":"Apply a tag to multiple contacts in one call. Max 50 contacts per batch. Creates the tag if it doesn't exist. Runs atomically - if any item fails, the entire ba"},{"name":"batch_create_activities","description":"Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"manage_settings","description":"View or update your personal settings (timezone, birthday reminder preferences).\n• action=\"get\": View current settings\n• action=\"update\": Update settings. Optio"},{"name":"manage_push_notifications","description":"Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts."}],"toolCount":42,"toolsHash":"73583a21bf9d212f1ca6f621efba72ed0a83b617f66bdd658d140219d14230a6","serverName":"mob-crm","capabilities":["prompts","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T22:24:30.986Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":412,"error":null,"detail":{"tools":[{"name":"contact_create","description":"Create a new contact with basic info"},{"name":"contact_get","description":"Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes,"},{"name":"contact_update","description":"Update contact fields"},{"name":"contact_delete","description":"Soft-delete a contact (can be restored later)"},{"name":"contact_restore","description":"Restore a soft-deleted contact"},{"name":"contact_list","description":"List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results."},{"name":"contact_merge","description":"Merge two contacts into one. All child records (notes, activities, tags, etc.) from the secondary contact are moved to the primary. The secondary contact is sof"},{"name":"contact_find_duplicates","description":"Scan for potential duplicate contacts using name, email, and phone matching. Returns pairs of contacts that may be duplicates with the reason for the match."},{"name":"contact_method_manage","description":"Add, update, or remove a contact method (email, phone, social handle, etc.)"},{"name":"address_manage","description":"Add, update, or remove an address for a contact"},{"name":"food_preferences_get","description":"Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)"},{"name":"food_preferences_upsert","description":"Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes."},{"name":"custom_field_manage","description":"Add, update, or remove a custom field on a contact"},{"name":"relationship_manage","description":"Add, update, remove, or list relationships between contacts.\n• action=\"add\": Create a relationship between two contacts. Automatically creates the inverse relat"},{"name":"note_manage","description":"Create, update, delete, or restore a note for a contact.\n• action=\"create\": Add a new note. Requires contact_id and body. Optional title, is_pinned.\n• action=\"u"},{"name":"note_list","description":"List and search notes. When contact_id is provided alone, lists that contact's notes (pinned first). Add query, tag_name, is_pinned, or omit contact_id to searc"},{"name":"tag_manage","description":"Manage tags and contact tagging.\n• action=\"list\": List all tags for the authenticated user. No additional fields required.\n• action=\"create\": Create a new tag ("},{"name":"activity_manage","description":"Create, get, update, delete, or restore an activity/interaction.\n• action=\"create\": Record a new activity. Requires type, occurred_at, participant_contact_ids. "},{"name":"activity_list","description":"List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names."},{"name":"activity_type_manage","description":"List, create, update, or delete custom activity types"},{"name":"life_event_manage","description":"Create, list, update, delete, or restore life events for a contact.\n• action=\"create\": Record a new life event. Requires contact_id, event_type, and title. Opti"},{"name":"contact_timeline","description":"Get the unified timeline for a contact (activities, life events, notes, etc.)"},{"name":"reminder_manage","description":"Create, list, update, complete, snooze, delete, or restore reminders.\n• action=\"create\": Create a reminder for a contact. Requires contact_id, title, and remind"},{"name":"notification_list","description":"List notifications (newest first)"},{"name":"notification_create","description":"Create a custom notification"},{"name":"notification_read","description":"Mark notification(s) as read. Pass id for a single notification, or all=true for all."},{"name":"gift_manage","description":"Create, update, delete, or restore a gift for a contact.\n• action=\"create\": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name,"},{"name":"gift_list","description":"List gifts, optionally filtered by contact, status, or direction. Add occasion, sort_by, sort_order, or omit contact_id for a cross-contact gift tracker with su"},{"name":"debt_manage","description":"Create, list, update, settle, delete, restore, or summarize debts.\n• action=\"create\": Track a new debt. Requires contact_id, amount, direction. Optional currenc"},{"name":"task_manage","description":"Create, list, update, complete, delete, or restore tasks.\n• action=\"create\": Create a task. Requires title. Optional description, contact_id, due_date, priority"},{"name":"data_export","description":"Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)"},{"name":"data_statistics","description":"Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)"},{"name":"prime","description":"IMPORTANT: Call this tool FIRST before any other tool to load essential CRM context. Returns a compact overview of the user's data: the current user's identity "},{"name":"upcoming_birthdays","description":"Find contacts with birthdays coming up within a time window or in a specific month. Returns contacts sorted by soonest birthday first, with age calculations whe"},{"name":"global_search","description":"Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fiel"},{"name":"contacts_needing_attention","description":"Find contacts you haven't interacted with recently - the \"who am I neglecting?\" query. Returns contacts sorted by staleness (longest since last interaction firs"},{"name":"upcoming_reminders","description":"Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming)."},{"name":"batch_create_contacts","description":"Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"batch_tag_contacts","description":"Apply a tag to multiple contacts in one call. Max 50 contacts per batch. Creates the tag if it doesn't exist. Runs atomically - if any item fails, the entire ba"},{"name":"batch_create_activities","description":"Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"manage_settings","description":"View or update your personal settings (timezone, birthday reminder preferences).\n• action=\"get\": View current settings\n• action=\"update\": Update settings. Optio"},{"name":"manage_push_notifications","description":"Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts."}],"toolCount":42,"toolsHash":"73583a21bf9d212f1ca6f621efba72ed0a83b617f66bdd658d140219d14230a6","serverName":"mob-crm","capabilities":["prompts","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T15:30:41.423Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":392,"error":null,"detail":{"tools":[{"name":"contact_create","description":"Create a new contact with basic info"},{"name":"contact_get","description":"Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes,"},{"name":"contact_update","description":"Update contact fields"},{"name":"contact_delete","description":"Soft-delete a contact (can be restored later)"},{"name":"contact_restore","description":"Restore a soft-deleted contact"},{"name":"contact_list","description":"List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results."},{"name":"contact_merge","description":"Merge two contacts into one. All child records (notes, activities, tags, etc.) from the secondary contact are moved to the primary. The secondary contact is sof"},{"name":"contact_find_duplicates","description":"Scan for potential duplicate contacts using name, email, and phone matching. Returns pairs of contacts that may be duplicates with the reason for the match."},{"name":"contact_method_manage","description":"Add, update, or remove a contact method (email, phone, social handle, etc.)"},{"name":"address_manage","description":"Add, update, or remove an address for a contact"},{"name":"food_preferences_get","description":"Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)"},{"name":"food_preferences_upsert","description":"Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes."},{"name":"custom_field_manage","description":"Add, update, or remove a custom field on a contact"},{"name":"relationship_manage","description":"Add, update, remove, or list relationships between contacts.\n• action=\"add\": Create a relationship between two contacts. Automatically creates the inverse relat"},{"name":"note_manage","description":"Create, update, delete, or restore a note for a contact.\n• action=\"create\": Add a new note. Requires contact_id and body. Optional title, is_pinned.\n• action=\"u"},{"name":"note_list","description":"List and search notes. When contact_id is provided alone, lists that contact's notes (pinned first). Add query, tag_name, is_pinned, or omit contact_id to searc"},{"name":"tag_manage","description":"Manage tags and contact tagging.\n• action=\"list\": List all tags for the authenticated user. No additional fields required.\n• action=\"create\": Create a new tag ("},{"name":"activity_manage","description":"Create, get, update, delete, or restore an activity/interaction.\n• action=\"create\": Record a new activity. Requires type, occurred_at, participant_contact_ids. "},{"name":"activity_list","description":"List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names."},{"name":"activity_type_manage","description":"List, create, update, or delete custom activity types"},{"name":"life_event_manage","description":"Create, list, update, delete, or restore life events for a contact.\n• action=\"create\": Record a new life event. Requires contact_id, event_type, and title. Opti"},{"name":"contact_timeline","description":"Get the unified timeline for a contact (activities, life events, notes, etc.)"},{"name":"reminder_manage","description":"Create, list, update, complete, snooze, delete, or restore reminders.\n• action=\"create\": Create a reminder for a contact. Requires contact_id, title, and remind"},{"name":"notification_list","description":"List notifications (newest first)"},{"name":"notification_create","description":"Create a custom notification"},{"name":"notification_read","description":"Mark notification(s) as read. Pass id for a single notification, or all=true for all."},{"name":"gift_manage","description":"Create, update, delete, or restore a gift for a contact.\n• action=\"create\": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name,"},{"name":"gift_list","description":"List gifts, optionally filtered by contact, status, or direction. Add occasion, sort_by, sort_order, or omit contact_id for a cross-contact gift tracker with su"},{"name":"debt_manage","description":"Create, list, update, settle, delete, restore, or summarize debts.\n• action=\"create\": Track a new debt. Requires contact_id, amount, direction. Optional currenc"},{"name":"task_manage","description":"Create, list, update, complete, delete, or restore tasks.\n• action=\"create\": Create a task. Requires title. Optional description, contact_id, due_date, priority"},{"name":"data_export","description":"Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)"},{"name":"data_statistics","description":"Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)"},{"name":"prime","description":"IMPORTANT: Call this tool FIRST before any other tool to load essential CRM context. Returns a compact overview of the user's data: the current user's identity "},{"name":"upcoming_birthdays","description":"Find contacts with birthdays coming up within a time window or in a specific month. Returns contacts sorted by soonest birthday first, with age calculations whe"},{"name":"global_search","description":"Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fiel"},{"name":"contacts_needing_attention","description":"Find contacts you haven't interacted with recently - the \"who am I neglecting?\" query. Returns contacts sorted by staleness (longest since last interaction firs"},{"name":"upcoming_reminders","description":"Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming)."},{"name":"batch_create_contacts","description":"Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"batch_tag_contacts","description":"Apply a tag to multiple contacts in one call. Max 50 contacts per batch. Creates the tag if it doesn't exist. Runs atomically - if any item fails, the entire ba"},{"name":"batch_create_activities","description":"Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"manage_settings","description":"View or update your personal settings (timezone, birthday reminder preferences).\n• action=\"get\": View current settings\n• action=\"update\": Update settings. Optio"},{"name":"manage_push_notifications","description":"Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts."}],"toolCount":42,"toolsHash":"73583a21bf9d212f1ca6f621efba72ed0a83b617f66bdd658d140219d14230a6","serverName":"mob-crm","capabilities":["prompts","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"contact_create","description":"Create a new contact with basic info"},{"name":"contact_get","description":"Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes,"},{"name":"contact_update","description":"Update contact fields"},{"name":"contact_delete","description":"Soft-delete a contact (can be restored later)"},{"name":"contact_restore","description":"Restore a soft-deleted contact"},{"name":"contact_list","description":"List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results."},{"name":"contact_merge","description":"Merge two contacts into one. All child records (notes, activities, tags, etc.) from the secondary contact are moved to the primary. The secondary contact is sof"},{"name":"contact_find_duplicates","description":"Scan for potential duplicate contacts using name, email, and phone matching. Returns pairs of contacts that may be duplicates with the reason for the match."},{"name":"contact_method_manage","description":"Add, update, or remove a contact method (email, phone, social handle, etc.)"},{"name":"address_manage","description":"Add, update, or remove an address for a contact"},{"name":"food_preferences_get","description":"Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)"},{"name":"food_preferences_upsert","description":"Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes."},{"name":"custom_field_manage","description":"Add, update, or remove a custom field on a contact"},{"name":"relationship_manage","description":"Add, update, remove, or list relationships between contacts.\n• action=\"add\": Create a relationship between two contacts. Automatically creates the inverse relat"},{"name":"note_manage","description":"Create, update, delete, or restore a note for a contact.\n• action=\"create\": Add a new note. Requires contact_id and body. Optional title, is_pinned.\n• action=\"u"},{"name":"note_list","description":"List and search notes. When contact_id is provided alone, lists that contact's notes (pinned first). Add query, tag_name, is_pinned, or omit contact_id to searc"},{"name":"tag_manage","description":"Manage tags and contact tagging.\n• action=\"list\": List all tags for the authenticated user. No additional fields required.\n• action=\"create\": Create a new tag ("},{"name":"activity_manage","description":"Create, get, update, delete, or restore an activity/interaction.\n• action=\"create\": Record a new activity. Requires type, occurred_at, participant_contact_ids. "},{"name":"activity_list","description":"List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names."},{"name":"activity_type_manage","description":"List, create, update, or delete custom activity types"},{"name":"life_event_manage","description":"Create, list, update, delete, or restore life events for a contact.\n• action=\"create\": Record a new life event. Requires contact_id, event_type, and title. Opti"},{"name":"contact_timeline","description":"Get the unified timeline for a contact (activities, life events, notes, etc.)"},{"name":"reminder_manage","description":"Create, list, update, complete, snooze, delete, or restore reminders.\n• action=\"create\": Create a reminder for a contact. Requires contact_id, title, and remind"},{"name":"notification_list","description":"List notifications (newest first)"},{"name":"notification_create","description":"Create a custom notification"},{"name":"notification_read","description":"Mark notification(s) as read. Pass id for a single notification, or all=true for all."},{"name":"gift_manage","description":"Create, update, delete, or restore a gift for a contact.\n• action=\"create\": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name,"},{"name":"gift_list","description":"List gifts, optionally filtered by contact, status, or direction. Add occasion, sort_by, sort_order, or omit contact_id for a cross-contact gift tracker with su"},{"name":"debt_manage","description":"Create, list, update, settle, delete, restore, or summarize debts.\n• action=\"create\": Track a new debt. Requires contact_id, amount, direction. Optional currenc"},{"name":"task_manage","description":"Create, list, update, complete, delete, or restore tasks.\n• action=\"create\": Create a task. Requires title. Optional description, contact_id, due_date, priority"},{"name":"data_export","description":"Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)"},{"name":"data_statistics","description":"Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)"},{"name":"prime","description":"IMPORTANT: Call this tool FIRST before any other tool to load essential CRM context. Returns a compact overview of the user's data: the current user's identity "},{"name":"upcoming_birthdays","description":"Find contacts with birthdays coming up within a time window or in a specific month. Returns contacts sorted by soonest birthday first, with age calculations whe"},{"name":"global_search","description":"Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fiel"},{"name":"contacts_needing_attention","description":"Find contacts you haven't interacted with recently - the \"who am I neglecting?\" query. Returns contacts sorted by staleness (longest since last interaction firs"},{"name":"upcoming_reminders","description":"Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming)."},{"name":"batch_create_contacts","description":"Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"batch_tag_contacts","description":"Apply a tag to multiple contacts in one call. Max 50 contacts per batch. Creates the tag if it doesn't exist. Runs atomically - if any item fails, the entire ba"},{"name":"batch_create_activities","description":"Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back."},{"name":"manage_settings","description":"View or update your personal settings (timezone, birthday reminder preferences).\n• action=\"get\": View current settings\n• action=\"update\": Update settings. Optio"},{"name":"manage_push_notifications","description":"Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts."}],"package":null,"toolSurface":{"id":"ts_vn9xn2m8u234","endpointId":"ep_n8bz8w2npez3","hash":"73583a21bf9d212f1ca6f621efba72ed0a83b617f66bdd658d140219d14230a6","toolCount":42,"serverName":"mob-crm","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-12T15:25:25.542Z","lastSeenAt":"2026-10-10T01:25:20.244Z","observations":96,"toolNames":["contact_create","contact_get","contact_update","contact_delete","contact_restore","contact_list","contact_merge","contact_find_duplicates","contact_method_manage","address_manage","food_preferences_get","food_preferences_upsert","custom_field_manage","relationship_manage","note_manage","note_list","tag_manage","activity_manage","activity_list","activity_type_manage","life_event_manage","contact_timeline","reminder_manage","notification_list","notification_create","notification_read","gift_manage","gift_list","debt_manage","task_manage","data_export","data_statistics","prime","upcoming_birthdays","global_search","contacts_needing_attention","upcoming_reminders","batch_create_contacts","batch_tag_contacts","batch_create_activities","manage_settings","manage_push_notifications"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_n8bz8w2npez3","url":"https://demo.mobcrm.au/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-08T11:22:28.891Z","auth":{"observedAt":"2026-10-08T11:22:30.382Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://demo.mobcrm.au/.well-known/oauth-protected-resource/mcp","resource":"https://demo.mobcrm.au/mcp","authorizationServers":["https://demo.mobcrm.au"],"scopesSupported":[]},"authorizationServer":{"url":"https://demo.mobcrm.au/.well-known/oauth-authorization-server","issuer":"https://demo.mobcrm.au","grantTypesSupported":["authorization_code"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none","client_secret_post","client_secret_basic"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-08T11:22:31.198Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"demo.mobcrm.au","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-09-15T23:02:47.000Z","validTo":"2026-12-14T23:02:46.000Z","daysToExpiry":65,"sanCount":1,"fingerprint256":"AD:2A:63:CE:36:46:FF:0F:B6:E9:CB:B1:37:65:45:C5:27:E7:EB:DC:D7:88:FD:03:B0:9B:14:19:64:50:82:35"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.benkaiser/mob-demo","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.benkaiser%2Fmob-demo","firstSeenAt":"2026-09-06T10:20:35.203Z","fetchedAt":"2026-10-07T06:23:51.863Z","normalizedAt":"2026-10-07T06:23:51.863Z"}]},"firstSeenAt":"2026-09-06T10:20:35.203Z","updatedAt":"2026-10-10T01:27:13.949Z"}