# add_contact_tags

Add tags to a contact

Agent View of the PolicyLayer registry record for `add_contact_tags`. HTML page: https://policylayer.com/tools/ghl/add-contact-tags

## Facts

- Tool: `add_contact_tags`
- Server: Ghl (`ghl-mcp-server`) — https://policylayer.com/tools/ghl.md
- Install: `npx -y ghl-mcp-server`
- Homepage: git+https://github.com/mastanley13/ghl-mcp.git
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 2 (2 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `tags` | array | yes | Tags to add |
| `contactId` | string | yes | Contact ID |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "add_contact_tags",
    "arguments": {
      "tags": [],
      "contactId": "<contactId>"
    }
  }
}
```

## Why add_contact_tags is rated Medium

This tool modifies contact data by adding tags, which is a reversible write operation. It does not delete data (not Destructive), does not execute arbitrary code (not Execute), involves no financial transactions (not Financial), and retrieves no data without side effects (not Read).

From the tool's own definition: "Tool name 'add_contact_tags' and description 'Add tags to a contact' indicate a modification operation that creates or appends tags to an existing contact record."

## Use case

AI agents use add_contact_tags to create or update resources in Ghl, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Ghl environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Ghl:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "add_contact_tags": {
      "limits": [
        {
          "counter": "add_contact_tags_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Ghl (252)

- `bulk_delete_social_posts` — Destructive — https://policylayer.com/tools/ghl/bulk-delete-social-posts.md
- `cancel_scheduled_email` — Destructive — https://policylayer.com/tools/ghl/cancel-scheduled-email.md
- `cancel_scheduled_message` — Destructive — https://policylayer.com/tools/ghl/cancel-scheduled-message.md
- `delete_appointment` — Destructive — https://policylayer.com/tools/ghl/delete-appointment.md
- `delete_appointment_note` — Destructive — https://policylayer.com/tools/ghl/delete-appointment-note.md
- `delete_calendar` — Destructive — https://policylayer.com/tools/ghl/delete-calendar.md
- `delete_calendar_group` — Destructive — https://policylayer.com/tools/ghl/delete-calendar-group.md
- `delete_calendar_notification` — Destructive — https://policylayer.com/tools/ghl/delete-calendar-notification.md
- `delete_calendar_resource_equipment` — Destructive — https://policylayer.com/tools/ghl/delete-calendar-resource-equipment.md
- `delete_calendar_resource_room` — Destructive — https://policylayer.com/tools/ghl/delete-calendar-resource-room.md
- `delete_contact` — Destructive — https://policylayer.com/tools/ghl/delete-contact.md
- `delete_contact_note` — Destructive — https://policylayer.com/tools/ghl/delete-contact-note.md
- `delete_contact_task` — Destructive — https://policylayer.com/tools/ghl/delete-contact-task.md
- `delete_conversation` — Destructive — https://policylayer.com/tools/ghl/delete-conversation.md
- `delete_coupon` — Destructive — https://policylayer.com/tools/ghl/delete-coupon.md
- `delete_custom_provider_integration` — Destructive — https://policylayer.com/tools/ghl/delete-custom-provider-integration.md
- `delete_email_template` — Destructive — https://policylayer.com/tools/ghl/delete-email-template.md
- `delete_invoice_template` — Destructive — https://policylayer.com/tools/ghl/delete-invoice-template.md
- `delete_location` — Destructive — https://policylayer.com/tools/ghl/delete-location.md
- `delete_location_custom_field` — Destructive — https://policylayer.com/tools/ghl/delete-location-custom-field.md
- `delete_location_custom_value` — Destructive — https://policylayer.com/tools/ghl/delete-location-custom-value.md
- `delete_location_tag` — Destructive — https://policylayer.com/tools/ghl/delete-location-tag.md
- `delete_location_template` — Destructive — https://policylayer.com/tools/ghl/delete-location-template.md
- `delete_media_file` — Destructive — https://policylayer.com/tools/ghl/delete-media-file.md
- `delete_object_record` — Destructive — https://policylayer.com/tools/ghl/delete-object-record.md
- `delete_opportunity` — Destructive — https://policylayer.com/tools/ghl/delete-opportunity.md
- `delete_social_account` — Destructive — https://policylayer.com/tools/ghl/delete-social-account.md
- `delete_social_post` — Destructive — https://policylayer.com/tools/ghl/delete-social-post.md
- `ghl_delete_association` — Destructive — https://policylayer.com/tools/ghl/ghl-delete-association.md
- `ghl_delete_custom_field` — Destructive — https://policylayer.com/tools/ghl/ghl-delete-custom-field.md
- …and 222 more: https://policylayer.com/tools/ghl.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=ghl · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/ghl
