What is an OpenVerb Library? OpenVerb Core is the execution engine, but OpenVerb Libraries (like this one) are reusable AI action blueprints. They are NOT npm packages. You can copy the schema directly into an AI prompt to instantly give it a structured action space.

CRM Workflow

v1.0.0
Published by @OpenVerb Official
crm.starter
Updated 22 days ago

Universal CRM workflow verbs. Manage contacts, deals, pipelines, and customer communications. The foundation for any sales or relationship management AI agent.

crmsalescontactsdealspipeline
4867
129
0
crm.starter.create_contact
Create a new contact record in the CRM

Input

{
  "type": "object",
  "required": [
    "name",
    "email"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Full name of the contact"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Labels for segmentation"
    },
    "email": {
      "type": "string",
      "description": "Primary email address"
    },
    "phone": {
      "type": "string",
      "description": "Phone number"
    },
    "company": {
      "type": "string",
      "description": "Company or organization"
    }
  }
}

Output

{
  "type": "object",
  "properties": {
    "contactId": {
      "type": "string"
    },
    "createdAt": {
      "type": "string"
    }
  }
}
Policies:require_authwrite_receipt
crm.starter.update_deal
Update the status or details of a sales deal

Input

{
  "type": "object",
  "required": [
    "dealId"
  ],
  "properties": {
    "notes": {
      "type": "string"
    },
    "stage": {
      "enum": [
        "prospecting",
        "qualification",
        "proposal",
        "negotiation",
        "closed_won",
        "closed_lost"
      ],
      "type": "string"
    },
    "value": {
      "type": "number",
      "description": "Deal value in cents"
    },
    "dealId": {
      "type": "string"
    }
  }
}

Output

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "updatedAt": {
      "type": "string"
    }
  }
}
Policies:require_auth
crm.starter.send_outreach
Send a personalized outreach email or message to a contact

Input

{
  "type": "object",
  "required": [
    "contactId",
    "channel",
    "body"
  ],
  "properties": {
    "body": {
      "type": "string"
    },
    "channel": {
      "enum": [
        "email",
        "sms",
        "linkedin"
      ],
      "type": "string"
    },
    "subject": {
      "type": "string"
    },
    "contactId": {
      "type": "string"
    },
    "templateId": {
      "type": "string",
      "description": "Optional message template to use"
    }
  }
}

Output

{
  "type": "object",
  "properties": {
    "messageId": {
      "type": "string"
    },
    "deliveredAt": {
      "type": "string"
    }
  }
}
Policies:require_authrate_limit
crm.starter.list_pipeline
List all deals in the pipeline, optionally filtered by stage

Input

{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "number"
    },
    "stage": {
      "type": "string",
      "description": "Filter by pipeline stage"
    },
    "ownerId": {
      "type": "string",
      "description": "Filter by sales rep"
    }
  }
}

Output

{
  "type": "object",
  "properties": {
    "deals": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "totalValue": {
      "type": "number"
    }
  }
}
crm.starter.assign_owner
Assign or reassign a contact or deal to a sales representative

Input

{
  "type": "object",
  "required": [
    "entityType",
    "entityId",
    "ownerId"
  ],
  "properties": {
    "ownerId": {
      "type": "string"
    },
    "entityId": {
      "type": "string"
    },
    "entityType": {
      "enum": [
        "contact",
        "deal"
      ],
      "type": "string"
    }
  }
}

Output

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    }
  }
}
Policies:require_admin
OpenVerb Sandbox

Paste a Verb Library JSON schema here to define what actions the AI can perform.

Ask the AI to perform a task. It will use the vocabulary defined in your library.

The AI proposes a structured action based on your library vocabulary.

Waiting for prompt...

OpenVerb Core intercepts the AI's action and validates it before execution.

Verb exists in library
Payload matches JSON Schema
Policy requirements passed
Inputs valid and sanitized

The validated action is routed to the application backend for execution.

Waiting...

OpenVerb Core generates an execution receipt for full auditability.

Waiting for execution...