tool-discovery-baseline.json•52.1 kB
{
"generatedAt": "2025-10-01T20:18:04.969Z",
"toolCount": 33,
"tools": [
{
"name": "aaa-health-check",
"description": "Returns server status without requiring any credentials.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": true
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "add-record-to-list",
"description": "Add company or person to list with optional initial values. | WRITE: requires approval | Does not: create records; record must exist first. | Requires list UUID, record UUID, object type. | If errors occur: If not found, create record first with create-record.",
"inputSchema": {
"type": "object",
"properties": {
"initialValues": {
"type": "object",
"description": "Initial values for the list entry (e.g., {\"stage\": \"Prospect\"})",
"example": {
"stage": "Qualified"
}
},
"listId": {
"type": "string",
"description": "UUID of the list to add the record to",
"example": "550e8400-e29b-41d4-a716-446655440000"
},
"objectType": {
"type": "string",
"description": "Type of record (e.g., \"companies\", \"people\")",
"enum": ["companies", "people"],
"example": "companies"
},
"recordId": {
"type": "string",
"description": "UUID of the record to add to the list",
"example": "660e8400-e29b-41d4-a716-446655440001"
}
},
"required": ["listId", "recordId", "objectType"],
"additionalProperties": false
}
},
{
"name": "advanced-filter-list-entries",
"description": "Filter entries with multi-condition queries (AND/OR logic). | Does not: modify entries; read-only. | Requires listId, filters array; matchAny for OR logic. | If errors occur: Use filter-list-entries for single conditions.",
"inputSchema": {
"type": "object",
"properties": {
"filters": {
"type": "object",
"description": "Advanced filter configuration",
"properties": {
"filters": {
"type": "array",
"description": "Array of filter conditions",
"items": {
"type": "object",
"properties": {
"attribute": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Slug of the attribute to filter by (e.g., 'stage', 'status')"
}
},
"required": ["slug"]
},
"condition": {
"type": "string",
"description": "Filter condition (e.g., 'equals', 'contains', 'greater_than')",
"enum": [
"equals",
"not_equals",
"contains",
"not_contains",
"starts_with",
"ends_with",
"greater_than",
"less_than",
"greater_than_or_equals",
"less_than_or_equals",
"is_empty",
"is_not_empty",
"is_set",
"is_not_set"
]
},
"value": {
"description": "Value to filter by (type depends on the attribute)"
},
"logicalOperator": {
"type": "string",
"description": "Logical operator to use with the next filter (default: 'and')",
"enum": ["and", "or"]
}
},
"required": ["attribute", "condition", "value"]
}
},
"matchAny": {
"type": "boolean",
"description": "When true, at least one filter must match (OR logic). When false, all filters must match (AND logic). Default: false"
}
},
"required": ["filters"]
},
"limit": {
"type": "number",
"description": "Maximum number of entries to fetch (default: 20)",
"example": 50
},
"listId": {
"type": "string",
"description": "ID of the list to filter entries from",
"example": "550e8400-e29b-41d4-a716-446655440000"
},
"offset": {
"type": "number",
"description": "Number of entries to skip for pagination (default: 0)",
"example": 0
}
},
"required": ["listId", "filters"],
"additionalProperties": false
}
},
{
"name": "create-note",
"description": "Create note for companies, people, or deals. | WRITE: requires approval | Does not: update or delete notes; creates only. | Requires resource_type, record_id, title, content. | If errors occur: If record not found, use records_search first.",
"inputSchema": {
"type": "object",
"properties": {
"content": {
"type": "string",
"description": "Content of the note"
},
"record_id": {
"type": "string",
"description": "ID of the record to attach the note to"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Target resource type"
},
"title": {
"type": "string",
"description": "Title of the note"
}
},
"required": ["resource_type", "record_id", "title", "content"],
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": false
}
},
{
"name": "create-record",
"description": "Create a new record of any supported type",
"inputSchema": {
"type": "object",
"properties": {
"record_data": {
"type": "object",
"description": "Data to create",
"additionalProperties": true
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
},
"return_details": {
"type": "boolean",
"default": true,
"description": "Return full details"
}
},
"required": ["resource_type", "record_data"],
"additionalProperties": false,
"examples": [
{
"resource_type": "people",
"record_data": {
"name": "Taylor Swift",
"email_addresses": [
{
"email_address": "taylor@example.com"
}
]
},
"return_details": true
}
]
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": false
}
},
{
"name": "delete-record",
"description": "Delete a record of any supported type",
"inputSchema": {
"type": "object",
"properties": {
"record_id": {
"type": "string",
"description": "Record ID to delete"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
}
},
"required": ["resource_type", "record_id"],
"additionalProperties": false,
"examples": [
{
"resource_type": "tasks",
"record_id": "task_abc123"
}
]
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": true
}
},
{
"name": "fetch",
"description": "Retrieve the full record payload for a search result ID.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifier emitted by the search tool (<resource>:<id>)."
}
},
"required": ["id"],
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "filter-list-entries",
"description": "Filter list entries by single attribute condition. | Does not: combine conditions; use advanced-filter for multi-condition. | Requires listId, attributeSlug, condition, value. | If errors occur: Use get-list-details for valid attribute slugs.",
"inputSchema": {
"type": "object",
"properties": {
"attributeSlug": {
"type": "string",
"description": "Slug of the attribute to filter by (e.g., 'stage', 'status')",
"example": "stage"
},
"condition": {
"type": "string",
"description": "Filter condition (e.g., 'equals', 'contains', 'greater_than')",
"enum": [
"equals",
"not_equals",
"contains",
"not_contains",
"starts_with",
"ends_with",
"greater_than",
"less_than",
"greater_than_or_equals",
"less_than_or_equals",
"is_empty",
"is_not_empty",
"is_set",
"is_not_set"
],
"example": "equals"
},
"limit": {
"type": "number",
"description": "Maximum number of entries to fetch (default: 20)",
"example": 50
},
"listId": {
"type": "string",
"description": "ID of the list to filter entries from",
"example": "550e8400-e29b-41d4-a716-446655440000"
},
"offset": {
"type": "number",
"description": "Number of entries to skip for pagination (default: 0)",
"example": 0
},
"value": {
"description": "Value to filter by (type depends on the attribute)",
"example": "Qualified"
}
},
"required": ["listId", "attributeSlug", "condition", "value"],
"additionalProperties": false
}
},
{
"name": "filter-list-entries-by-parent",
"description": "Filter entries by parent record attributes (industry, role). | Does not: search multiple lists or modify records. | Requires listId, parentObjectType, parentAttributeSlug, condition, value. | If errors occur: Use records_discover_attributes for valid slugs.",
"inputSchema": {
"type": "object",
"properties": {
"condition": {
"type": "string",
"description": "Filter condition (e.g., \"equals\", \"contains\", \"starts_with\")",
"enum": [
"equals",
"not_equals",
"contains",
"not_contains",
"starts_with",
"ends_with",
"greater_than",
"less_than",
"greater_than_or_equals",
"less_than_or_equals",
"is_empty",
"is_not_empty",
"is_set",
"is_not_set"
],
"example": "contains"
},
"limit": {
"type": "number",
"description": "Maximum number of entries to fetch (default: 20)",
"example": 50
},
"listId": {
"type": "string",
"description": "UUID of the list to filter entries from",
"example": "550e8400-e29b-41d4-a716-446655440000"
},
"offset": {
"type": "number",
"description": "Number of entries to skip for pagination (default: 0)",
"example": 0
},
"parentAttributeSlug": {
"type": "string",
"description": "Attribute of the parent record to filter by (e.g., \"name\", \"email_addresses\", \"categories\")",
"example": "categories"
},
"parentObjectType": {
"type": "string",
"description": "Type of the parent record (e.g., \"companies\", \"people\")",
"enum": ["companies", "people"],
"example": "companies"
},
"value": {
"description": "Value to filter by (type depends on the attribute)",
"example": "Technology"
}
},
"required": [
"listId",
"parentObjectType",
"parentAttributeSlug",
"condition",
"value"
],
"additionalProperties": false
}
},
{
"name": "filter-list-entries-by-parent-id",
"description": "Filter entries by exact parent record UUID. | Does not: search multiple lists. | Requires list UUID, record UUID; faster than attribute filtering. | If errors occur: Use get-record-list-memberships for workspace-wide search.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Maximum number of entries to fetch (default: 20)",
"example": 50
},
"listId": {
"type": "string",
"description": "UUID of the list to filter entries from",
"example": "550e8400-e29b-41d4-a716-446655440000"
},
"offset": {
"type": "number",
"description": "Number of entries to skip for pagination (default: 0)",
"example": 0
},
"recordId": {
"type": "string",
"description": "UUID of the parent record to filter by",
"example": "660e8400-e29b-41d4-a716-446655440001"
}
},
"required": ["listId", "recordId"],
"additionalProperties": false
}
},
{
"name": "get-list-details",
"description": "Retrieve schema and configuration for a specific list (stages, fields, attributes). | Does not: modify list structure or retrieve list entries. | Requires valid list UUID or slug; accepts both formats. | If errors occur: Use get-lists to discover available list IDs and slugs first.",
"inputSchema": {
"type": "object",
"properties": {
"listId": {
"type": "string",
"description": "ID or slug of the list to get details for",
"example": "sales-pipeline"
}
},
"required": ["listId"],
"additionalProperties": false
}
},
{
"name": "get-list-entries",
"description": "Retrieve all records in a list with pagination (companies, people in pipelines). | Does not: filter entries or modify list memberships. | Requires list UUID (not slug); default limit 20, max per page varies by API. | If errors occur: Use filter-list-entries for attribute-based filtering instead.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Maximum number of entries to fetch (default: 20)",
"example": 50
},
"listId": {
"type": "string",
"description": "UUID of the list to get entries for",
"example": "550e8400-e29b-41d4-a716-446655440000"
},
"offset": {
"type": "number",
"description": "Number of entries to skip for pagination (default: 0)",
"example": 0
}
},
"required": ["listId"],
"additionalProperties": false
}
},
{
"name": "get-lists",
"description": "Retrieve all CRM lists (sales pipelines, lead stages, customer segments). | Does not: create or modify lists, only reads existing lists. | Returns all lists visible to the authenticated workspace. | If errors occur: Use get-list-details to inspect individual list schemas.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
},
{
"name": "get-record-list-memberships",
"description": "Find all lists containing a specific company or person record. | Does not: modify list memberships or retrieve list entries. | Requires recordId; processes 5 lists in parallel by default (max 20). | If errors occur: If record not found, verify recordId with records_search first.",
"inputSchema": {
"type": "object",
"properties": {
"batchSize": {
"type": "number",
"description": "Number of lists to process in parallel (1-20, default: 5)",
"minimum": 1,
"maximum": 20,
"default": 5
},
"includeEntryValues": {
"type": "boolean",
"description": "Whether to include entry values in the response (e.g., stage, status)",
"default": false
},
"objectType": {
"type": "string",
"description": "Type of record (e.g., \"companies\", \"people\")",
"enum": ["companies", "people"]
},
"recordId": {
"type": "string",
"description": "ID of the record to find in lists",
"example": "550e8400-e29b-41d4-a716-446655440000"
}
},
"required": ["recordId"],
"additionalProperties": false
}
},
{
"name": "get-workspace-member",
"description": "Retrieve profile and access details for one workspace member. | Does not: update member information or change permissions. | Requires workspace_member_id from list/search results; read-only. | If errors occur: Use list-workspace-members to confirm the memberId before retrying.",
"inputSchema": {
"type": "object",
"properties": {
"memberId": {
"type": "string",
"description": "Workspace member ID (UUID).",
"example": "550e8400-e29b-41d4-a716-446655440000"
}
},
"required": ["memberId"],
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "list-notes",
"description": "Retrieve notes for a record with timestamps. | Does not: create or modify notes; read-only. | Requires resource_type, record_id; sorted by creation date. | If errors occur: If empty, verify record has notes with records_get_details.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "number",
"minimum": 1,
"maximum": 100,
"default": 10,
"description": "Maximum number of results to return"
},
"offset": {
"type": "number",
"minimum": 0,
"default": 0,
"description": "Number of results to skip for pagination"
},
"parent_record_id": {
"type": "string",
"description": "Alias for record_id (backward compatibility)"
},
"record_id": {
"type": "string",
"description": "Record ID to list notes for"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
}
},
"required": ["resource_type"],
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "list-workspace-members",
"description": "List workspace members to plan assignments and access checks. | Does not: change access levels or invite new members; read-only. | Supports optional search, pagination (1-100 per page, default 25). | If errors occur: Use search-workspace-members for targeted lookups.",
"inputSchema": {
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "Page number (1-indexed).",
"default": 1,
"minimum": 1,
"example": 1
},
"pageSize": {
"type": "integer",
"description": "Number of results per page (max 100).",
"default": 25,
"minimum": 1,
"maximum": 100,
"example": 50
},
"search": {
"type": "string",
"description": "Optional case-insensitive match on member name or email.",
"example": "Taylor",
"minLength": 1
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "records_batch",
"description": "Execute batched record operations (create/update/delete/get/search). | WRITE: requires approval | Does not: ignore approval guardrails; hosts may require confirmation. | operation_type must be specified; enforce per-operation limits. | If errors occur: Run records.search first to stage IDs or payloads for batching.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "number",
"minimum": 1,
"maximum": 100,
"default": 10,
"description": "Maximum number of results to return"
},
"offset": {
"type": "number",
"minimum": 0,
"default": 0,
"description": "Number of results to skip for pagination"
},
"operation_type": {
"type": "string",
"enum": ["create", "update", "delete", "search", "get"],
"description": "Batch operation type (legacy format)"
},
"operations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"operation": {
"type": "string",
"enum": ["create", "update", "delete"],
"description": "Operation type for this specific operation"
},
"record_data": {
"type": "object",
"additionalProperties": true,
"description": "Record data for the operation"
}
},
"required": ["operation", "record_data"],
"additionalProperties": false
},
"description": "Array of operations to perform"
},
"record_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Record IDs for delete/get (legacy format)"
},
"records": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Record data for create/update (legacy format)"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
}
},
"required": ["resource_type"],
"additionalProperties": false,
"examples": [
{
"resource_type": "companies",
"operation_type": "create",
"records": [
{
"name": "Example Ltd.",
"domain": "example.com"
},
{
"name": "Sample Inc.",
"domain": "sample.io"
}
]
}
]
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": true
}
},
{
"name": "records_discover_attributes",
"description": "Discover available attributes (standard/custom) for a resource. | Does not: alter schema or create fields. | Requires resource_type; optional categories selects subsets. | If errors occur: Follow with records.get_attributes to inspect specific fields.",
"inputSchema": {
"type": "object",
"properties": {
"categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attribute categories"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
}
},
"required": ["resource_type"],
"additionalProperties": false,
"examples": [
{
"resource_type": "people",
"categories": ["custom"]
}
]
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "records_get_attributes",
"description": "Retrieve attribute metadata for a given resource type. | Does not: modify schema definitions or record data. | Requires resource_type; optional categories narrows groups. | If errors occur: Use records.discover_attributes for grouped schema discovery.",
"inputSchema": {
"type": "object",
"properties": {
"categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attribute categories"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specific attribute field names"
},
"record_id": {
"type": "string",
"description": "Record ID to get attributes for (optional)"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
}
},
"required": ["resource_type"],
"additionalProperties": false,
"examples": [
{
"resource_type": "companies",
"categories": ["standard"]
}
]
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "records_get_details",
"description": "Fetch a single record with enriched attribute formatting. | Does not: search or filter result sets; use records.search* tools instead. | Requires resource_type and record_id; optional fields filter output. | If errors occur: Validate record IDs with records.search before retrying.",
"inputSchema": {
"type": "object",
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Fields to include"
},
"record_id": {
"type": "string",
"description": "Record ID to retrieve"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
}
},
"required": ["resource_type", "record_id"],
"additionalProperties": false,
"examples": [
{
"resource_type": "companies",
"record_id": "company_123456",
"fields": ["name", "domains"]
}
]
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "records_get_info",
"description": "Retrieve enriched info subsets (contact, business, social) for a record. | Does not: search lists of records or mutate data. | Requires resource_type, record_id, and info_type (contact|business|social). | If errors occur: Use records.get_details if you need the full record payload.",
"inputSchema": {
"type": "object",
"properties": {
"record_id": {
"type": "string",
"description": "Unique identifier of the record"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource"
}
},
"required": ["resource_type", "record_id"],
"additionalProperties": false,
"examples": [
{
"resource_type": "companies",
"record_id": "company_123456"
}
]
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "records_search",
"description": "Search across companies, people, tasks, and records | Does not: create or modify records | Returns max 100 results (default: 10) | If errors occur: use records.discover_attributes to find searchable fields",
"inputSchema": {
"type": "object",
"properties": {
"created_after": {
"type": "string",
"description": "Filter records created after this date (ISO 8601)",
"format": "date-time"
},
"created_before": {
"type": "string",
"description": "Filter records created before this date (ISO 8601)",
"format": "date-time"
},
"date_field": {
"type": "string",
"enum": ["created_at", "updated_at"],
"default": "created_at",
"description": "Which date field to filter on"
},
"date_from": {
"type": "string",
"description": "Start date for filtering (ISO 8601 format)",
"format": "date-time"
},
"date_to": {
"type": "string",
"description": "End date for filtering (ISO 8601 format)",
"format": "date-time"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Fields to search (content)"
},
"filters": {
"type": "object",
"description": "Advanced filter conditions",
"additionalProperties": true
},
"limit": {
"type": "number",
"minimum": 1,
"maximum": 100,
"default": 10,
"description": "Maximum number of results to return"
},
"match_type": {
"type": "string",
"enum": ["exact", "partial", "fuzzy"],
"description": "String matching"
},
"offset": {
"type": "number",
"minimum": 0,
"default": 0,
"description": "Number of results to skip for pagination"
},
"query": {
"type": "string",
"description": "Search query string"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
},
"search_type": {
"type": "string",
"enum": ["basic", "content", "timeframe"],
"description": "Type of search"
},
"sort": {
"type": "string",
"enum": ["relevance", "created", "modified", "name"],
"description": "Sort order"
},
"timeframe": {
"type": "string",
"enum": [
"today",
"yesterday",
"this_week",
"last_week",
"this_month",
"last_month",
"last_7_days",
"last_30_days",
"last_90_days"
],
"description": "Relative timeframe filter"
},
"updated_after": {
"type": "string",
"description": "Filter records updated after this date (ISO 8601)",
"format": "date-time"
},
"updated_before": {
"type": "string",
"description": "Filter records updated before this date (ISO 8601)",
"format": "date-time"
}
},
"required": ["resource_type"],
"additionalProperties": false,
"examples": [
{
"resource_type": "people",
"query": "customer@example.com",
"limit": 5
}
]
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "records_search_advanced",
"description": "Run complex searches with nested filters across resource types. | Does not: mutate records; use records.update or records.delete. | Supports filter groups, scoring, pagination, and up to 100 items. | If errors occur: If filters fail, fetch valid attributes via records.discover_attributes.",
"inputSchema": {
"type": "object",
"properties": {
"filters": {
"type": "object",
"description": "Complex filter conditions with nested array structure.\n\nRequired format:\n{\n \"filters\": [\n {\n \"attribute\": {\"slug\": \"field_name\"}, \n \"condition\": \"operator\", \n \"value\": \"search_value\"\n }\n ]\n}\n\nExamples:\n- Single filter: {\"filters\": [{\"attribute\": {\"slug\": \"name\"}, \"condition\": \"contains\", \"value\": \"Tech\"}]}\n- Multiple filters: {\"filters\": [{\"attribute\": {\"slug\": \"name\"}, \"condition\": \"contains\", \"value\": \"Tech\"}, {\"attribute\": {\"slug\": \"categories\"}, \"condition\": \"equals\", \"value\": \"Technology\"}]}\n- OR logic: {\"filters\": [...], \"matchAny\": true}\n\nSupported conditions: contains, equals, starts_with, ends_with, greater_than, less_than, is_empty, is_not_empty",
"additionalProperties": true
},
"limit": {
"type": "number",
"minimum": 1,
"maximum": 100,
"default": 10,
"description": "Maximum number of results to return"
},
"offset": {
"type": "number",
"minimum": 0,
"default": 0,
"description": "Number of results to skip for pagination"
},
"query": {
"type": "string",
"description": "Search query string"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
},
"sort_by": {
"type": "string",
"description": "Field to sort results by"
},
"sort_order": {
"type": "string",
"enum": ["asc", "desc"],
"default": "asc",
"description": "Sort order"
}
},
"required": ["resource_type"],
"additionalProperties": false,
"examples": [
{
"resource_type": "people",
"filters": {
"filters": [
{
"attribute": {
"slug": "email_addresses.email_address"
},
"condition": "contains",
"value": "@example.com"
}
]
},
"limit": 10
}
]
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "records_search_batch",
"description": "Execute multiple searches in parallel and return grouped results. | Does not: mutate or import data; use records.batch for write operations. | Provide queries array (1–10 items recommended) and resource_type. | If errors occur: If queries fail, retry individually using records.search.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "number",
"minimum": 1,
"maximum": 100,
"description": "Maximum number of results per query (default: 20)"
},
"offset": {
"type": "number",
"minimum": 0,
"description": "Number of results to skip per query (default: 0)"
},
"queries": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of search query strings",
"minItems": 1
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Resource type to search (companies, people, records, tasks, deals)"
}
},
"required": ["resource_type", "queries"],
"additionalProperties": false,
"examples": [
{
"resource_type": "companies",
"queries": ["Acme", "Globex"],
"limit": 10
}
]
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "records_search_by_content",
"description": "Search record content (notes, activity, communications). | Does not: modify note content or attachments. | Requires resource_type and content_query; optional fields array. | If errors occur: Narrow scope with fields or switch to records.search_advanced.",
"inputSchema": {
"type": "object",
"properties": {
"content_type": {
"type": "string",
"enum": ["notes", "activity", "interactions"],
"description": "Type of content to search"
},
"limit": {
"type": "number",
"minimum": 1,
"maximum": 100,
"default": 10,
"description": "Maximum number of results to return"
},
"offset": {
"type": "number",
"minimum": 0,
"default": 0,
"description": "Number of results to skip for pagination"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
},
"search_query": {
"type": "string",
"description": "Query to search within content"
}
},
"required": ["resource_type", "content_type", "search_query"],
"additionalProperties": false,
"examples": [
{
"resource_type": "notes",
"content_type": "notes",
"search_query": "follow-up call",
"limit": 3
}
]
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "records_search_by_relationship",
"description": "Search records using relationship anchors (list, company, people). | Does not: modify memberships; use list tools for writes. | Requires resource_type and related resource identifier. | If errors occur: Use records.search to resolve IDs before calling.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "number",
"minimum": 1,
"maximum": 100,
"default": 10,
"description": "Maximum number of results to return"
},
"listId": {
"type": "string",
"description": "(Optional) List ID (must be a valid UUID if provided)"
},
"offset": {
"type": "number",
"minimum": 0,
"default": 0,
"description": "Number of results to skip for pagination"
},
"relationship_type": {
"type": "string",
"enum": [
"company_to_people",
"people_to_company",
"person_to_tasks",
"company_to_tasks",
"company_to_deals",
"person_to_deals"
],
"description": "Relationship type"
},
"source_id": {
"type": "string",
"description": "Source record ID"
},
"target_resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Target resource type"
}
},
"required": ["relationship_type", "source_id"],
"additionalProperties": false,
"examples": [
{
"relationship_type": "company_to_people",
"source_id": "company_123456",
"target_resource_type": "people",
"limit": 5
}
]
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "records_search_by_timeframe",
"description": "Filter records by creation, update, or interaction timeframes. | Does not: modify lifecycle state or scheduling follow-ups. | Requires resource_type; provide timeframe or explicit date boundaries. | If errors occur: Call records.search if timeframe filters are too restrictive.",
"inputSchema": {
"type": "object",
"properties": {
"end_date": {
"type": "string",
"format": "date",
"description": "End date (ISO 8601 format)"
},
"limit": {
"type": "number",
"minimum": 1,
"maximum": 100,
"default": 10,
"description": "Maximum number of results to return"
},
"offset": {
"type": "number",
"minimum": 0,
"default": 0,
"description": "Number of results to skip for pagination"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
},
"start_date": {
"type": "string",
"format": "date",
"description": "Start date (ISO 8601 format)"
},
"timeframe_type": {
"type": "string",
"enum": ["created", "modified", "last_interaction"],
"description": "Timeframe filter type"
}
},
"required": ["resource_type"],
"additionalProperties": false,
"examples": [
{
"resource_type": "deals",
"timeframe_type": "created",
"start_date": "2025-01-01",
"end_date": "2025-01-31"
}
]
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "remove-record-from-list",
"description": "Remove company or person from list (membership only). | WRITE: requires approval | Does not: delete underlying record; membership only. | Requires list UUID, entry UUID (not record UUID). | If errors occur: Use get-list-entries to find entry UUID.",
"inputSchema": {
"type": "object",
"properties": {
"entryId": {
"type": "string",
"description": "UUID of the list entry to remove (not the record ID)",
"example": "770e8400-e29b-41d4-a716-446655440002"
},
"listId": {
"type": "string",
"description": "UUID of the list to remove the entry from",
"example": "550e8400-e29b-41d4-a716-446655440000"
}
},
"required": ["listId", "entryId"],
"additionalProperties": false
}
},
{
"name": "search",
"description": "Simple search by query string across companies, people, lists, and tasks. For advanced filtering, date ranges, or relationships, use records.search instead.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"description": "Maximum number of results to return (default 10)."
},
"query": {
"type": "string",
"description": "Search query string (required)."
},
"type": {
"type": "string",
"enum": ["companies", "people", "lists", "tasks", "all"],
"description": "Optional resource filter (defaults to all)."
}
},
"required": ["query"],
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "search-workspace-members",
"description": "Search workspace members by name, email, or access role. | Does not: modify member profiles or permissions; lookup only. | Requires query string (minimum 2 characters). | If errors occur: If no results, list-workspace-members provides the full roster.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search term for member name, email address, or role.",
"minLength": 2,
"example": "operations lead"
}
},
"required": ["query"],
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"idempotentHint": true
}
},
{
"name": "update-list-entry",
"description": "Update list entry attributes (stage, status, custom fields). | WRITE: requires approval | Does not: update record attributes; use update-record for that. | Requires list UUID, entry UUID, attributes object. | If errors occur: Use get-list-details for valid attributes and values.",
"inputSchema": {
"type": "object",
"properties": {
"attributes": {
"type": "object",
"description": "Attributes to update on the list entry",
"properties": {
"stage": {
"type": "string",
"description": "New stage value (e.g., 'Demo Scheduling', 'Interested', 'Won')",
"example": "Demo Scheduling"
}
},
"additionalProperties": true
},
"entryId": {
"type": "string",
"description": "UUID of the list entry to update",
"example": "770e8400-e29b-41d4-a716-446655440002"
},
"listId": {
"type": "string",
"description": "UUID of the list containing the entry",
"example": "550e8400-e29b-41d4-a716-446655440000"
}
},
"required": ["listId", "entryId", "attributes"],
"additionalProperties": false
}
},
{
"name": "update-record",
"description": "Update an existing record of any supported type",
"inputSchema": {
"type": "object",
"properties": {
"record_data": {
"type": "object",
"description": "Updated data",
"additionalProperties": true
},
"record_id": {
"type": "string",
"description": "Record ID to update"
},
"resource_type": {
"type": "string",
"enum": [
"companies",
"people",
"lists",
"records",
"tasks",
"deals",
"notes"
],
"description": "Type of resource to operate on (companies, people, lists, records, tasks)"
},
"return_details": {
"type": "boolean",
"default": true,
"description": "Return full details"
}
},
"required": ["resource_type", "record_id", "record_data"],
"additionalProperties": false,
"examples": [
{
"resource_type": "records",
"record_id": "record_987654",
"record_data": {
"status": "Qualified"
},
"return_details": false
}
]
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": false
}
}
]
}