{
  "name": "unLocked CRM",
  "description": "LLM function-calling manifest for the unLocked CRM public REST API — an AI CRM, quoting, and commission-tracking platform for insurance agents and agencies.",
  "version": "1.0.0",
  "spec": {
    "openapi_json": "https://unlockedcrm.ai/.well-known/openapi.json",
    "openapi_full": "https://unlockedcrm.ai/openapi.json",
    "openapi_yaml": "https://unlockedcrm.ai/openapi.yaml",
    "swagger": "https://unlockedcrm.ai/swagger.json",
    "docs": "https://unlockedcrm.ai/api-docs",
    "markdown_docs": "https://unlockedcrm.ai/api.md",
    "mcp_manifest": "https://unlockedcrm.ai/.well-known/ai-plugin.json"
  },
  "auth": {
    "type": "api_key",
    "in": "header",
    "name": "Authorization",
    "format": "Bearer <UNLOCKED_API_KEY>",
    "how_to_obtain": "Generate an API key in unLocked CRM under Settings > API Keys."
  },
  "rate_limit": {
    "requests_per_minute": 120,
    "burst_per_second": 20,
    "on_exceeded": "HTTP 429 with Retry-After header"
  },
  "error_catalog": "https://unlockedcrm.ai/api/errors.json",
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "unlocked_crm_list_records",
        "description": "List records from a unLocked CRM collection (leads, clients, policies, commissions, tasks, appointments, quotes, and more) for the workspace tied to the API key. Supports pagination, sorting, field selection, and text search. Use unlocked_crm_get_record when you already know the record id.",
        "parameters": {
          "type": "object",
          "properties": {
            "resource": {
              "type": "string",
              "enum": [
                "leads",
                "clients",
                "activities",
                "tasks",
                "policies",
                "appointments",
                "communications",
                "webhooks",
                "pipelines",
                "pipeline_stages",
                "opportunities",
                "workflows",
                "email_campaigns",
                "commissions",
                "aca_leads",
                "agent_ai_call_logs",
                "agent_ai_scripts",
                "agent_ai_campaigns",
                "quotes",
                "tags",
                "call_recordings",
                "call_disposition_logs",
                "agent_presence",
                "inbound_campaigns",
                "inbound_vendors",
                "health",
                "whoami"
              ],
              "description": "Collection to list."
            },
            "limit": {
              "type": "integer",
              "description": "Max records to return (1-100, default 50)."
            },
            "offset": {
              "type": "integer",
              "description": "Number of records to skip for pagination."
            },
            "sort": {
              "type": "string",
              "description": "Sort expression, e.g. created_at:desc."
            },
            "fields": {
              "type": "string",
              "description": "Comma-separated list of fields to return."
            },
            "search": {
              "type": "string",
              "description": "Free-text search across common fields."
            },
            "status": {
              "type": "string",
              "description": "Filter by record status."
            }
          },
          "required": [
            "resource"
          ],
          "additionalProperties": false
        },
        "x-http": {
          "method": "GET",
          "url": "https://gzigyepfasiumngxilai.supabase.co/functions/v1/public-api"
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "unlocked_crm_get_record",
        "description": "Fetch a single unLocked CRM record by id from a given collection.",
        "parameters": {
          "type": "object",
          "properties": {
            "resource": {
              "type": "string",
              "enum": [
                "leads",
                "clients",
                "activities",
                "tasks",
                "policies",
                "appointments",
                "communications",
                "webhooks",
                "pipelines",
                "pipeline_stages",
                "opportunities",
                "workflows",
                "email_campaigns",
                "commissions",
                "aca_leads",
                "agent_ai_call_logs",
                "agent_ai_scripts",
                "agent_ai_campaigns",
                "quotes",
                "tags",
                "call_recordings",
                "call_disposition_logs",
                "agent_presence",
                "inbound_campaigns",
                "inbound_vendors",
                "health",
                "whoami"
              ],
              "description": "Collection the record belongs to."
            },
            "id": {
              "type": "string",
              "description": "UUID of the record."
            }
          },
          "required": [
            "resource",
            "id"
          ],
          "additionalProperties": false
        },
        "x-http": {
          "method": "GET",
          "url": "https://gzigyepfasiumngxilai.supabase.co/functions/v1/public-api"
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "unlocked_crm_create_record",
        "description": "Create a record in a unLocked CRM collection (for example a new lead or task). Pass the record fields in body. Use action=bulk with an array payload to create many records in one call.",
        "parameters": {
          "type": "object",
          "properties": {
            "resource": {
              "type": "string",
              "enum": [
                "leads",
                "clients",
                "activities",
                "tasks",
                "policies",
                "appointments",
                "communications",
                "webhooks",
                "pipelines",
                "pipeline_stages",
                "opportunities",
                "workflows",
                "email_campaigns",
                "commissions",
                "aca_leads",
                "agent_ai_call_logs",
                "agent_ai_scripts",
                "agent_ai_campaigns",
                "quotes",
                "tags",
                "call_recordings",
                "call_disposition_logs",
                "agent_presence",
                "inbound_campaigns",
                "inbound_vendors",
                "health",
                "whoami"
              ],
              "description": "Collection to create in."
            },
            "action": {
              "type": "string",
              "enum": [
                "bulk"
              ],
              "description": "Set to bulk to create many records at once."
            },
            "body": {
              "type": "object",
              "description": "Record fields to create. For bulk, an object with a records array.",
              "additionalProperties": true
            }
          },
          "required": [
            "resource",
            "body"
          ],
          "additionalProperties": false
        },
        "x-http": {
          "method": "POST",
          "url": "https://gzigyepfasiumngxilai.supabase.co/functions/v1/public-api"
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "unlocked_crm_update_record",
        "description": "Update an existing unLocked CRM record by id. Only the fields supplied in body are changed.",
        "parameters": {
          "type": "object",
          "properties": {
            "resource": {
              "type": "string",
              "enum": [
                "leads",
                "clients",
                "activities",
                "tasks",
                "policies",
                "appointments",
                "communications",
                "webhooks",
                "pipelines",
                "pipeline_stages",
                "opportunities",
                "workflows",
                "email_campaigns",
                "commissions",
                "aca_leads",
                "agent_ai_call_logs",
                "agent_ai_scripts",
                "agent_ai_campaigns",
                "quotes",
                "tags",
                "call_recordings",
                "call_disposition_logs",
                "agent_presence",
                "inbound_campaigns",
                "inbound_vendors",
                "health",
                "whoami"
              ]
            },
            "id": {
              "type": "string",
              "description": "UUID of the record to update."
            },
            "body": {
              "type": "object",
              "description": "Fields to update.",
              "additionalProperties": true
            }
          },
          "required": [
            "resource",
            "id",
            "body"
          ],
          "additionalProperties": false
        },
        "x-http": {
          "method": "PUT",
          "url": "https://gzigyepfasiumngxilai.supabase.co/functions/v1/public-api"
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "unlocked_crm_delete_record",
        "description": "Delete a unLocked CRM record by id. Irreversible — confirm with the user before calling.",
        "parameters": {
          "type": "object",
          "properties": {
            "resource": {
              "type": "string",
              "enum": [
                "leads",
                "clients",
                "activities",
                "tasks",
                "policies",
                "appointments",
                "communications",
                "webhooks",
                "pipelines",
                "pipeline_stages",
                "opportunities",
                "workflows",
                "email_campaigns",
                "commissions",
                "aca_leads",
                "agent_ai_call_logs",
                "agent_ai_scripts",
                "agent_ai_campaigns",
                "quotes",
                "tags",
                "call_recordings",
                "call_disposition_logs",
                "agent_presence",
                "inbound_campaigns",
                "inbound_vendors",
                "health",
                "whoami"
              ]
            },
            "id": {
              "type": "string",
              "description": "UUID of the record to delete."
            }
          },
          "required": [
            "resource",
            "id"
          ],
          "additionalProperties": false
        },
        "x-http": {
          "method": "DELETE",
          "url": "https://gzigyepfasiumngxilai.supabase.co/functions/v1/public-api"
        },
        "x-needs-approval": true
      }
    },
    {
      "type": "function",
      "function": {
        "name": "unlocked_crm_whoami",
        "description": "Return the workspace, plan, and scopes the supplied API credentials resolve to. Call this first to verify credentials and available permissions.",
        "parameters": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "x-http": {
          "method": "GET",
          "url": "https://gzigyepfasiumngxilai.supabase.co/functions/v1/public-api?resource=whoami"
        }
      }
    }
  ]
}