Servidor MCP

Mob (Demo)

io.github.benkaiser/mob-demo
Productividad Ventas y CRM Público y accesible MCP 2025-11-25

Qué hace este MCP

Manages personal CRM data including contacts, relationships, activities, notes, reminders, gifts, debts, preferences, tasks, searches, and notifications.

activity_list
List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'number', 'description': 'Page number (default: 1)'}, 'type': {'enum': ['phone_call', 'video_call', 'text_message', 'in_person', 'email', 'activity', 'other'], 'type': 'string', 'description': 'Filter by interaction type'}, 'since': {'type': 'string', 'description': 'Show activities since this ISO date (uses activity log mode with participant names)'}, 'per_page': {'type': 'number', 'description': 'Results per page (default: 20)'}, 'days_back': {'type': 'number', 'maximum': 365, 'minimum': 1, 'description': 'Look-back window in days (uses activity log mode with participant names). Ignored if since is provided.'}, 'contact_id': {'type': 'string', 'description': 'Filter by contact ID'}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction by occurred_at (default: desc, only for activity log mode)'}, 'include_deleted': {'type': 'boolean', 'description': 'Include soft-deleted activities in results (default: false)'}}}
activity_manage
Create, get, update, delete, or restore an activity/interaction. • action="create": Record a new activity. Requires type, occurred_at, participant_contact_ids. Optional title, description, duration_minutes, location, activity_type_id. • action="get": Get full details of an activity. Requires id. • action="update": Update an activity. Requires id. Optional type, title, description, occurred_at, duration_minutes, location, participant_contact_ids. • action="delete": Soft-delete an activity. Requires id. • action="restore": Restore a soft-deleted activity. Requires id.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The activity ID (required for "get", "update", "delete", "restore")'}, 'type': {'enum': ['phone_call', 'video_call', 'text_message', 'in_person', 'email', 'activity', 'other'], 'type': 'string', 'description': 'Type of interaction (required for "create", optional for "update")'}, 'title': {'type': 'string', 'description': 'Title (e.g. "Coffee at Blue Bottle")'}, 'action': {'enum': ['create', 'get', 'update', 'delete', 'restore'], 'type': 'string', 'description': 'Action to perform'}, 'location': {'type': 'string', 'description': 'Where it happened'}, 'description': {'type': 'string', 'description': 'Description or notes'}, 'occurred_at': {'type': 'string', 'description': 'When it happened (ISO date/datetime) (required for "create", optional for "update")'}, 'activity_type_id': {'type': 'string', 'description': 'Custom activity type ID'}, 'duration_minutes': {'type': 'number', 'description': 'Duration in minutes'}, 'participant_contact_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Contact IDs of participants (required for "create", optional for "update")'}}}
activity_type_manage
List, create, update, or delete custom activity types
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'Activity type ID (required for "update" and "delete")'}, 'icon': {'type': 'string', 'description': 'Icon identifier'}, 'name': {'type': 'string', 'description': 'Activity type name (required for "create")'}, 'action': {'enum': ['list', 'create', 'update', 'delete'], 'type': 'string', 'description': 'Action to perform'}, 'category': {'type': 'string', 'description': 'Category (e.g. "Food & Drink", "Sports")'}}}
address_manage
Add, update, or remove an address for a contact
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The address ID (required for "update" and "remove")'}, 'city': {'type': 'string', 'description': 'City'}, 'label': {'type': 'string', 'description': 'Label (e.g. "Home", "Work")'}, 'action': {'enum': ['add', 'update', 'remove'], 'type': 'string', 'description': 'Action to perform'}, 'country': {'type': 'string', 'description': 'Country (ISO 3166-1 alpha-2 recommended)'}, 'contact_id': {'type': 'string', 'description': 'The contact ID (required for "add")'}, 'is_primary': {'type': 'boolean', 'description': 'Set as primary address'}, 'postal_code': {'type': 'string', 'description': 'Postal/ZIP code'}, 'street_line_1': {'type': 'string', 'description': 'Street address line 1'}, 'street_line_2': {'type': 'string', 'description': 'Street address line 2'}, 'state_province': {'type': 'string', 'description': 'State or province'}}}
batch_create_activities
Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['activities'], 'properties': {'activities': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'occurred_at', 'participant_contact_ids'], 'properties': {'type': {'enum': ['phone_call', 'video_call', 'text_message', 'in_person', 'email', 'activity', 'other'], 'type': 'string', 'description': 'Type of interaction'}, 'title': {'type': 'string', 'description': 'Title (e.g. "Coffee at Blue Bottle")'}, 'location': {'type': 'string', 'description': 'Where it happened'}, 'description': {'type': 'string', 'description': 'Description or notes'}, 'occurred_at': {'type': 'string', 'description': 'When it happened (ISO date/datetime)'}, 'activity_type_id': {'type': 'string', 'description': 'Custom activity type ID'}, 'duration_minutes': {'type': 'number', 'description': 'Duration in minutes'}, 'participant_contact_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Contact IDs of participants'}}}, 'description': 'Array of activity creation inputs (max 50)'}}}
batch_create_contacts
Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contacts'], 'properties': {'contacts': {'type': 'array', 'items': {'type': 'object', 'required': ['first_name'], 'properties': {'gender': {'type': 'string', 'description': 'Gender'}, 'status': {'enum': ['active', 'archived', 'deceased'], 'type': 'string', 'description': 'Contact status (default: active)'}, 'company': {'type': 'string', 'description': 'Company or organization'}, 'industry': {'type': 'string', 'description': 'Industry'}, 'nickname': {'type': 'string', 'description': 'Nickname'}, 'pronouns': {'type': 'string', 'description': 'Pronouns (e.g. she/her, he/him, they/them)'}, 'job_title': {'type': 'string', 'description': 'Job title'}, 'last_name': {'type': 'string', 'description': 'Last name'}, 'avatar_url': {'type': 'string', 'description': 'Avatar URL'}, 'first_name': {'type': 'string', 'description': 'First name (required)'}, 'work_notes': {'type': 'string', 'description': 'Notes about their work'}, 'is_favorite': {'type': 'boolean', 'description': 'Mark as favorite'}, 'maiden_name': {'type': 'string', 'description': 'Maiden name'}, 'met_at_date': {'type': 'string', 'description': 'Date you met this person (YYYY-MM-DD)'}, 'middle_name': {'type': 'string', 'description': 'Middle name'}, 'birthday_day': {'type': 'number', 'description': 'Birthday day (1-31), used with birthday_mode=month_day'}, 'birthday_date': {'type': 'string', 'description': 'Full birthday date (YYYY-MM-DD), used with birthday_mode=full_date'}, 'birthday_mode': {'enum': ['full_date', 'month_day', 'approximate_age'], 'type': 'string', 'description': 'Birthday mode: full_date (YYYY-MM-DD), month_day (month + day only), or approximate_age (birth year estimate)'}, 'deceased_date': {'type': 'string', 'description': 'Date of death (YYYY-MM-DD)'}, 'birthday_month': {'type': 'number', 'description': 'Birthday month (1-12), used with birthday_mode=month_day'}, 'met_at_location': {'type': 'string', 'description': 'Where you met this person'}, 'met_description': {'type': 'string', 'description': 'Story of how you met'}, 'met_through_contact_id': {'type': 'string', 'description': 'Contact ID of person who introduced you'}, 'birthday_year_approximate': {'type': 'number', 'description': 'Approximate birth year, used with birthday_mode=approximate_age'}}}, 'description': 'Array of contact creation inputs (max 50)'}}}
batch_tag_contacts
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 batch is rolled back.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tag_name', 'contact_ids'], 'properties': {'tag_name': {'type': 'string', 'description': 'Tag name to apply'}, 'contact_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Array of contact IDs to tag (max 50)'}}}
contact_create
Create a new contact with basic info
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['first_name'], 'properties': {'gender': {'type': 'string', 'description': 'Gender'}, 'status': {'enum': ['active', 'archived', 'deceased'], 'type': 'string', 'description': 'Contact status (default: active)'}, 'company': {'type': 'string', 'description': 'Company or organization'}, 'industry': {'type': 'string', 'description': 'Industry'}, 'nickname': {'type': 'string', 'description': 'Nickname'}, 'pronouns': {'type': 'string', 'description': 'Pronouns (e.g. she/her, he/him, they/them)'}, 'job_title': {'type': 'string', 'description': 'Job title'}, 'last_name': {'type': 'string', 'description': 'Last name'}, 'avatar_url': {'type': 'string', 'description': 'Avatar URL'}, 'first_name': {'type': 'string', 'description': 'First name (required)'}, 'work_notes': {'type': 'string', 'description': 'Notes about their work'}, 'is_favorite': {'type': 'boolean', 'description': 'Mark as favorite'}, 'maiden_name': {'type': 'string', 'description': 'Maiden name'}, 'met_at_date': {'type': 'string', 'description': 'Date you met this person (YYYY-MM-DD)'}, 'middle_name': {'type': 'string', 'description': 'Middle name'}, 'birthday_day': {'type': 'number', 'description': 'Birthday day (1-31), used with birthday_mode=month_day'}, 'birthday_date': {'type': 'string', 'description': 'Full birthday date (YYYY-MM-DD), used with birthday_mode=full_date'}, 'birthday_mode': {'enum': ['full_date', 'month_day', 'approximate_age'], 'type': 'string', 'description': 'Birthday mode: full_date (YYYY-MM-DD), month_day (month + day only), or approximate_age (birth year estimate)'}, 'deceased_date': {'type': 'string', 'description': 'Date of death (YYYY-MM-DD)'}, 'birthday_month': {'type': 'number', 'description': 'Birthday month (1-12), used with birthday_mode=month_day'}, 'met_at_location': {'type': 'string', 'description': 'Where you met this person'}, 'met_description': {'type': 'string', 'description': 'Story of how you met'}, 'met_through_contact_id': {'type': 'string', 'description': 'Contact ID of person who introduced you'}, 'birthday_year_approximate': {'type': 'number', 'description': 'Approximate birth year, used with birthday_mode=approximate_age'}}}
contact_delete
Soft-delete a contact (can be restored later)
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contact_id'], 'properties': {'contact_id': {'type': 'string', 'description': 'The contact ID to delete'}}}
contact_find_duplicates
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
contact_get
Get full contact details including all related data in one call: contact methods, addresses, food preferences, custom fields, tags, relationships, recent notes, recent activities, life events, active reminders, open tasks, recent gifts, active debts, and debt summary
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contact_id'], 'properties': {'contact_id': {'type': 'string', 'description': 'The contact ID'}}}
contact_list
List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'number', 'description': 'Page number (default: 1)'}, 'search': {'type': 'string', 'description': 'Search contacts by name, company, or job title'}, 'status': {'enum': ['active', 'archived', 'deceased'], 'type': 'string', 'description': 'Filter by status'}, 'company': {'type': 'string', 'description': 'Filter by company'}, 'sort_by': {'enum': ['name', 'created_at', 'updated_at'], 'type': 'string', 'description': 'Sort field (default: name)'}, 'per_page': {'type': 'number', 'description': 'Results per page (default: 20)'}, 'tag_name': {'type': 'string', 'description': 'Filter by tag name'}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort order (default: asc)'}, 'is_favorite': {'type': 'boolean', 'description': 'Filter by favorite'}, 'include_deleted': {'type': 'boolean', 'description': 'Include soft-deleted contacts in results (default: false)'}}}
contact_merge
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 soft-deleted after merge.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['primary_contact_id', 'secondary_contact_id'], 'properties': {'primary_contact_id': {'type': 'string', 'description': 'The contact ID to keep (primary)'}, 'secondary_contact_id': {'type': 'string', 'description': 'The contact ID to merge into the primary (will be soft-deleted)'}}}
contact_method_manage
Add, update, or remove a contact method (email, phone, social handle, etc.)
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The contact method ID (required for "update" and "remove")'}, 'type': {'type': 'string', 'minLength': 1, 'description': 'Type of contact method (required for "add"). Built-ins: email, phone, whatsapp, telegram, signal, twitter, instagram, facebook, linkedin, website, other. Custom values defined in Settings are also accepted.'}, 'label': {'type': 'string', 'description': 'Label (e.g. "Personal", "Work")'}, 'value': {'type': 'string', 'description': 'The value - email, phone number, handle (required for "add")'}, 'action': {'enum': ['add', 'update', 'remove'], 'type': 'string', 'description': 'Action to perform'}, 'contact_id': {'type': 'string', 'description': 'The contact ID (required for "add")'}, 'is_primary': {'type': 'boolean', 'description': 'Set as primary for this type'}}}
contact_restore
Restore a soft-deleted contact
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contact_id'], 'properties': {'contact_id': {'type': 'string', 'description': 'The contact ID to restore'}}}
contacts_needing_attention
Find contacts you haven't interacted with recently - the "who am I neglecting?" query. Returns contacts sorted by staleness (longest since last interaction first). Contacts with zero interactions are included and sorted first.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'maximum': 100, 'minimum': 1, 'description': 'Max results to return (default: 20)'}, 'status': {'enum': ['active', 'archived'], 'type': 'string', 'description': 'Contact status filter (default: active)'}, 'tag_name': {'type': 'string', 'description': 'Filter to contacts with this tag (e.g., "close friends")'}, 'is_favorite': {'type': 'boolean', 'description': 'Filter to favorites only'}, 'days_since_last_interaction': {'type': 'number', 'description': 'Minimum days since last activity to be included (default: 30)'}}}
contact_timeline
Get the unified timeline for a contact (activities, life events, notes, etc.)
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contact_id'], 'properties': {'page': {'type': 'number', 'description': 'Page number (default: 1)'}, 'per_page': {'type': 'number', 'description': 'Results per page (default: 20)'}, 'contact_id': {'type': 'string', 'description': 'The contact ID'}, 'entry_type': {'enum': ['activity', 'life_event', 'note', 'contact_created'], 'type': 'string', 'description': 'Filter by entry type'}}}
contact_update
Update contact fields
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contact_id'], 'properties': {'gender': {'type': 'string', 'description': 'Gender'}, 'status': {'enum': ['active', 'archived', 'deceased'], 'type': 'string', 'description': 'Contact status'}, 'company': {'type': 'string', 'description': 'Company'}, 'industry': {'type': 'string', 'description': 'Industry'}, 'nickname': {'type': 'string', 'description': 'Nickname'}, 'pronouns': {'type': 'string', 'description': 'Pronouns'}, 'job_title': {'type': 'string', 'description': 'Job title'}, 'last_name': {'type': 'string', 'description': 'Last name'}, 'avatar_url': {'type': 'string', 'description': 'Avatar URL'}, 'contact_id': {'type': 'string', 'description': 'The contact ID to update'}, 'first_name': {'type': 'string', 'description': 'First name'}, 'work_notes': {'type': 'string', 'description': 'Work notes'}, 'is_favorite': {'type': 'boolean', 'description': 'Mark as favorite'}, 'maiden_name': {'type': 'string', 'description': 'Maiden name'}, 'met_at_date': {'type': 'string', 'description': 'Date you met this person'}, 'middle_name': {'type': 'string', 'description': 'Middle name'}, 'birthday_day': {'type': 'number', 'description': 'Birthday day (1-31)'}, 'birthday_date': {'type': 'string', 'description': 'Full birthday date (YYYY-MM-DD)'}, 'birthday_mode': {'enum': ['full_date', 'month_day', 'approximate_age'], 'type': 'string', 'description': 'Birthday mode'}, 'deceased_date': {'type': 'string', 'description': 'Date of death (YYYY-MM-DD)'}, 'birthday_month': {'type': 'number', 'description': 'Birthday month (1-12)'}, 'met_at_location': {'type': 'string', 'description': 'Where you met this person'}, 'met_description': {'type': 'string', 'description': 'How you met'}, 'met_through_contact_id': {'type': 'string', 'description': 'Contact ID of person who introduced you'}, 'birthday_year_approximate': {'type': 'number', 'description': 'Approximate birth year'}}}
custom_field_manage
Add, update, or remove a custom field on a contact
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The custom field ID (required for "update" and "remove")'}, 'action': {'enum': ['add', 'update', 'remove'], 'type': 'string', 'description': 'Action to perform'}, 'contact_id': {'type': 'string', 'description': 'The contact ID (required for "add")'}, 'field_name': {'type': 'string', 'description': 'Field name, e.g. "Favorite Color" (required for "add")'}, 'field_group': {'type': 'string', 'description': 'Group to organize fields, e.g. "Preferences"'}, 'field_value': {'type': 'string', 'description': 'Field value (required for "add")'}}}
data_export
Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
data_statistics
Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
debt_manage
Create, list, update, settle, delete, restore, or summarize debts. • action="create": Track a new debt. Requires contact_id, amount, direction. Optional currency, reason, incurred_at. • action="list": List debts. Optional contact_id, status, page, per_page, include_deleted. • action="update": Update a debt. Requires id. Optional amount, currency, direction, reason, incurred_at. • action="settle": Mark a debt as settled. Requires id. • action="delete": Soft-delete a debt. Requires id. • action="restore": Restore a soft-deleted debt. Requires id. • action="summary": Get net balance summary for a contact. Requires contact_id.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The debt ID (required for "update", "settle", "delete", "restore")'}, 'page': {'type': 'number', 'description': 'Page number for "list" (default: 1)'}, 'action': {'enum': ['create', 'list', 'update', 'settle', 'delete', 'restore', 'summary'], 'type': 'string', 'description': 'Action to perform'}, 'amount': {'type': 'number', 'description': 'Amount owed (required for "create", optional for "update")'}, 'reason': {'type': 'string', 'description': 'Reason for the debt'}, 'status': {'enum': ['active', 'settled'], 'type': 'string', 'description': 'Filter by status (for "list" only)'}, 'currency': {'type': 'string', 'description': 'Currency (default: USD)'}, 'per_page': {'type': 'number', 'description': 'Results per page for "list" (default: 20)'}, 'direction': {'enum': ['i_owe_them', 'they_owe_me'], 'type': 'string', 'description': 'Who owes whom (required for "create", optional for "update")'}, 'contact_id': {'type': 'string', 'description': 'The contact ID (required for "create" and "summary", optional filter for "list")'}, 'incurred_at': {'type': 'string', 'description': 'When the debt was incurred (ISO date)'}, 'include_deleted': {'type': 'boolean', 'description': 'Include soft-deleted debts in "list" results (default: false)'}}}
food_preferences_get
Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contact_id'], 'properties': {'contact_id': {'type': 'string', 'description': 'The contact ID'}}}
food_preferences_upsert
Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contact_id'], 'properties': {'notes': {'type': 'string', 'description': 'Additional notes about food preferences'}, 'allergies': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Food allergies (e.g. ["peanuts", "shellfish"])'}, 'contact_id': {'type': 'string', 'description': 'The contact ID'}, 'disliked_foods': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Disliked foods'}, 'favorite_foods': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Favorite foods'}, 'dietary_restrictions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Dietary restrictions (e.g. ["vegetarian", "gluten-free"])'}}}
gift_list
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 summary stats.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'number', 'description': 'Page number (default: 1)'}, 'status': {'enum': ['idea', 'planned', 'purchased', 'given', 'received'], 'type': 'string', 'description': 'Filter by status'}, 'sort_by': {'enum': ['date', 'created_at', 'estimated_cost'], 'type': 'string', 'description': 'Sort field (default: date for tracker mode, created_at otherwise)'}, 'occasion': {'type': 'string', 'description': 'Filter by occasion (fuzzy match, e.g. "birthday", "Christmas")'}, 'per_page': {'type': 'number', 'description': 'Results per page (default: 20)'}, 'direction': {'enum': ['giving', 'receiving'], 'type': 'string', 'description': 'Filter by direction'}, 'contact_id': {'type': 'string', 'description': 'Filter by contact ID'}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction (default: desc)'}, 'include_deleted': {'type': 'boolean', 'description': 'Include soft-deleted gifts in results (default: false)'}}}
gift_manage
Create, update, delete, or restore a gift for a contact. • action="create": Track a gift idea, plan, or record a given/received gift. Requires contact_id, name, and direction. Optional description, url, estimated_cost, currency, occasion, status, date. • action="update": Update an existing gift (change status, add details, etc.). Requires id. Optional name, description, url, estimated_cost, currency, occasion, status, direction, date. • action="delete": Soft-delete a gift. Requires id. • action="restore": Restore a soft-deleted gift. Requires id.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The gift ID (required for "update", "delete", "restore")'}, 'url': {'type': 'string', 'description': 'Link to the gift'}, 'date': {'type': 'string', 'description': 'Date of giving/receiving (ISO date)'}, 'name': {'type': 'string', 'description': 'Gift name (required for "create")'}, 'action': {'enum': ['create', 'update', 'delete', 'restore'], 'type': 'string', 'description': 'Action to perform'}, 'status': {'enum': ['idea', 'planned', 'purchased', 'given', 'received'], 'type': 'string', 'description': 'Gift status (default: idea)'}, 'currency': {'type': 'string', 'description': 'Currency (default: USD)'}, 'occasion': {'type': 'string', 'description': 'Occasion (e.g. "Birthday", "Christmas")'}, 'direction': {'enum': ['giving', 'receiving'], 'type': 'string', 'description': 'Giving to or receiving from this contact (required for "create")'}, 'contact_id': {'type': 'string', 'description': 'The contact ID (required for "create")'}, 'description': {'type': 'string', 'description': 'Description'}, 'estimated_cost': {'type': 'number', 'description': 'Estimated cost'}}}
global_search
Search across all entity types (contacts, notes, activities, life events, gifts, tasks, reminders, debts, relationships, contact methods, addresses, custom fields) in a single query. Returns grouped results by entity type with snippets and contact context.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Search term'}, 'entity_types': {'type': 'array', 'items': {'enum': ['contacts', 'notes', 'activities', 'life_events', 'gifts', 'tasks', 'reminders', 'debts', 'relationships', 'contact_methods', 'addresses', 'custom_fields'], 'type': 'string'}, 'description': 'Optional: filter to specific entity types (default: all types)'}, 'limit_per_type': {'type': 'number', 'maximum': 50, 'minimum': 1, 'description': 'Max results per entity type (default: 10)'}}}
life_event_manage
Create, list, update, delete, or restore life events for a contact. • action="create": Record a new life event. Requires contact_id, event_type, and title. Optional description, occurred_at, related_contact_ids. • action="list": List life events for a contact. Requires contact_id. Optional page, per_page, include_deleted. • action="update": Update a life event. Requires id. Optional event_type, title, description, occurred_at, related_contact_ids. • action="delete": Soft-delete a life event. Requires id. • action="restore": Restore a soft-deleted life event. Requires id.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The life event ID (required for "update", "delete", "restore")'}, 'page': {'type': 'number', 'description': 'Page number for "list" (default: 1)'}, 'title': {'type': 'string', 'description': 'Title (e.g. "Started at Google", "Moved to Berlin") - required for "create", optional for "update"'}, 'action': {'enum': ['create', 'list', 'update', 'delete', 'restore'], 'type': 'string', 'description': 'Action to perform'}, 'per_page': {'type': 'number', 'description': 'Results per page for "list" (default: 20)'}, 'contact_id': {'type': 'string', 'description': 'The contact ID (required for "create" and "list")'}, 'event_type': {'type': 'string', 'description': 'Event type (e.g. "new_job", "got_married", "moved") - required for "create", optional for "update"'}, 'description': {'type': 'string', 'description': 'Description (optional for "create" and "update")'}, 'occurred_at': {'type': 'string', 'description': 'When it happened (ISO date, optional for "create" and "update")'}, 'include_deleted': {'type': 'boolean', 'description': 'Include soft-deleted life events in "list" results (default: false)'}, 'related_contact_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'IDs of other contacts involved (optional for "create" and "update")'}}}
manage_push_notifications
Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
manage_settings
View or update your personal settings (timezone, birthday reminder preferences). • action="get": View current settings • action="update": Update settings. Optional fields: timezone (IANA timezone like "America/New_York"), birthday_reminder_offsets (array of day offsets like [0,7,30] where 0=day-of, 7=week-before), reminder_offsets (array of day offsets like [0,7,30] for advance notice on custom reminders), birthday_reminder_time (HH:MM 24-hour format for when to send reminders)
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'action': {'enum': ['get', 'update'], 'type': 'string', 'description': 'Action to perform'}, 'timezone': {'type': 'string', 'description': 'IANA timezone (e.g. "America/New_York", "Europe/London")'}, 'reminder_offsets': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Array of day offsets for custom reminder advance notice (e.g. [0,7,30] = day-of, 1 week before, 1 month before)'}, 'birthday_reminder_time': {'type': 'string', 'description': 'Time of day for birthday reminders in HH:MM 24-hour format (e.g. "09:00")'}, 'birthday_reminder_offsets': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Array of day offsets for birthday reminders (e.g. [0,7,30] = day-of, 1 week before, 1 month before)'}}}
note_list
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 search across all contacts.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'number', 'description': 'Page number (default: 1)'}, 'query': {'type': 'string', 'description': 'Search term matched against note title and body'}, 'sort_by': {'enum': ['created_at', 'updated_at'], 'type': 'string', 'description': 'Sort field (default: updated_at)'}, 'per_page': {'type': 'number', 'description': 'Results per page (default: 20)'}, 'tag_name': {'type': 'string', 'description': 'Filter to notes belonging to contacts with this tag'}, 'is_pinned': {'type': 'boolean', 'description': 'Filter by pinned status'}, 'contact_id': {'type': 'string', 'description': 'Filter by contact ID (optional - omit to search across all contacts)'}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction (default: desc)'}, 'include_deleted': {'type': 'boolean', 'description': 'Include soft-deleted notes in results (default: false)'}}}
note_manage
Create, update, delete, or restore a note for a contact. • action="create": Add a new note. Requires contact_id and body. Optional title, is_pinned. • action="update": Update an existing note. Requires id. Optional title, body, is_pinned. • action="delete": Soft-delete a note. Requires id. • action="restore": Restore a soft-deleted note. Requires id.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The note ID (required for "update", "delete", "restore")'}, 'body': {'type': 'string', 'description': 'Note body, supports markdown (required for "create", optional for "update")'}, 'title': {'type': 'string', 'description': 'Note title (optional for "create" and "update")'}, 'action': {'enum': ['create', 'update', 'delete', 'restore'], 'type': 'string', 'description': 'Action to perform'}, 'is_pinned': {'type': 'boolean', 'description': 'Pin/unpin note (optional for "create" and "update")'}, 'contact_id': {'type': 'string', 'description': 'The contact ID (required for "create")'}}}
notification_create
Create a custom notification
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type', 'title'], 'properties': {'body': {'type': 'string', 'description': 'Notification body'}, 'type': {'enum': ['birthday', 'reminder', 'follow_up', 'custom'], 'type': 'string', 'description': 'Notification type'}, 'title': {'type': 'string', 'description': 'Notification title'}, 'contact_id': {'type': 'string', 'description': 'Related contact ID'}}}
notification_list
List notifications (newest first)
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'number', 'description': 'Page number (default: 1)'}, 'per_page': {'type': 'number', 'description': 'Results per page (default: 20)'}, 'unread_only': {'type': 'boolean', 'description': 'Only show unread notifications'}}}
notification_read
Mark notification(s) as read. Pass id for a single notification, or all=true for all.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string', 'description': 'The notification ID (required unless all=true)'}, 'all': {'type': 'boolean', 'description': 'Mark all notifications as read (default: false)'}}}
prime
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, email, contact_id), all tags, the 200 most recently updated contacts (id, name, and tag IDs), and the 10 most recent notes. This primes your context so you can reference contacts by name, understand the user's tag taxonomy, and see recent activity without needing separate list calls. Always call this at the start of a conversation.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
relationship_manage
Add, update, remove, or list relationships between contacts. • action="add": Create a relationship between two contacts. Automatically creates the inverse relationship. Requires contact_id, related_contact_id, and relationship_type. To create relationships involving yourself, use your own contact_id from the prime tool. Relationships describe how contacts relate to each other (e.g. Bandit is Bingo's parent). • action="update": Update a relationship. Also updates the inverse relationship. Requires id. Optionally set relationship_type and/or notes. • action="remove": Remove a relationship and its inverse. Requires id. • action="list": List all relationships for a contact. Requires contact_id.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The relationship ID (required for "update" and "remove")'}, 'notes': {'type': 'string', 'description': 'Notes about this relationship (optional for "add" and "update")'}, 'action': {'enum': ['add', 'update', 'remove', 'list'], 'type': 'string', 'description': 'Action to perform'}, 'contact_id': {'type': 'string', 'description': 'The source contact ID (required for "add" and "list")'}, 'relationship_type': {'type': 'string', 'description': 'Type of relationship (required for "add", optional for "update"). Canonical values: significant_other, spouse, date, lover, in_love_with, secret_lover, ex_boyfriend_girlfriend, ex_husband_wife, parent, child, sibling, grandparent, grandchild, uncle_aunt, nephew_niece, cousin, godparent, godchild, step_parent, step_child, friend, best_friend, colleague, boss, subordinate, mentor, protege. Custom values defined in Settings are also accepted.'}, 'related_contact_id': {'type': 'string', 'description': 'The related contact ID (required for "add")'}}}
reminder_manage
Create, list, update, complete, snooze, delete, or restore reminders. • action="create": Create a reminder for a contact. Requires contact_id, title, and reminder_date. Optional description, frequency. • action="list": List reminders, optionally filtered by contact or status. Optional contact_id, status, page, per_page, include_deleted. • action="update": Update a reminder. Requires id. Optional title, description, reminder_date, frequency. • action="complete": Mark a reminder as completed. For recurring reminders, advances to the next occurrence. Requires id. • action="snooze": Snooze a reminder to a new date. Requires id and new_date. • action="delete": Soft-delete a reminder. Requires id. • action="restore": Restore a soft-deleted reminder. Requires id.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The reminder ID (required for "update", "complete", "snooze", "delete", "restore")'}, 'page': {'type': 'number', 'description': 'Page number for "list" (default: 1)'}, 'title': {'type': 'string', 'description': 'Reminder title (required for "create", optional for "update")'}, 'action': {'enum': ['create', 'list', 'update', 'complete', 'snooze', 'delete', 'restore'], 'type': 'string', 'description': 'Action to perform'}, 'status': {'enum': ['active', 'snoozed', 'completed', 'dismissed'], 'type': 'string', 'description': 'Filter by status (for "list" only)'}, 'new_date': {'type': 'string', 'description': 'New reminder date (ISO date YYYY-MM-DD) (required for "snooze")'}, 'per_page': {'type': 'number', 'description': 'Results per page for "list" (default: 20)'}, 'frequency': {'enum': ['one_time', 'weekly', 'monthly', 'yearly'], 'type': 'string', 'description': 'Frequency (default: one_time, optional for "create" and "update")'}, 'contact_id': {'type': 'string', 'description': 'The contact ID (required for "create", optional filter for "list")'}, 'description': {'type': 'string', 'description': 'Description (optional for "create" and "update")'}, 'reminder_date': {'type': 'string', 'description': 'When to remind (ISO date YYYY-MM-DD) (required for "create", optional for "update")'}, 'include_deleted': {'type': 'boolean', 'description': 'Include soft-deleted reminders in "list" results (default: false)'}}}
tag_manage
Manage tags and contact tagging. • action="list": List all tags for the authenticated user. No additional fields required. • action="create": Create a new tag (or return existing if name already exists). Requires name. • action="update": Update a tag name. Requires id and name. • action="delete": Delete a tag. Requires id. • action="tag_contact": Tag a contact. Creates the tag if it doesn't exist. Requires name (the tag name) and contact_id. • action="untag_contact": Remove a tag from a contact. Requires id (the tag ID) and contact_id.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The tag ID (required for update, delete, untag_contact)'}, 'name': {'type': 'string', 'description': 'Tag name (required for create and tag_contact)'}, 'action': {'enum': ['list', 'create', 'update', 'delete', 'tag_contact', 'untag_contact'], 'type': 'string', 'description': 'Action to perform'}, 'contact_id': {'type': 'string', 'description': 'The contact ID (required for tag_contact and untag_contact)'}}}
task_manage
Create, list, update, complete, delete, or restore tasks. • action="create": Create a task. Requires title. Optional description, contact_id, due_date, priority. • action="list": List tasks. Optional contact_id, status, priority, page, per_page, include_deleted. • action="update": Update a task. Requires id. Optional title, description, contact_id, due_date, priority, status. • action="complete": Mark a task as completed. Requires id. • action="delete": Soft-delete a task. Requires id. • action="restore": Restore a soft-deleted task. Requires id.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'The task ID (required for "update", "complete", "delete", "restore")'}, 'page': {'type': 'number', 'description': 'Page number for "list" (default: 1)'}, 'title': {'type': 'string', 'description': 'Task title (required for "create", optional for "update")'}, 'action': {'enum': ['create', 'list', 'update', 'complete', 'delete', 'restore'], 'type': 'string', 'description': 'Action to perform'}, 'status': {'enum': ['pending', 'in_progress', 'completed'], 'type': 'string', 'description': 'Status (optional for "update", filter for "list")'}, 'due_date': {'type': 'string', 'description': 'Due date (ISO date, optional for "create" and "update")'}, 'per_page': {'type': 'number', 'description': 'Results per page for "list" (default: 20)'}, 'priority': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Priority (optional for "create"/"update", filter for "list")'}, 'contact_id': {'type': 'string', 'description': 'Link to a contact (optional for "create"/"update", filter for "list")'}, 'description': {'type': 'string', 'description': 'Description (optional for "create" and "update")'}, 'include_deleted': {'type': 'boolean', 'description': 'Include soft-deleted tasks in "list" results (default: false)'}}}
upcoming_birthdays
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 when available.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'month': {'type': 'number', 'maximum': 12, 'minimum': 1, 'description': 'Optional: show all birthdays in a specific month (1-12) instead of using days_ahead'}, 'days_ahead': {'type': 'number', 'maximum': 365, 'minimum': 1, 'description': 'Look-ahead window in days from today (default: 30). Ignored if month is provided.'}}}
upcoming_reminders
Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming).
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'status': {'enum': ['active', 'snoozed'], 'type': 'string', 'description': 'Filter by reminder status (default: active)'}, 'days_ahead': {'type': 'number', 'maximum': 365, 'minimum': 1, 'description': 'Look-ahead window in days from today (default: 14)'}, 'include_overdue': {'type': 'boolean', 'description': 'Include overdue reminders with reminder_date before today (default: true)'}}}
Añadido
manage_push_notifications
17 de September de 2026 a las 12:40
Añadido
manage_settings
17 de September de 2026 a las 12:40
Añadido
batch_create_activities
17 de September de 2026 a las 12:40
Añadido
batch_tag_contacts
17 de September de 2026 a las 12:40
Añadido
batch_create_contacts
17 de September de 2026 a las 12:40
Añadido
upcoming_reminders
17 de September de 2026 a las 12:40
Añadido
contacts_needing_attention
17 de September de 2026 a las 12:40
Añadido
global_search
17 de September de 2026 a las 12:40
Añadido
upcoming_birthdays
17 de September de 2026 a las 12:40
Añadido
prime
17 de September de 2026 a las 12:40
Añadido
data_statistics
17 de September de 2026 a las 12:40
Añadido
data_export
17 de September de 2026 a las 12:40
Añadido
task_manage
17 de September de 2026 a las 12:40
Añadido
debt_manage
17 de September de 2026 a las 12:40
Añadido
gift_list
17 de September de 2026 a las 12:40
Añadido
gift_manage
17 de September de 2026 a las 12:40
Añadido
notification_read
17 de September de 2026 a las 12:40
Añadido
notification_create
17 de September de 2026 a las 12:40
Añadido
notification_list
17 de September de 2026 a las 12:40
Añadido
reminder_manage
17 de September de 2026 a las 12:40
Añadido
contact_timeline
17 de September de 2026 a las 12:40
Añadido
life_event_manage
17 de September de 2026 a las 12:40
Añadido
activity_type_manage
17 de September de 2026 a las 12:40
Añadido
activity_list
17 de September de 2026 a las 12:40
Añadido
activity_manage
17 de September de 2026 a las 12:40
Añadido
tag_manage
17 de September de 2026 a las 12:40
Añadido
note_list
17 de September de 2026 a las 12:40
Añadido
note_manage
17 de September de 2026 a las 12:40
Añadido
relationship_manage
17 de September de 2026 a las 12:40
Añadido
custom_field_manage
17 de September de 2026 a las 12:40