Mob (Demo)

Ephemeral no-signup demo of Mob, an AI-first personal CRM you run in natural language.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
95%
Integridad del esquema
90%
Calidad de los nombres
81%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'contact_find_duplicates' description lacks action verben contact_find_duplicates

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~9,864Tokens (definiciones de herramientas)
~2.2 KBTamaño de respuesta típico
Impacto significativo en la atención (7.71% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "mob-demo": {
      "url": "https://demo.mobcrm.au/mcp"
    }
  }
}

Puntos de conexión remotos

https://demo.mobcrm.au/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (42)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟡contact_create(first_name, middle_name, last_name, nickname, maiden_name, ...)

Create a new contact with basic info

Esquema de entrada

{
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string",
      "description": "First name (required)"
    },
    "middle_name": {
      "description": "Middle name",
      "type": "string"
    },
    "last_name": {
      "description": "Last name",
      "type": "string"
    },
    "nickname": {
      "description": "Nickname",
      "type": "string"
    },
    "maiden_name": {
      "description": "Maiden name",
      "type": "string"
    },
    "gender": {
      "description": "Gender",
      "type": "string"
    },
    "pronouns": {
      "description": "Pronouns (e.g. she/her, he/him, they/them)",
      "type": "string"
    },
    "avatar_url": {
      "description": "Avatar URL",
      "type": "string"
    },
    "birthday_mode": {
      "description": "Birthday mode: full_date (YYYY-MM-DD), month_day (month + day only), or approximate_age (birth year estimate)",
      "type": "string",
      "enum": [
        "full_date",
        "month_day",
        "approximate_age"
      ]
    },
    "birthday_date": {
      "description": "Full birthday date (YYYY-MM-DD), used with birthday_mode=full_date",
      "type": "string"
    },
    "birthday_month": {
      "description": "Birthday month (1-12), used with birthday_mode=month_day",
      "type": "number"
    },
    "birthday_day": {
      "description": "Birthday day (1-31), used with birthday_mode=month_day",
      "type": "number"
    },
    "birthday_year_approximate": {
      "description": "Approximate birth year, used with birthday_mode=approximate_age",
      "type": "number"
    },
    "status": {
      "description": "Contact status (default: active)",
      "type": "string",
      "enum": [
        "active",
        "archived",
        "deceased"
      ]
    },
    "deceased_date": {
      "description": "Date of death (YYYY-MM-DD)",
      "type": "string"
    },
    "is_favorite": {
      "description": "Mark as favorite",
      "type": "boolean"
    },
    "met_at_date": {
      "description": "Date you met this person (YYYY-MM-DD)",
      "type": "string"
    },
    "met_at_location": {
      "description": "Where you met this person",
      "type": "string"
    },
    "met_through_contact_id": {
      "description": "Contact ID of person who introduced you",
      "type": "string"
    },
    "met_description": {
      "description": "Story of how you met",
      "type": "string"
    },
    "job_title": {
      "description": "Job title",
      "type": "string"
    },
    "company": {
      "description": "Company or organization",
      "type": "string"
    },
    "industry": {
      "description": "Industry",
      "type": "string"
    },
    "work_notes": {
      "description": "Notes about their work",
      "type": "string"
    }
  },
  "required": [
    "first_name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢contact_get(contact_id)

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",
  "properties": {
    "contact_id": {
      "type": "string",
      "description": "The contact ID"
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡contact_update(contact_id, first_name, middle_name, last_name, nickname, ...)

Update contact fields

Esquema de entrada

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "string",
      "description": "The contact ID to update"
    },
    "first_name": {
      "description": "First name",
      "type": "string"
    },
    "middle_name": {
      "description": "Middle name",
      "type": "string"
    },
    "last_name": {
      "description": "Last name",
      "type": "string"
    },
    "nickname": {
      "description": "Nickname",
      "type": "string"
    },
    "maiden_name": {
      "description": "Maiden name",
      "type": "string"
    },
    "gender": {
      "description": "Gender",
      "type": "string"
    },
    "pronouns": {
      "description": "Pronouns",
      "type": "string"
    },
    "avatar_url": {
      "description": "Avatar URL",
      "type": "string"
    },
    "birthday_mode": {
      "description": "Birthday mode",
      "type": "string",
      "enum": [
        "full_date",
        "month_day",
        "approximate_age"
      ]
    },
    "birthday_date": {
      "description": "Full birthday date (YYYY-MM-DD)",
      "type": "string"
    },
    "birthday_month": {
      "description": "Birthday month (1-12)",
      "type": "number"
    },
    "birthday_day": {
      "description": "Birthday day (1-31)",
      "type": "number"
    },
    "birthday_year_approximate": {
      "description": "Approximate birth year",
      "type": "number"
    },
    "status": {
      "description": "Contact status",
      "type": "string",
      "enum": [
        "active",
        "archived",
        "deceased"
      ]
    },
    "deceased_date": {
      "description": "Date of death (YYYY-MM-DD)",
      "type": "string"
    },
    "is_favorite": {
      "description": "Mark as favorite",
      "type": "boolean"
    },
    "met_at_date": {
      "description": "Date you met this person",
      "type": "string"
    },
    "met_at_location": {
      "description": "Where you met this person",
      "type": "string"
    },
    "met_through_contact_id": {
      "description": "Contact ID of person who introduced you",
      "type": "string"
    },
    "met_description": {
      "description": "How you met",
      "type": "string"
    },
    "job_title": {
      "description": "Job title",
      "type": "string"
    },
    "company": {
      "description": "Company",
      "type": "string"
    },
    "industry": {
      "description": "Industry",
      "type": "string"
    },
    "work_notes": {
      "description": "Work notes",
      "type": "string"
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴contact_delete(contact_id)

Soft-delete a contact (can be restored later)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "string",
      "description": "The contact ID to delete"
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪contact_restore(contact_id)

Restore a soft-deleted contact

Esquema de entrada

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "string",
      "description": "The contact ID to restore"
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢contact_list(page, per_page, status, is_favorite, search, ...)

List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number (default: 1)",
      "type": "number"
    },
    "per_page": {
      "description": "Results per page (default: 20)",
      "type": "number"
    },
    "status": {
      "description": "Filter by status",
      "type": "string",
      "enum": [
        "active",
        "archived",
        "deceased"
      ]
    },
    "is_favorite": {
      "description": "Filter by favorite",
      "type": "boolean"
    },
    "search": {
      "description": "Search contacts by name, company, or job title",
      "type": "string"
    },
    "company": {
      "description": "Filter by company",
      "type": "string"
    },
    "tag_name": {
      "description": "Filter by tag name",
      "type": "string"
    },
    "sort_by": {
      "description": "Sort field (default: name)",
      "type": "string",
      "enum": [
        "name",
        "created_at",
        "updated_at"
      ]
    },
    "sort_order": {
      "description": "Sort order (default: asc)",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "include_deleted": {
      "description": "Include soft-deleted contacts in results (default: false)",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪contact_merge(primary_contact_id, secondary_contact_id)

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",
  "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)"
    }
  },
  "required": [
    "primary_contact_id",
    "secondary_contact_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢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",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴contact_method_manage(action, contact_id, id, type, value, ...)

Add, update, or remove a contact method (email, phone, social handle, etc.)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "add",
        "update",
        "remove"
      ],
      "description": "Action to perform"
    },
    "contact_id": {
      "description": "The contact ID (required for \"add\")",
      "type": "string"
    },
    "id": {
      "description": "The contact method ID (required for \"update\" and \"remove\")",
      "type": "string"
    },
    "type": {
      "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.",
      "type": "string",
      "minLength": 1
    },
    "value": {
      "description": "The value - email, phone number, handle (required for \"add\")",
      "type": "string"
    },
    "label": {
      "description": "Label (e.g. \"Personal\", \"Work\")",
      "type": "string"
    },
    "is_primary": {
      "description": "Set as primary for this type",
      "type": "boolean"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴address_manage(action, contact_id, id, label, street_line_1, ...)

Add, update, or remove an address for a contact

Esquema de entrada

{
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "add",
        "update",
        "remove"
      ],
      "description": "Action to perform"
    },
    "contact_id": {
      "description": "The contact ID (required for \"add\")",
      "type": "string"
    },
    "id": {
      "description": "The address ID (required for \"update\" and \"remove\")",
      "type": "string"
    },
    "label": {
      "description": "Label (e.g. \"Home\", \"Work\")",
      "type": "string"
    },
    "street_line_1": {
      "description": "Street address line 1",
      "type": "string"
    },
    "street_line_2": {
      "description": "Street address line 2",
      "type": "string"
    },
    "city": {
      "description": "City",
      "type": "string"
    },
    "state_province": {
      "description": "State or province",
      "type": "string"
    },
    "postal_code": {
      "description": "Postal/ZIP code",
      "type": "string"
    },
    "country": {
      "description": "Country (ISO 3166-1 alpha-2 recommended)",
      "type": "string"
    },
    "is_primary": {
      "description": "Set as primary address",
      "type": "boolean"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢food_preferences_get(contact_id)

Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "string",
      "description": "The contact ID"
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡food_preferences_upsert(contact_id, dietary_restrictions, allergies, favorite_foods, disliked_foods, ...)

Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "string",
      "description": "The contact ID"
    },
    "dietary_restrictions": {
      "description": "Dietary restrictions (e.g. [\"vegetarian\", \"gluten-free\"])",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "allergies": {
      "description": "Food allergies (e.g. [\"peanuts\", \"shellfish\"])",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "favorite_foods": {
      "description": "Favorite foods",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "disliked_foods": {
      "description": "Disliked foods",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "notes": {
      "description": "Additional notes about food preferences",
      "type": "string"
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴custom_field_manage(action, contact_id, id, field_name, field_value, ...)

Add, update, or remove a custom field on a contact

Esquema de entrada

{
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "add",
        "update",
        "remove"
      ],
      "description": "Action to perform"
    },
    "contact_id": {
      "description": "The contact ID (required for \"add\")",
      "type": "string"
    },
    "id": {
      "description": "The custom field ID (required for \"update\" and \"remove\")",
      "type": "string"
    },
    "field_name": {
      "description": "Field name, e.g. \"Favorite Color\" (required for \"add\")",
      "type": "string"
    },
    "field_value": {
      "description": "Field value (required for \"add\")",
      "type": "string"
    },
    "field_group": {
      "description": "Group to organize fields, e.g. \"Preferences\"",
      "type": "string"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴relationship_manage(action, contact_id, related_contact_id, id, relationship_type, ...)

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",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "add",
        "update",
        "remove",
        "list"
      ],
      "description": "Action to perform"
    },
    "contact_id": {
      "description": "The source contact ID (required for \"add\" and \"list\")",
      "type": "string"
    },
    "related_contact_id": {
      "description": "The related contact ID (required for \"add\")",
      "type": "string"
    },
    "id": {
      "description": "The relationship ID (required for \"update\" and \"remove\")",
      "type": "string"
    },
    "relationship_type": {
      "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.",
      "type": "string"
    },
    "notes": {
      "description": "Notes about this relationship (optional for \"add\" and \"update\")",
      "type": "string"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴note_manage(action, contact_id, id, title, body, ...)

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",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "create",
        "update",
        "delete",
        "restore"
      ],
      "description": "Action to perform"
    },
    "contact_id": {
      "description": "The contact ID (required for \"create\")",
      "type": "string"
    },
    "id": {
      "description": "The note ID (required for \"update\", \"delete\", \"restore\")",
      "type": "string"
    },
    "title": {
      "description": "Note title (optional for \"create\" and \"update\")",
      "type": "string"
    },
    "body": {
      "description": "Note body, supports markdown (required for \"create\", optional for \"update\")",
      "type": "string"
    },
    "is_pinned": {
      "description": "Pin/unpin note (optional for \"create\" and \"update\")",
      "type": "boolean"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡note_list(contact_id, query, tag_name, is_pinned, sort_by, ...)

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",
  "properties": {
    "contact_id": {
      "description": "Filter by contact ID (optional - omit to search across all contacts)",
      "type": "string"
    },
    "query": {
      "description": "Search term matched against note title and body",
      "type": "string"
    },
    "tag_name": {
      "description": "Filter to notes belonging to contacts with this tag",
      "type": "string"
    },
    "is_pinned": {
      "description": "Filter by pinned status",
      "type": "boolean"
    },
    "sort_by": {
      "description": "Sort field (default: updated_at)",
      "type": "string",
      "enum": [
        "created_at",
        "updated_at"
      ]
    },
    "sort_order": {
      "description": "Sort direction (default: desc)",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number (default: 1)",
      "type": "number"
    },
    "per_page": {
      "description": "Results per page (default: 20)",
      "type": "number"
    },
    "include_deleted": {
      "description": "Include soft-deleted notes in results (default: false)",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴tag_manage(action, id, name, contact_id)

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",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "list",
        "create",
        "update",
        "delete",
        "tag_contact",
        "untag_contact"
      ],
      "description": "Action to perform"
    },
    "id": {
      "description": "The tag ID (required for update, delete, untag_contact)",
      "type": "string"
    },
    "name": {
      "description": "Tag name (required for create and tag_contact)",
      "type": "string"
    },
    "contact_id": {
      "description": "The contact ID (required for tag_contact and untag_contact)",
      "type": "string"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴activity_manage(action, id, type, title, description, ...)

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",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "create",
        "get",
        "update",
        "delete",
        "restore"
      ],
      "description": "Action to perform"
    },
    "id": {
      "description": "The activity ID (required for \"get\", \"update\", \"delete\", \"restore\")",
      "type": "string"
    },
    "type": {
      "description": "Type of interaction (required for \"create\", optional for \"update\")",
      "type": "string",
      "enum": [
        "phone_call",
        "video_call",
        "text_message",
        "in_person",
        "email",
        "activity",
        "other"
      ]
    },
    "title": {
      "description": "Title (e.g. \"Coffee at Blue Bottle\")",
      "type": "string"
    },
    "description": {
      "description": "Description or notes",
      "type": "string"
    },
    "occurred_at": {
      "description": "When it happened (ISO date/datetime) (required for \"create\", optional for \"update\")",
      "type": "string"
    },
    "duration_minutes": {
      "description": "Duration in minutes",
      "type": "number"
    },
    "location": {
      "description": "Where it happened",
      "type": "string"
    },
    "activity_type_id": {
      "description": "Custom activity type ID",
      "type": "string"
    },
    "participant_contact_ids": {
      "description": "Contact IDs of participants (required for \"create\", optional for \"update\")",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡activity_list(contact_id, type, days_back, since, sort_order, ...)

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",
  "properties": {
    "contact_id": {
      "description": "Filter by contact ID",
      "type": "string"
    },
    "type": {
      "description": "Filter by interaction type",
      "type": "string",
      "enum": [
        "phone_call",
        "video_call",
        "text_message",
        "in_person",
        "email",
        "activity",
        "other"
      ]
    },
    "days_back": {
      "description": "Look-back window in days (uses activity log mode with participant names). Ignored if since is provided.",
      "type": "number",
      "minimum": 1,
      "maximum": 365
    },
    "since": {
      "description": "Show activities since this ISO date (uses activity log mode with participant names)",
      "type": "string"
    },
    "sort_order": {
      "description": "Sort direction by occurred_at (default: desc, only for activity log mode)",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number (default: 1)",
      "type": "number"
    },
    "per_page": {
      "description": "Results per page (default: 20)",
      "type": "number"
    },
    "include_deleted": {
      "description": "Include soft-deleted activities in results (default: false)",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴activity_type_manage(action, id, name, category, icon)

List, create, update, or delete custom activity types

Esquema de entrada

{
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "list",
        "create",
        "update",
        "delete"
      ],
      "description": "Action to perform"
    },
    "id": {
      "description": "Activity type ID (required for \"update\" and \"delete\")",
      "type": "string"
    },
    "name": {
      "description": "Activity type name (required for \"create\")",
      "type": "string"
    },
    "category": {
      "description": "Category (e.g. \"Food & Drink\", \"Sports\")",
      "type": "string"
    },
    "icon": {
      "description": "Icon identifier",
      "type": "string"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴life_event_manage(action, contact_id, id, event_type, title, ...)

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",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "create",
        "list",
        "update",
        "delete",
        "restore"
      ],
      "description": "Action to perform"
    },
    "contact_id": {
      "description": "The contact ID (required for \"create\" and \"list\")",
      "type": "string"
    },
    "id": {
      "description": "The life event ID (required for \"update\", \"delete\", \"restore\")",
      "type": "string"
    },
    "event_type": {
      "description": "Event type (e.g. \"new_job\", \"got_married\", \"moved\") - required for \"create\", optional for \"update\"",
      "type": "string"
    },
    "title": {
      "description": "Title (e.g. \"Started at Google\", \"Moved to Berlin\") - required for \"create\", optional for \"update\"",
      "type": "string"
    },
    "description": {
      "description": "Description (optional for \"create\" and \"update\")",
      "type": "string"
    },
    "occurred_at": {
      "description": "When it happened (ISO date, optional for \"create\" and \"update\")",
      "type": "string"
    },
    "related_contact_ids": {
      "description": "IDs of other contacts involved (optional for \"create\" and \"update\")",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "page": {
      "description": "Page number for \"list\" (default: 1)",
      "type": "number"
    },
    "per_page": {
      "description": "Results per page for \"list\" (default: 20)",
      "type": "number"
    },
    "include_deleted": {
      "description": "Include soft-deleted life events in \"list\" results (default: false)",
      "type": "boolean"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢contact_timeline(contact_id, entry_type, page, per_page)

Get the unified timeline for a contact (activities, life events, notes, etc.)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "string",
      "description": "The contact ID"
    },
    "entry_type": {
      "description": "Filter by entry type",
      "type": "string",
      "enum": [
        "activity",
        "life_event",
        "note",
        "contact_created"
      ]
    },
    "page": {
      "description": "Page number (default: 1)",
      "type": "number"
    },
    "per_page": {
      "description": "Results per page (default: 20)",
      "type": "number"
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴reminder_manage(action, id, contact_id, title, description, ...)

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",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "create",
        "list",
        "update",
        "complete",
        "snooze",
        "delete",
        "restore"
      ],
      "description": "Action to perform"
    },
    "id": {
      "description": "The reminder ID (required for \"update\", \"complete\", \"snooze\", \"delete\", \"restore\")",
      "type": "string"
    },
    "contact_id": {
      "description": "The contact ID (required for \"create\", optional filter for \"list\")",
      "type": "string"
    },
    "title": {
      "description": "Reminder title (required for \"create\", optional for \"update\")",
      "type": "string"
    },
    "description": {
      "description": "Description (optional for \"create\" and \"update\")",
      "type": "string"
    },
    "reminder_date": {
      "description": "When to remind (ISO date YYYY-MM-DD) (required for \"create\", optional for \"update\")",
      "type": "string"
    },
    "frequency": {
      "description": "Frequency (default: one_time, optional for \"create\" and \"update\")",
      "type": "string",
      "enum": [
        "one_time",
        "weekly",
        "monthly",
        "yearly"
      ]
    },
    "new_date": {
      "description": "New reminder date (ISO date YYYY-MM-DD) (required for \"snooze\")",
      "type": "string"
    },
    "status": {
      "description": "Filter by status (for \"list\" only)",
      "type": "string",
      "enum": [
        "active",
        "snoozed",
        "completed",
        "dismissed"
      ]
    },
    "page": {
      "description": "Page number for \"list\" (default: 1)",
      "type": "number"
    },
    "per_page": {
      "description": "Results per page for \"list\" (default: 20)",
      "type": "number"
    },
    "include_deleted": {
      "description": "Include soft-deleted reminders in \"list\" results (default: false)",
      "type": "boolean"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢notification_list(unread_only, page, per_page)

List notifications (newest first)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "unread_only": {
      "description": "Only show unread notifications",
      "type": "boolean"
    },
    "page": {
      "description": "Page number (default: 1)",
      "type": "number"
    },
    "per_page": {
      "description": "Results per page (default: 20)",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡notification_create(type, title, body, contact_id)

Create a custom notification

Esquema de entrada

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "birthday",
        "reminder",
        "follow_up",
        "custom"
      ],
      "description": "Notification type"
    },
    "title": {
      "type": "string",
      "description": "Notification title"
    },
    "body": {
      "description": "Notification body",
      "type": "string"
    },
    "contact_id": {
      "description": "Related contact ID",
      "type": "string"
    }
  },
  "required": [
    "type",
    "title"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢notification_read(id, all)

Mark notification(s) as read. Pass id for a single notification, or all=true for all.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "description": "The notification ID (required unless all=true)",
      "type": "string"
    },
    "all": {
      "description": "Mark all notifications as read (default: false)",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴gift_manage(action, contact_id, id, name, description, ...)

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",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "create",
        "update",
        "delete",
        "restore"
      ],
      "description": "Action to perform"
    },
    "contact_id": {
      "description": "The contact ID (required for \"create\")",
      "type": "string"
    },
    "id": {
      "description": "The gift ID (required for \"update\", \"delete\", \"restore\")",
      "type": "string"
    },
    "name": {
      "description": "Gift name (required for \"create\")",
      "type": "string"
    },
    "description": {
      "description": "Description",
      "type": "string"
    },
    "url": {
      "description": "Link to the gift",
      "type": "string"
    },
    "estimated_cost": {
      "description": "Estimated cost",
      "type": "number"
    },
    "currency": {
      "description": "Currency (default: USD)",
      "type": "string"
    },
    "occasion": {
      "description": "Occasion (e.g. \"Birthday\", \"Christmas\")",
      "type": "string"
    },
    "status": {
      "description": "Gift status (default: idea)",
      "type": "string",
      "enum": [
        "idea",
        "planned",
        "purchased",
        "given",
        "received"
      ]
    },
    "direction": {
      "description": "Giving to or receiving from this contact (required for \"create\")",
      "type": "string",
      "enum": [
        "giving",
        "receiving"
      ]
    },
    "date": {
      "description": "Date of giving/receiving (ISO date)",
      "type": "string"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡gift_list(contact_id, status, direction, occasion, sort_by, ...)

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",
  "properties": {
    "contact_id": {
      "description": "Filter by contact ID",
      "type": "string"
    },
    "status": {
      "description": "Filter by status",
      "type": "string",
      "enum": [
        "idea",
        "planned",
        "purchased",
        "given",
        "received"
      ]
    },
    "direction": {
      "description": "Filter by direction",
      "type": "string",
      "enum": [
        "giving",
        "receiving"
      ]
    },
    "occasion": {
      "description": "Filter by occasion (fuzzy match, e.g. \"birthday\", \"Christmas\")",
      "type": "string"
    },
    "sort_by": {
      "description": "Sort field (default: date for tracker mode, created_at otherwise)",
      "type": "string",
      "enum": [
        "date",
        "created_at",
        "estimated_cost"
      ]
    },
    "sort_order": {
      "description": "Sort direction (default: desc)",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number (default: 1)",
      "type": "number"
    },
    "per_page": {
      "description": "Results per page (default: 20)",
      "type": "number"
    },
    "include_deleted": {
      "description": "Include soft-deleted gifts in results (default: false)",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴debt_manage(action, id, contact_id, amount, currency, ...)

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",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "create",
        "list",
        "update",
        "settle",
        "delete",
        "restore",
        "summary"
      ],
      "description": "Action to perform"
    },
    "id": {
      "description": "The debt ID (required for \"update\", \"settle\", \"delete\", \"restore\")",
      "type": "string"
    },
    "contact_id": {
      "description": "The contact ID (required for \"create\" and \"summary\", optional filter for \"list\")",
      "type": "string"
    },
    "amount": {
      "description": "Amount owed (required for \"create\", optional for \"update\")",
      "type": "number"
    },
    "currency": {
      "description": "Currency (default: USD)",
      "type": "string"
    },
    "direction": {
      "description": "Who owes whom (required for \"create\", optional for \"update\")",
      "type": "string",
      "enum": [
        "i_owe_them",
        "they_owe_me"
      ]
    },
    "reason": {
      "description": "Reason for the debt",
      "type": "string"
    },
    "incurred_at": {
      "description": "When the debt was incurred (ISO date)",
      "type": "string"
    },
    "status": {
      "description": "Filter by status (for \"list\" only)",
      "type": "string",
      "enum": [
        "active",
        "settled"
      ]
    },
    "page": {
      "description": "Page number for \"list\" (default: 1)",
      "type": "number"
    },
    "per_page": {
      "description": "Results per page for \"list\" (default: 20)",
      "type": "number"
    },
    "include_deleted": {
      "description": "Include soft-deleted debts in \"list\" results (default: false)",
      "type": "boolean"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴task_manage(action, id, title, description, contact_id, ...)

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",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "create",
        "list",
        "update",
        "complete",
        "delete",
        "restore"
      ],
      "description": "Action to perform"
    },
    "id": {
      "description": "The task ID (required for \"update\", \"complete\", \"delete\", \"restore\")",
      "type": "string"
    },
    "title": {
      "description": "Task title (required for \"create\", optional for \"update\")",
      "type": "string"
    },
    "description": {
      "description": "Description (optional for \"create\" and \"update\")",
      "type": "string"
    },
    "contact_id": {
      "description": "Link to a contact (optional for \"create\"/\"update\", filter for \"list\")",
      "type": "string"
    },
    "due_date": {
      "description": "Due date (ISO date, optional for \"create\" and \"update\")",
      "type": "string"
    },
    "priority": {
      "description": "Priority (optional for \"create\"/\"update\", filter for \"list\")",
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high"
      ]
    },
    "status": {
      "description": "Status (optional for \"update\", filter for \"list\")",
      "type": "string",
      "enum": [
        "pending",
        "in_progress",
        "completed"
      ]
    },
    "page": {
      "description": "Page number for \"list\" (default: 1)",
      "type": "number"
    },
    "per_page": {
      "description": "Results per page for \"list\" (default: 20)",
      "type": "number"
    },
    "include_deleted": {
      "description": "Include soft-deleted tasks in \"list\" results (default: false)",
      "type": "boolean"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪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",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢data_statistics

Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢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",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢upcoming_birthdays(days_ahead, month)

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",
  "properties": {
    "days_ahead": {
      "description": "Look-ahead window in days from today (default: 30). Ignored if month is provided.",
      "type": "number",
      "minimum": 1,
      "maximum": 365
    },
    "month": {
      "description": "Optional: show all birthdays in a specific month (1-12) instead of using days_ahead",
      "type": "number",
      "minimum": 1,
      "maximum": 12
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢global_search(query, entity_types, limit_per_type)

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",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search term"
    },
    "entity_types": {
      "description": "Optional: filter to specific entity types (default: all types)",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "contacts",
          "notes",
          "activities",
          "life_events",
          "gifts",
          "tasks",
          "reminders",
          "debts",
          "relationships",
          "contact_methods",
          "addresses",
          "custom_fields"
        ]
      }
    },
    "limit_per_type": {
      "description": "Max results per entity type (default: 10)",
      "type": "number",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢contacts_needing_attention(days_since_last_interaction, status, tag_name, is_favorite, limit)

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",
  "properties": {
    "days_since_last_interaction": {
      "description": "Minimum days since last activity to be included (default: 30)",
      "type": "number"
    },
    "status": {
      "description": "Contact status filter (default: active)",
      "type": "string",
      "enum": [
        "active",
        "archived"
      ]
    },
    "tag_name": {
      "description": "Filter to contacts with this tag (e.g., \"close friends\")",
      "type": "string"
    },
    "is_favorite": {
      "description": "Filter to favorites only",
      "type": "boolean"
    },
    "limit": {
      "description": "Max results to return (default: 20)",
      "type": "number",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢upcoming_reminders(days_ahead, status, include_overdue)

Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "days_ahead": {
      "description": "Look-ahead window in days from today (default: 14)",
      "type": "number",
      "minimum": 1,
      "maximum": 365
    },
    "status": {
      "description": "Filter by reminder status (default: active)",
      "type": "string",
      "enum": [
        "active",
        "snoozed"
      ]
    },
    "include_overdue": {
      "description": "Include overdue reminders with reminder_date before today (default: true)",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡batch_create_contacts(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",
  "properties": {
    "contacts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "description": "First name (required)"
          },
          "middle_name": {
            "description": "Middle name",
            "type": "string"
          },
          "last_name": {
            "description": "Last name",
            "type": "string"
          },
          "nickname": {
            "description": "Nickname",
            "type": "string"
          },
          "maiden_name": {
            "description": "Maiden name",
            "type": "string"
          },
          "gender": {
            "description": "Gender",
            "type": "string"
          },
          "pronouns": {
            "description": "Pronouns (e.g. she/her, he/him, they/them)",
            "type": "string"
          },
          "avatar_url": {
            "description": "Avatar URL",
            "type": "string"
          },
          "birthday_mode": {
            "description": "Birthday mode: full_date (YYYY-MM-DD), month_day (month + day only), or approximate_age (birth year estimate)",
            "type": "string",
            "enum": [
              "full_date",
              "month_day",
              "approximate_age"
            ]
          },
          "birthday_date": {
            "description": "Full birthday date (YYYY-MM-DD), used with birthday_mode=full_date",
            "type": "string"
          },
          "birthday_month": {
            "description": "Birthday month (1-12), used with birthday_mode=month_day",
            "type": "number"
          },
          "birthday_day": {
            "description": "Birthday day (1-31), used with birthday_mode=month_day",
            "type": "number"
          },
          "birthday_year_approximate": {
            "description": "Approximate birth year, used with birthday_mode=approximate_age",
            "type": "number"
          },
          "status": {
            "description": "Contact status (default: active)",
            "type": "string",
            "enum": [
              "active",
              "archived",
              "deceased"
            ]
          },
          "deceased_date": {
            "description": "Date of death (YYYY-MM-DD)",
            "type": "string"
          },
          "is_favorite": {
            "description": "Mark as favorite",
            "type": "boolean"
          },
          "met_at_date": {
            "description": "Date you met this person (YYYY-MM-DD)",
            "type": "string"
          },
          "met_at_location": {
            "description": "Where you met this person",
            "type": "string"
          },
          "met_through_contact_id": {
            "description": "Contact ID of person who introduced you",
            "type": "string"
          },
          "met_description": {
            "description": "Story of how you met",
            "type": "string"
          },
          "job_title": {
            "description": "Job title",
            "type": "string"
          },
          "company": {
            "description": "Company or organization",
            "type": "string"
          },
          "industry": {
            "description": "Industry",
            "type": "string"
          },
          "work_notes": {
            "description": "Notes about their work",
            "type": "string"
          }
        },
        "required": [
          "first_name"
        ]
      },
      "description": "Array of contact creation inputs (max 50)"
    }
  },
  "required": [
    "contacts"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪batch_tag_contacts(tag_name, contact_ids)

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",
  "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)"
    }
  },
  "required": [
    "tag_name",
    "contact_ids"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡batch_create_activities(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",
  "properties": {
    "activities": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "phone_call",
              "video_call",
              "text_message",
              "in_person",
              "email",
              "activity",
              "other"
            ],
            "description": "Type of interaction"
          },
          "title": {
            "description": "Title (e.g. \"Coffee at Blue Bottle\")",
            "type": "string"
          },
          "description": {
            "description": "Description or notes",
            "type": "string"
          },
          "occurred_at": {
            "type": "string",
            "description": "When it happened (ISO date/datetime)"
          },
          "duration_minutes": {
            "description": "Duration in minutes",
            "type": "number"
          },
          "location": {
            "description": "Where it happened",
            "type": "string"
          },
          "activity_type_id": {
            "description": "Custom activity type ID",
            "type": "string"
          },
          "participant_contact_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Contact IDs of participants"
          }
        },
        "required": [
          "type",
          "occurred_at",
          "participant_contact_ids"
        ]
      },
      "description": "Array of activity creation inputs (max 50)"
    }
  },
  "required": [
    "activities"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡manage_settings(action, timezone, birthday_reminder_offsets, reminder_offsets, birthday_reminder_time)

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",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "get",
        "update"
      ],
      "description": "Action to perform"
    },
    "timezone": {
      "description": "IANA timezone (e.g. \"America/New_York\", \"Europe/London\")",
      "type": "string"
    },
    "birthday_reminder_offsets": {
      "description": "Array of day offsets for birthday reminders (e.g. [0,7,30] = day-of, 1 week before, 1 month before)",
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "reminder_offsets": {
      "description": "Array of day offsets for custom reminder advance notice (e.g. [0,7,30] = day-of, 1 week before, 1 month before)",
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "birthday_reminder_time": {
      "description": "Time of day for birthday reminders in HH:MM 24-hour format (e.g. \"09:00\")",
      "type": "string"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪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",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada42 herramientas
verificadoversión no registrada42 herramientas