# tag_lead (/docs/mcp/tools/tag-lead)

{/* Generated by scripts/sync-mcp-tools.mjs from happierleads-api. Do not edit: change src/routes/mcp/toolDocs.json there, or add content/mcp-notes/tag_lead.mdx. */}

**Tag a lead** · Changes data · Acts outside your account

Attach an existing tag to a lead. Get the tagId from list_tags, or make a new tag with create_tag first; leadId comes from get_leads. Adding a tag starts any of the website's automations that trigger on a tag being added, which can push the lead to a CRM, Slack, a webhook or an email campaign. Fails with 'Tag Id already exist' when the lead already has the tag. Remove a tag with remove_tags_from_lead. Returns status 'Successful'.

| Connection | Account URL, team member URL or OAuth |
| --- | --- |

## Parameters [#parameters]

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `leadId` | `string` | Yes | Lead id (the _id of a row returned by get_leads). |
| `tagId` | `string` | Yes | Tag id (24 hex characters) from list_tags or the tagId returned by create_tag. |

## Tool definition [#tool-definition]

What your assistant receives from `tools/list`:

```json
{
  "name": "tag_lead",
  "title": "Tag a lead",
  "annotations": {
    "title": "Tag a lead",
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": true
  },
  "inputSchema": {
    "type": "object",
    "properties": {
      "leadId": {
        "type": "string",
        "description": "Lead id (the _id of a row returned by get_leads)."
      },
      "tagId": {
        "type": "string",
        "description": "Tag id (24 hex characters) from list_tags or the tagId returned by create_tag."
      }
    },
    "required": [
      "leadId",
      "tagId"
    ]
  }
}
```
