> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://gtm-tools.sh/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://gtm-tools.sh/_mcp/server.

# Signals Tools

> detect_signal fans out to every detector for a domain. Configurable execution order lets you front-load the cheapest, highest-confidence signals.

The Signals category detects buying-intent signals for a company by domain. Each signal is its own tool, plus an all-in-one `detect_signal` runner that fans out to every detector. Configurable execution order lets you front-load the cheapest, highest-confidence signals.

## Tools

| Tool                                         | Credits | Description                                        |
| -------------------------------------------- | ------- | -------------------------------------------------- |
| `detect_signal`                              | 0       | Detect all signals for a company                   |
| `signal_socials_spike`                       | 5       | Detect Instagram/TikTok follower spikes            |
| `signal_hiring_role`                         | 5       | Detect hiring for specific roles                   |
| `signal_hiring_support`                      | 5       | Detect CX/support hiring                           |
| `signal_hiring_sales_rep`                    | 5       | Detect SDR/BDR hiring                              |
| `signal_hiring_sales_leadership`             | 5       | Detect sales leadership hiring                     |
| `signal_hiring_sales_rep_repost`             | 5       | Detect reposted SDR roles (churn signal)           |
| `signal_trustpilot_negative_reviews`         | 5       | Detect negative Trustpilot reviews                 |
| `signal_trustpilot_negative_support_reviews` | 5       | Detect negative support-related Trustpilot reviews |
| `signal_trustpilot_positive_reviews`         | 5       | Detect positive Trustpilot reviews                 |
| `signal_technologies_identified`             | 5       | Detect a tech stack on a website                   |
| `set_signals_order`                          | 0       | Set signal execution order                         |
| `get_signals_order`                          | 0       | Get current signal execution order                 |

`detect_signal` itself is free; only the individual detectors that fire are charged.

## detect_signal (recommended)

Run the full battery for a domain in one call.

| Parameter | Type   | Required | Description                            |
| --------- | ------ | -------- | -------------------------------------- |
| `domain`  | string | Yes      | Company domain (e.g. `"gymshark.com"`) |

By default the battery runs `signal_hiring_role`, `signal_trustpilot_negative_support_reviews`, and `signal_socials_spike` (order configurable via `set_signals_order`).

```bash
curl -X POST https://api.gtm-tools.sh/api/v0/detect_signal \
  -H "Authorization: Bearer $GTM_TOOLS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "gymshark.com"}'
```

Returns an array of **only the detectors that fired**, each with `signal_name` and a `data` object (`domain`, `is_detected`, and a signal-specific `metadata` object). An empty array `[]` means nothing fired.

```json
[
  {
    "signal_name": "signal_hiring_role",
    "data": {
      "domain": "gymshark.com",
      "is_detected": true,
      "metadata": {
        "matching_jobs_count": 2,
        "matching_jobs": [
          { "title": "CX Team Lead", "url": "https://job-boards.greenhouse.io/gymshark/jobs/123" }
        ]
      }
    }
  },
  {
    "signal_name": "signal_trustpilot_negative_support_reviews",
    "data": {
      "domain": "gymshark.com",
      "is_detected": true,
      "metadata": {
        "trustpilot_url": "https://www.trustpilot.com/review/gymshark.com",
        "negative_reviews_count": 3,
        "negative_reviews": [
          { "rating": 1, "title": "Awful support", "message": "Terrible support response time", "date": "2026-07-30" }
        ]
      }
    }
  }
]
```

The execution order is whatever `set_signals_order` configured (or the default). You can view it with `get_signals_order`.

## Hiring signals

All hiring detectors scan job-board listings and LinkedIn job posts for the target domain.

| Tool                             | Pattern matched                                                       |
| -------------------------------- | --------------------------------------------------------------------- |
| `signal_hiring_role`             | Any role, matched via the `job_title_filters` parameter               |
| `signal_hiring_support`          | Customer support / CX titles                                          |
| `signal_hiring_sales_rep`        | SDR / BDR / Account Executive                                         |
| `signal_hiring_sales_leadership` | VP Sales, Head of Sales, Director of Sales                            |
| `signal_hiring_sales_rep_repost` | The same SDR/BDR role posted multiple times, a strong churn indicator |

Reposted SDR roles are particularly useful for a sales-aid pitch: it means the previous hire didn't stick, and the team is feeling the pain.

```bash
curl -X POST https://api.gtm-tools.sh/api/v0/signal_hiring_role \
  -H "Authorization: Bearer $GTM_TOOLS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "siena.cx", "job_title_filters": "(customer support OR cx) NOT junior"}'
```

## Trustpilot signals

| Tool                                         | Returns                                                                   |
| -------------------------------------------- | ------------------------------------------------------------------------- |
| `signal_trustpilot_negative_reviews`         | All recent 1–2 star reviews                                               |
| `signal_trustpilot_negative_support_reviews` | 1–2 star reviews with support keywords (`response`, `agent`, `ticket`, …) |
| `signal_trustpilot_positive_reviews`         | Recent 4–5 star reviews                                                   |

Negative support reviews are the strongest churn-prevention signal: they let your agent reach out *before* the customer leaves.

```bash
curl -X POST https://api.gtm-tools.sh/api/v0/signal_trustpilot_negative_support_reviews \
  -H "Authorization: Bearer $GTM_TOOLS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "mammaly.de"}'
```

## Social spike signal

`signal_socials_spike` checks Instagram and TikTok follower counts against a recent baseline. A sustained jump is a marketing-momentum signal.

```bash
curl -X POST https://api.gtm-tools.sh/api/v0/signal_socials_spike \
  -H "Authorization: Bearer $GTM_TOOLS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "gymshark.com"}'
```

## Technology signal

`signal_technologies_identified` checks the website's HTML, headers, and tracking scripts for known stack identifiers (e.g. Zendesk, Intercom, Segment, Stripe).

| Parameter | Type      | Required | Description                                                   |
| --------- | --------- | -------- | ------------------------------------------------------------- |
| `domain`  | string    | Yes      | Company domain                                                |
| `techs`   | string\[] | Yes      | Identifiers to match (e.g. `["zendesk.com", "intercom.com"]`) |

```bash
curl -X POST https://api.gtm-tools.sh/api/v0/signal_technologies_identified \
  -H "Authorization: Bearer $GTM_TOOLS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "siena.cx", "techs": ["zendesk.com", "intercom.com"]}'
```

```json
{
  "domain": "siena.cx",
  "matched": ["zendesk.com"],
  "evidence": [{ "tech": "zendesk.com", "source": "html", "snippet": "..." }]
}
```

## Configuring signal order

`set_signals_order` and `get_signals_order` let you control which detectors run first when you call `detect_signal`. Useful for putting the cheapest, highest-precision signals up front so you can short-circuit on the first match.

```bash
# Get current order
curl https://api.gtm-tools.sh/api/v0/get_signals_order \
  -H "Authorization: Bearer $GTM_TOOLS_API_KEY"

# Set custom order
curl -X POST https://api.gtm-tools.sh/api/v0/set_signals_order \
  -H "Authorization: Bearer $GTM_TOOLS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "order": [
      "signal_hiring_sales_rep_repost",
      "signal_trustpilot_negative_support_reviews",
      "signal_hiring_support",
      "signal_socials_spike",
      "signal_technologies_identified"
    ]
  }'
```

## Next steps

#### [Outbound](/outbound)

Stitching detectors into a churn-prevention or expansion workflow.

#### [Signal-Driven Outreach](/knowledge-base/agent-patterns/signal-driven-outreach)

Agent pattern: signal → company → person → email → message.