Skip to main content
Glama
tool-discovery-baseline.json52.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 } } ] }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kesslerio/attio-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server