Ephemeral no-signup demo of Mob, an AI-first personal CRM you run in natural language.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names.
Page number (default: 1)
Filter by interaction type
Show activities since this ISO date (uses activity log mode with participant names)
Results per page (default: 20)
Look-back window in days (uses activity log mode with participant names). Ignored if since is provided.
Filter by contact ID
Sort direction by occurred_at (default: desc, only for activity log mode)
Include soft-deleted activities in results (default: false)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
List activities, optionally filtered by contact or type. Add days_back or since for a chronological activity journal with participant names.
| Argument | Type | Description |
|---|---|---|
| page | number | Page number (default: 1) |
| type | string | Filter by interaction type |
| since | string | Show activities since this ISO date (uses activity log mode with participant names) |
| per_page | number | Results per page (default: 20) |
| days_back | number | Look-back window in days (uses activity log mode with participant names). Ignored if since is provided. |
| contact_id | string | Filter by contact ID |
| sort_order | string | Sort direction by occurred_at (default: desc, only for activity log mode) |
| include_deleted | boolean | Include soft-deleted activities in results (default: false) |
{
"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)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| id | string | The activity ID (required for "get", "update", "delete", "restore") |
| type | string | Type of interaction (required for "create", optional for "update") |
| title | string | Title (e.g. "Coffee at Blue Bottle") |
| action* | string | Action to perform |
| location | string | Where it happened |
| description | string | Description or notes |
| occurred_at | string | When it happened (ISO date/datetime) (required for "create", optional for "update") |
| activity_type_id | string |
List, create, update, or delete custom activity types
| Argument | Type | Description |
|---|---|---|
| id | string | Activity type ID (required for "update" and "delete") |
| icon | string | Icon identifier |
| name | string | Activity type name (required for "create") |
| action* | string | Action to perform |
| category | string | Category (e.g. "Food & Drink", "Sports") |
{
"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\")"
}
}
}Add, update, or remove an address for a contact
| Argument | Type | Description |
|---|---|---|
| id | string | The address ID (required for "update" and "remove") |
| city | string | City |
| label | string | Label (e.g. "Home", "Work") |
| action* | string | Action to perform |
| country | string | Country (ISO 3166-1 alpha-2 recommended) |
| contact_id | string | The contact ID (required for "add") |
| is_primary | boolean | Set as primary address |
| postal_code | string | Postal/ZIP code |
| street_line_1 | string | Street address line 1 |
| street_line_2 | string | Street address line 2 |
| state_province | string |
Create multiple activities/interactions in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back.
| Argument | Type | Description |
|---|---|---|
| activities* | array | Array of activity creation inputs (max 50) |
{
"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)"
}
}
}Create multiple contacts in one call. Max 50 items per batch. Runs atomically - if any item fails, the entire batch is rolled back.
| Argument | Type | Description |
|---|---|---|
| contacts* | array | Array of contact creation inputs (max 50) |
{
"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)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| tag_name* | string | Tag name to apply |
| contact_ids* | array | Array of contact IDs to tag (max 50) |
{
"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)"
}
}
}Create a new contact with basic info
| Argument | Type | Description |
|---|---|---|
| gender | string | Gender |
| status | string | Contact status (default: active) |
| company | string | Company or organization |
| industry | string | Industry |
| nickname | string | Nickname |
| pronouns | string | Pronouns (e.g. she/her, he/him, they/them) |
| job_title | string | Job title |
| last_name | string | Last name |
| avatar_url | string | Avatar URL |
| first_name* | string | First name (required) |
| work_notes | string | Notes about their work |
Soft-delete a contact (can be restored later)
| Argument | Type | Description |
|---|---|---|
| contact_id* | string | The contact ID to delete |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"contact_id"
],
"properties": {
"contact_id": {
"type": "string",
"description": "The contact ID to delete"
}
}
}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.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}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
| Argument | Type | Description |
|---|---|---|
| contact_id* | string | The contact ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"contact_id"
],
"properties": {
"contact_id": {
"type": "string",
"description": "The contact ID"
}
}
}List contacts with optional filters (status, favorite, company, tag, search). Returns paginated results.
| Argument | Type | Description |
|---|---|---|
| page | number | Page number (default: 1) |
| search | string | Search contacts by name, company, or job title |
| status | string | Filter by status |
| company | string | Filter by company |
| sort_by | string | Sort field (default: name) |
| per_page | number | Results per page (default: 20) |
| tag_name | string | Filter by tag name |
| sort_order | string | Sort order (default: asc) |
| is_favorite | boolean | Filter by favorite |
| include_deleted | boolean | Include soft-deleted contacts in results (default: false) |
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.
| Argument | Type | Description |
|---|---|---|
| primary_contact_id* | string | The contact ID to keep (primary) |
| secondary_contact_id* | string | The contact ID to merge into the primary (will be soft-deleted) |
{
"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)"
}
}
}Add, update, or remove a contact method (email, phone, social handle, etc.)
| Argument | Type | Description |
|---|---|---|
| id | string | The contact method ID (required for "update" and "remove") |
| type | string | 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 | string | Label (e.g. "Personal", "Work") |
| value | string | The value - email, phone number, handle (required for "add") |
| action* | string | Action to perform |
| contact_id | string | The contact ID (required for "add") |
| is_primary | boolean | Set as primary for this type |
{
"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"
}
}
}Restore a soft-deleted contact
| Argument | Type | Description |
|---|---|---|
| contact_id* | string | The contact ID to restore |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"contact_id"
],
"properties": {
"contact_id": {
"type": "string",
"description": "The contact ID to restore"
}
}
}Get the unified timeline for a contact (activities, life events, notes, etc.)
| Argument | Type | Description |
|---|---|---|
| page | number | Page number (default: 1) |
| per_page | number | Results per page (default: 20) |
| contact_id* | string | The contact ID |
| entry_type | string | Filter by entry type |
{
"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"
}
}
}Update contact fields
| Argument | Type | Description |
|---|---|---|
| gender | string | Gender |
| status | string | Contact status |
| company | string | Company |
| industry | string | Industry |
| nickname | string | Nickname |
| pronouns | string | Pronouns |
| job_title | string | Job title |
| last_name | string | Last name |
| avatar_url | string | Avatar URL |
| contact_id* | string | The contact ID to update |
| first_name | string | First name |
| work_notes | string |
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.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max results to return (default: 20) |
| status | string | Contact status filter (default: active) |
| tag_name | string | Filter to contacts with this tag (e.g., "close friends") |
| is_favorite | boolean | Filter to favorites only |
| days_since_last_interaction | number | Minimum days since last activity to be included (default: 30) |
{
"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)"
}
}
}Add, update, or remove a custom field on a contact
| Argument | Type | Description |
|---|---|---|
| id | string | The custom field ID (required for "update" and "remove") |
| action* | string | Action to perform |
| contact_id | string | The contact ID (required for "add") |
| field_name | string | Field name, e.g. "Favorite Color" (required for "add") |
| field_group | string | Group to organize fields, e.g. "Preferences" |
| field_value | string | Field value (required for "add") |
{
"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\")"
}
}
}Export all CRM data as a JSON object (contacts, relationships, notes, activities, life events, reminders, gifts, debts, tasks, tags)
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Get CRM statistics and overview (contact counts, activity counts, pending items, etc.)
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| id | string | The debt ID (required for "update", "settle", "delete", "restore") |
| page | number | Page number for "list" (default: 1) |
| action* | string | Action to perform |
| amount | number | Amount owed (required for "create", optional for "update") |
| reason | string | Reason for the debt |
| status | string | Filter by status (for "list" only) |
| currency | string | Currency (default: USD) |
| per_page | number | Results per page for "list" (default: 20) |
Get food preferences for a contact (dietary restrictions, allergies, favorites, dislikes)
| Argument | Type | Description |
|---|---|---|
| contact_id* | string | The contact ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"contact_id"
],
"properties": {
"contact_id": {
"type": "string",
"description": "The contact ID"
}
}
}Set or update food preferences for a contact. Replaces all fields - pass all known preferences, not just changes.
| Argument | Type | Description |
|---|---|---|
| notes | string | Additional notes about food preferences |
| allergies | array | Food allergies (e.g. ["peanuts", "shellfish"]) |
| contact_id* | string | The contact ID |
| disliked_foods | array | Disliked foods |
| favorite_foods | array | Favorite foods |
| dietary_restrictions | array | Dietary restrictions (e.g. ["vegetarian", "gluten-free"]) |
{
"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\"])"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| page | number | Page number (default: 1) |
| status | string | Filter by status |
| sort_by | string | Sort field (default: date for tracker mode, created_at otherwise) |
| occasion | string | Filter by occasion (fuzzy match, e.g. "birthday", "Christmas") |
| per_page | number | Results per page (default: 20) |
| direction | string | Filter by direction |
| contact_id | string | Filter by contact ID |
| sort_order | string | Sort direction (default: desc) |
| include_deleted | boolean | Include soft-deleted gifts in results (default: false) |
{
"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)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| id | string | The gift ID (required for "update", "delete", "restore") |
| url | string | Link to the gift |
| date | string | Date of giving/receiving (ISO date) |
| name | string | Gift name (required for "create") |
| action* | string | Action to perform |
| status | string | Gift status (default: idea) |
| currency | string | Currency (default: USD) |
| occasion | string | Occasion (e.g. "Birthday", "Christmas") |
| direction |
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.
| Argument | Type | Description |
|---|---|---|
| query* | string | Search term |
| entity_types | array | Optional: filter to specific entity types (default: all types) |
| limit_per_type | number | Max results per entity type (default: 10) |
{
"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)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| id | string | The life event ID (required for "update", "delete", "restore") |
| page | number | Page number for "list" (default: 1) |
| title | string | Title (e.g. "Started at Google", "Moved to Berlin") - required for "create", optional for "update" |
| action* | string | Action to perform |
| per_page | number | Results per page for "list" (default: 20) |
| contact_id | string | The contact ID (required for "create" and "list") |
| event_type | string | Event type (e.g. "new_job", "got_married", "moved") - required for "create", optional for "update" |
| description |
Open a page to manage push notification subscriptions in your browser. Enables/disables web push notifications for birthday reminders and other alerts.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}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)
| Argument | Type | Description |
|---|---|---|
| action* | string | Action to perform |
| timezone | string | IANA timezone (e.g. "America/New_York", "Europe/London") |
| reminder_offsets | array | 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 | string | Time of day for birthday reminders in HH:MM 24-hour format (e.g. "09:00") |
| birthday_reminder_offsets | array | Array of day offsets for birthday reminders (e.g. [0,7,30] = day-of, 1 week before, 1 month before) |
{
"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)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| page | number | Page number (default: 1) |
| query | string | Search term matched against note title and body |
| sort_by | string | Sort field (default: updated_at) |
| per_page | number | Results per page (default: 20) |
| tag_name | string | Filter to notes belonging to contacts with this tag |
| is_pinned | boolean | Filter by pinned status |
| contact_id | string | Filter by contact ID (optional - omit to search across all contacts) |
| sort_order | string | Sort direction (default: desc) |
| include_deleted | boolean | Include soft-deleted notes in results (default: false) |
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.
| Argument | Type | Description |
|---|---|---|
| id | string | The note ID (required for "update", "delete", "restore") |
| body | string | Note body, supports markdown (required for "create", optional for "update") |
| title | string | Note title (optional for "create" and "update") |
| action* | string | Action to perform |
| is_pinned | boolean | Pin/unpin note (optional for "create" and "update") |
| contact_id | string | The contact ID (required for "create") |
{
"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\")"
}
}
}Create a custom notification
| Argument | Type | Description |
|---|---|---|
| body | string | Notification body |
| type* | string | Notification type |
| title* | string | Notification title |
| contact_id | string | Related contact ID |
{
"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"
}
}
}List notifications (newest first)
| Argument | Type | Description |
|---|---|---|
| page | number | Page number (default: 1) |
| per_page | number | Results per page (default: 20) |
| unread_only | boolean | Only show unread notifications |
{
"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"
}
}
}Mark notification(s) as read. Pass id for a single notification, or all=true for all.
| Argument | Type | Description |
|---|---|---|
| id | string | The notification ID (required unless all=true) |
| all | boolean | Mark all notifications as read (default: false) |
{
"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)"
}
}
}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.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| id | string | The relationship ID (required for "update" and "remove") |
| notes | string | Notes about this relationship (optional for "add" and "update") |
| action* | string | Action to perform |
| contact_id | string | The source contact ID (required for "add" and "list") |
| relationship_type | string | 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. |
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.
| Argument | Type | Description |
|---|---|---|
| id | string | The reminder ID (required for "update", "complete", "snooze", "delete", "restore") |
| page | number | Page number for "list" (default: 1) |
| title | string | Reminder title (required for "create", optional for "update") |
| action* | string | Action to perform |
| status | string | Filter by status (for "list" only) |
| new_date | string | New reminder date (ISO date YYYY-MM-DD) (required for "snooze") |
| per_page | number | Results per page for "list" (default: 20) |
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.
| Argument | Type | Description |
|---|---|---|
| id | string | The tag ID (required for update, delete, untag_contact) |
| name | string | Tag name (required for create and tag_contact) |
| action* | string | Action to perform |
| contact_id | string | The contact ID (required for tag_contact and untag_contact) |
{
"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)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| id | string | The task ID (required for "update", "complete", "delete", "restore") |
| page | number | Page number for "list" (default: 1) |
| title | string | Task title (required for "create", optional for "update") |
| action* | string | Action to perform |
| status | string | Status (optional for "update", filter for "list") |
| due_date | string | Due date (ISO date, optional for "create" and "update") |
| per_page | number | Results per page for "list" (default: 20) |
| priority | string | Priority (optional for "create"/"update", filter for "list") |
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.
| Argument | Type | Description |
|---|---|---|
| month | number | Optional: show all birthdays in a specific month (1-12) instead of using days_ahead |
| days_ahead | number | Look-ahead window in days from today (default: 30). Ignored if month is provided. |
{
"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."
}
}
}Find upcoming and overdue reminders across all contacts. Returns reminders sorted by date (overdue first, then soonest upcoming).
| Argument | Type | Description |
|---|---|---|
| status | string | Filter by reminder status (default: active) |
| days_ahead | number | Look-ahead window in days from today (default: 14) |
| include_overdue | boolean | Include overdue reminders with reminder_date before today (default: true) |
{
"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)"
}
}
}| Custom activity type ID |
| duration_minutes | number | Duration in minutes |
| participant_contact_ids | array | Contact IDs of participants (required for "create", optional for "update") |
{
"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\")"
}
}
}| State or province |
{
"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"
}
}
}| is_favorite |
| boolean |
| Mark as favorite |
| maiden_name | string | Maiden name |
| met_at_date | string | Date you met this person (YYYY-MM-DD) |
| middle_name | string | Middle name |
| birthday_day | number | Birthday day (1-31), used with birthday_mode=month_day |
| birthday_date | string | Full birthday date (YYYY-MM-DD), used with birthday_mode=full_date |
| birthday_mode | string | Birthday mode: full_date (YYYY-MM-DD), month_day (month + day only), or approximate_age (birth year estimate) |
| deceased_date | string | Date of death (YYYY-MM-DD) |
| birthday_month | number | Birthday month (1-12), used with birthday_mode=month_day |
| met_at_location | string | Where you met this person |
| met_description | string | Story of how you met |
| met_through_contact_id | string | Contact ID of person who introduced you |
| birthday_year_approximate | number | Approximate birth year, used with birthday_mode=approximate_age |
{
"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"
}
}
}{
"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)"
}
}
}| Work notes |
| is_favorite | boolean | Mark as favorite |
| maiden_name | string | Maiden name |
| met_at_date | string | Date you met this person |
| middle_name | string | Middle name |
| birthday_day | number | Birthday day (1-31) |
| birthday_date | string | Full birthday date (YYYY-MM-DD) |
| birthday_mode | string | Birthday mode |
| deceased_date | string | Date of death (YYYY-MM-DD) |
| birthday_month | number | Birthday month (1-12) |
| met_at_location | string | Where you met this person |
| met_description | string | How you met |
| met_through_contact_id | string | Contact ID of person who introduced you |
| birthday_year_approximate | number | Approximate birth year |
{
"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"
}
}
}| direction | string | Who owes whom (required for "create", optional for "update") |
| contact_id | string | The contact ID (required for "create" and "summary", optional filter for "list") |
| incurred_at | string | When the debt was incurred (ISO date) |
| include_deleted | boolean | Include soft-deleted debts in "list" results (default: false) |
{
"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)"
}
}
}| string |
| Giving to or receiving from this contact (required for "create") |
| contact_id | string | The contact ID (required for "create") |
| description | string | Description |
| estimated_cost | number | Estimated cost |
{
"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"
}
}
}| string |
| Description (optional for "create" and "update") |
| occurred_at | string | When it happened (ISO date, optional for "create" and "update") |
| include_deleted | boolean | Include soft-deleted life events in "list" results (default: false) |
| related_contact_ids | array | IDs of other contacts involved (optional for "create" and "update") |
{
"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\")"
}
}
}{
"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)"
}
}
}| related_contact_id |
| string |
| The related contact ID (required for "add") |
{
"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\")"
}
}
}| frequency | string | Frequency (default: one_time, optional for "create" and "update") |
| contact_id | string | The contact ID (required for "create", optional filter for "list") |
| description | string | Description (optional for "create" and "update") |
| reminder_date | string | When to remind (ISO date YYYY-MM-DD) (required for "create", optional for "update") |
| include_deleted | boolean | Include soft-deleted reminders in "list" results (default: false) |
{
"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)"
}
}
}| contact_id | string | Link to a contact (optional for "create"/"update", filter for "list") |
| description | string | Description (optional for "create" and "update") |
| include_deleted | boolean | Include soft-deleted tasks in "list" results (default: false) |
{
"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)"
}
}
}