# Saber (remote · mcp.saber.app)

Sales intelligence — research companies, qualify prospects, and find contacts.

- Trust score: 83/100 (high trust)
- Change this week: +8
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.saber.app`: 83/100 (this document), [markdown](https://verifymcp.io/servers/app-saber-mcp-saber/mcp.md), [page](https://verifymcp.io/servers/app-saber-mcp-saber/mcp)

## Channel facts

- Endpoint: `https://mcp.saber.app/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 97/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 78/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 3813 tokens (~44/item across 85 items; 84 tools + 1 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 99% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http app-saber-mcp-saber https://mcp.saber.app/mcp
```

### Codex

```toml
[mcp_servers.app-saber-mcp-saber]
url = "https://mcp.saber.app/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-saber-mcp-saber": {
      "type": "remote",
      "url": "https://mcp.saber.app/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add app-saber-mcp-saber --url https://mcp.saber.app/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-saber-mcp-saber:
    url: "https://mcp.saber.app/mcp"
```

### Other

```json
{
  "mcpServers": {
    "app-saber-mcp-saber": {
      "type": "http",
      "url": "https://mcp.saber.app/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 83, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 82, +5)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 75, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 75)

First indexed and scored.

## MCP tools (84)

### `findEmail` (~31 tokens)

Find a verified email address for a contact at a domain

Input parameters:

- `__requestBody` (object, required): Request body

### `findEmailBatchSubmit` (~28 tokens)

Submit a bulk find-email batch

Input parameters:

- `__requestBody` (object, required): Request body

### `findEmailBatchGet` (~34 tokens)

Poll a bulk find-email batch

Input parameters:

- `id` (string, required): The `batch_id` returned by the submit call.

### `signals-funding` (~46 tokens)

Research a company's most recent funding round and public/IPO status by domain. Returns a structured funding summary with investors and source URLs.

Input parameters:

- `__requestBody` (object, required): Request body

### `signals-mna` (~48 tokens)

Research a company's recent M&A activity by domain — whether it was acquired or made acquisitions, with counterparty, deal status, and value.

Input parameters:

- `__requestBody` (object, required): Request body

### `signals-tech` (~51 tokens)

Detect the ERP or CRM system(s) a company uses, or verify a specific technology, by domain — verified with public web evidence, not vendor data alone.

Input parameters:

- `__requestBody` (object, required): Request body

### `signals-open_jobs` (~48 tokens)

Summarise a company's current hiring from public job postings by domain — total openings, example titles, function areas, technologies, and locations.

Input parameters:

- `__requestBody` (object, required): Request body

### `signals-firmographics` (~54 tokens)

Return a company's firmographic profile (headcount, size, type, founded, HQ) plus a Saber-derived refined category and sell-to segments, with cited evidence.

Input parameters:

- `__requestBody` (object, required): Request body

### `company_signals-list` (~175 tokens)

List company signal runs with optional filters for domain, company ID, completion date, status, and subscription.

Input parameters:

- `companyId` (string): Filter signals by company ID
- `domain` (string): Filter signals by company domain (e.g., "acme.com")
- `fromDate` (string): Filter signals completed on or after this date (RFC3339 format)
- `limit` (integer): Maximum number of results per page
- `offset` (integer): Number of results to skip for pagination
- `status` (array): Filter by signal status (can be specified multiple times for multiple statuses)
- `subscriptionId` (string): Filter signals by subscription ID (UUID of the signal subscription that triggered execution)
- `toDate` (string): Filter signals completed on or before this date (RFC3339 format)

### `company_signals-create` (~42 tokens)

Create a company research signal, return immediately, then poll the signal ID or receive results through a webhook.

Input parameters:

- `__requestBody` (object, required): Request body

### `company_signals-create_batch` (~41 tokens)

Create many company signals across domains, questions, or templates. Use templates for larger standardized batches.

Input parameters:

- `__requestBody` (object, required): Request body

### `contacts-list_signals` (~72 tokens)

List contact signal runs with optional filters for profile URL and pagination.

Input parameters:

- `contactProfileUrl` (string): Filter signals by contact profile URL (LinkedIn or other professional profile)
- `limit` (integer): Maximum number of results per page
- `offset` (integer): Number of results to skip for pagination

### `contacts-create_signal` (~41 tokens)

Create a contact research signal, return immediately, then poll the signal ID or receive results through a webhook.

Input parameters:

- `__requestBody` (object, required): Request body

### `company_signals-get` (~44 tokens)

Retrieve the current status and AI-generated answer for a company signal when it has completed.

Input parameters:

- `signalId` (string, required): The unique identifier of the signal (UUID format)

### `company_signals-subscription_logs` (~153 tokens)

List company signal executions produced by a specific signal subscription, with filters and pagination.

Input parameters:

- `companyId` (string): Filter signals by company ID
- `domain` (string): Filter signals by company domain
- `fromDate` (string): Filter signals completed on or after this date (RFC3339 format)
- `limit` (integer): Maximum number of results per page
- `offset` (integer): Number of results to skip for pagination
- `status` (array): Filter by signal status (can be specified multiple times)
- `subscriptionId` (string, required): The UUID of the signal subscription
- `toDate` (string): Filter signals completed on or before this date (RFC3339 format)

### `contacts-get_signal` (~44 tokens)

Retrieve the current status and AI-generated answer for a contact signal when it has completed.

Input parameters:

- `signalId` (string, required): The unique identifier of the contact signal (UUID format)

### `getContactResearchByExternalID` (~81 tokens)

Retrieve contact research using an external system ID, such as a HubSpot contact ID, plus the source name.

Input parameters:

- `externalId` (string, required): The external identifier of the contact research request (e.g., HubSpot contact ID)
- `externalSource` (string, required): The source system that provided the external ID (e.g., "hubspot")

### `contacts-create_research` (~43 tokens)

Start asynchronous AI research for a contact using LinkedIn and other sources, then poll the research ID for results.

Input parameters:

- `__requestBody` (object, required): Request body

### `contacts-get_research` (~43 tokens)

Retrieve the current status and AI-generated insights for a contact research job when it has completed.

Input parameters:

- `id` (string, required): The unique identifier of the contact research request

### `contacts-search` (~46 tokens)

Search for contacts by company, name, job title, keyword, country, department, or seniority using the API key owner's Sales Navigator connection.

Input parameters:

- `__requestBody` (required): Request body

### `contact_lists-list` (~55 tokens)

List saved contact lists with pagination.

Input parameters:

- `limit` (integer): Maximum number of lists to return (1–100, default 20)
- `offset` (integer): Number of lists to skip for pagination (default 0)

### `contact_lists-create` (~42 tokens)

Run a LinkedIn Sales Navigator search, store a point-in-time contact snapshot, and return contact list metadata.

Input parameters:

- `__requestBody` (object, required): Request body

### `contact_lists-get` (~34 tokens)

Retrieve contact list metadata and the stored contact count.

Input parameters:

- `listId` (string, required): The unique identifier of the contact list

### `contact_lists-update` (~47 tokens)

Rename a saved contact list without changing its stored contact snapshot.

Input parameters:

- `__requestBody` (object, required): Request body
- `listId` (string, required): The unique identifier of the contact list

### `contact_lists-delete` (~36 tokens)

Permanently delete a contact list and its stored contact snapshots.

Input parameters:

- `listId` (string, required): The unique identifier of the contact list

### `contact_lists-get_contacts` (~80 tokens)

Page through contacts stored in a saved list without making a new Sales Navigator request.

Input parameters:

- `limit` (integer): Maximum number of contacts to return (1–100, default 25)
- `listId` (string, required): The unique identifier of the contact list
- `offset` (integer): Number of contacts to skip for pagination (default 0)

### `signal_templates-list` (~58 tokens)

List all signal templates for your organization

Input parameters:

- `includeDeleted` (boolean): Include deleted templates in the response
- `limit` (integer): Maximum number of templates to return
- `offset` (integer): Number of templates to skip for pagination

### `signal_templates-create` (~36 tokens)

Create a reusable research question template that can be applied to many companies in batch.

Input parameters:

- `__requestBody` (object, required): Request body

### `signal_templates-get` (~30 tokens)

Get a signal template by ID

Input parameters:

- `templateId` (string, required): The unique identifier of the template

### `signal_templates-update` (~59 tokens)

Update a signal template by creating a new version while preserving the template ID. Omitted fields keep their previous values.

Input parameters:

- `__requestBody` (object, required): Request body
- `templateId` (string, required): The unique identifier of the template to update

### `signal_templates-delete` (~43 tokens)

Soft-delete a signal template so it is no longer active while preserving it for historical tracking.

Input parameters:

- `templateId` (string, required): The unique identifier of the template to delete

### `signal_subscriptions-list` (~45 tokens)

List all signal subscriptions for your organization

Input parameters:

- `limit` (integer): Maximum number of subscriptions to return
- `offset` (integer): Number of subscriptions to skip for pagination

### `signal_subscriptions-create` (~35 tokens)

Schedule recurring signal execution for a template, domain, or list target.

Input parameters:

- `__requestBody` (object, required): Request body

### `signal_subscriptions-get` (~31 tokens)

Get a signal subscription by ID

Input parameters:

- `subscriptionId` (string, required): The unique identifier of the subscription

### `signal_subscriptions-update` (~42 tokens)

Update a signal subscription

Input parameters:

- `__requestBody` (object, required): Request body
- `subscriptionId` (string, required): The unique identifier of the subscription to update

### `signal_subscriptions-start` (~31 tokens)

Start a signal subscription

Input parameters:

- `subscriptionId` (string, required): The unique identifier of the subscription to start

### `signal_subscriptions-stop` (~31 tokens)

Stop a signal subscription

Input parameters:

- `subscriptionId` (string, required): The unique identifier of the subscription to stop

### `signal_subscriptions-trigger` (~35 tokens)

Trigger an immediate run of a signal subscription

Input parameters:

- `subscriptionId` (string, required): The unique identifier of the subscription to trigger

### `subscription_actions-list` (~57 tokens)

List all actions for a subscription

Input parameters:

- `limit` (integer): Maximum number of actions to return
- `offset` (integer): Number of actions to skip for pagination
- `subscriptionId` (string, required): The subscription whose actions to list

### `subscription_actions-create` (~40 tokens)

Create a subscription action

Input parameters:

- `__requestBody` (object, required): Request body
- `subscriptionId` (string, required): The subscription to add the action to

### `subscription_actions-get` (~41 tokens)

Get a subscription action by ID

Input parameters:

- `actionId` (string, required): The action ID
- `subscriptionId` (string, required): The subscription that owns the action

### `subscription_actions-update` (~52 tokens)

Update a subscription action

Input parameters:

- `__requestBody` (object, required): Request body
- `actionId` (string, required): The action ID to update
- `subscriptionId` (string, required): The subscription that owns the action

### `subscription_actions-delete` (~41 tokens)

Delete a subscription action

Input parameters:

- `actionId` (string, required): The action ID to delete
- `subscriptionId` (string, required): The subscription that owns the action

### `subscription_actions-pause` (~42 tokens)

Pause a subscription action

Input parameters:

- `actionId` (string, required): The action ID to pause
- `subscriptionId` (string, required): The subscription that owns the action

### `subscription_actions-unpause` (~44 tokens)

Unpause a subscription action

Input parameters:

- `actionId` (string, required): The action ID to unpause
- `subscriptionId` (string, required): The subscription that owns the action

### `signal_summaries-list` (~76 tokens)

List all AI-generated signal summaries for a domain, ordered by creation date (latest first)

Input parameters:

- `domain` (string, required): Filter summaries by company domain (e.g., "acme.com")
- `limit` (integer): Maximum number of results per page
- `offset` (integer): Number of results to skip for pagination

### `signal_summaries-generate` (~39 tokens)

Generate an AI summary consolidating insights from all completed company signals for a domain

Input parameters:

- `__requestBody` (object, required): Request body

### `market_signals-list_subscriptions` (~76 tokens)

List all market signal subscriptions for your organization

Input parameters:

- `includeDeleted` (boolean): Include soft-deleted subscriptions in the response
- `limit` (integer): Maximum number of subscriptions to return (1-100, default 20)
- `offset` (integer): Number of subscriptions to skip for pagination (default 0)

### `market_signals-create_subscription` (~44 tokens)

Create a market signal subscription to monitor job posts, LinkedIn posts, fundraising, investments, or IPOs

Input parameters:

- `__requestBody` (object, required): Request body

### `market_signals-get_subscription` (~33 tokens)

Get a market signal subscription by ID

Input parameters:

- `subscriptionId` (string, required): The unique identifier of the subscription

### `market_signals-update_subscription` (~44 tokens)

Update a market signal subscription

Input parameters:

- `__requestBody` (object, required): Request body
- `subscriptionId` (string, required): The unique identifier of the subscription to update

### `market_signals-delete_subscription` (~33 tokens)

Delete a market signal subscription

Input parameters:

- `subscriptionId` (string, required): The unique identifier of the subscription to delete

### `market_signals-pause_subscription` (~34 tokens)

Pause a market signal subscription

Input parameters:

- `subscriptionId` (string, required): The unique identifier of the subscription to pause

### `market_signals-resume_subscription` (~35 tokens)

Resume a paused market signal subscription

Input parameters:

- `subscriptionId` (string, required): The unique identifier of the subscription to resume

### `market_signals-trigger_subscription` (~37 tokens)

Trigger an immediate run of a market signal subscription

Input parameters:

- `subscriptionId` (string, required): The unique identifier of the subscription to trigger

### `market_signals-list_signals` (~74 tokens)

List signals delivered by a market signal subscription

Input parameters:

- `limit` (integer): Maximum number of signals to return (1-100, default 20)
- `offset` (integer): Number of signals to skip for pagination (default 0)
- `subscriptionId` (string, required): The unique identifier of the subscription

### `connectors-list` (~15 tokens)

List connectors and their connection status

### `credits-get_balance` (~25 tokens)

Check how many Saber API credits your organization has left in the current billing period.

### `organisation-get` (~13 tokens)

Get your organisation profile

### `organisation-update` (~24 tokens)

Update your organisation profile

Input parameters:

- `__requestBody` (object, required): Request body

### `company_lists-import` (~39 tokens)

Import companies from a HubSpot list, view, or segment into a saved Saber company list.

Input parameters:

- `__requestBody` (object, required): Request body

### `company_lists-count_preview` (~39 tokens)

Estimate how many companies match a list filter and how many credits the list operation would cost.

Input parameters:

- `__requestBody` (object, required): Request body

### `company_lists-list` (~55 tokens)

List saved company lists with pagination.

Input parameters:

- `limit` (integer): Maximum number of lists to return (1–100, default 20)
- `offset` (integer): Number of lists to skip for pagination (default 0)

### `company_lists-create` (~41 tokens)

Save a company filter as a reusable list for review, signals, scoring, export, and CRM workflows.

Input parameters:

- `__requestBody` (object, required): Request body

### `company_lists-get` (~37 tokens)

Retrieve company list metadata, including its filter and current company count.

Input parameters:

- `listId` (string, required): The unique identifier of the company list

### `company_lists-update` (~50 tokens)

Update a company list name or filter and refresh cached matching companies.

Input parameters:

- `__requestBody` (object, required): Request body
- `listId` (string, required): The unique identifier of the company list to update

### `company_lists-delete` (~38 tokens)

Delete a saved company list and remove its reusable segment boundary.

Input parameters:

- `listId` (string, required): The unique identifier of the company list to delete

### `company_lists-get_companies` (~76 tokens)

Page through companies that match a saved company list filter.

Input parameters:

- `limit` (integer): Maximum number of companies to return (1–100, default 25)
- `listId` (string, required): The unique identifier of the company list
- `offset` (integer): Number of companies to skip for pagination (default 0)

### `company_lists-export` (~52 tokens)

Export a saved company list to CSV, optionally including selected firmographic and signal columns.

Input parameters:

- `__requestBody` (object): Request body
- `listId` (string, required): The unique identifier of the company list

### `company_lists-search` (~37 tokens)

Preview up to 50 companies that match a filter before creating a reusable company list.

Input parameters:

- `__requestBody` (object, required): Request body

### `scoring-profile-list` (~13 tokens)

List scoring profiles

### `scoring-profile-create` (~25 tokens)

Create a scoring profile

Input parameters:

- `__requestBody` (object, required): Request body

### `scoring-profile-get` (~26 tokens)

Get a scoring profile

Input parameters:

- `profileId` (string, required): Scoring profile UUID

### `scoring-profile-update` (~37 tokens)

Update a scoring profile

Input parameters:

- `__requestBody` (object, required): Request body
- `profileId` (string, required): Scoring profile UUID

### `scoring-profile-delete` (~26 tokens)

Delete a scoring profile

Input parameters:

- `profileId` (string, required): Scoring profile UUID

### `scoring-rule-list` (~28 tokens)

List scoring rules for a profile

Input parameters:

- `profileId` (string, required): Scoring profile UUID

### `scoring-rule-upsert` (~39 tokens)

Upsert a scoring rule

Input parameters:

- `__requestBody` (object, required): Request body
- `profileId` (string, required): Scoring profile UUID

### `scoring-rule-delete` (~38 tokens)

Delete a scoring rule

Input parameters:

- `profileId` (string, required): Scoring profile UUID
- `ruleId` (string, required): Scoring rule UUID

### `scoring-assignment-list` (~68 tokens)

List profile assignments for an object

Input parameters:

- `objectId` (string, required): For `company` use the domain (e.g. `acme.com`); for `contact` use the LinkedIn profile URL
- `objectType` (string, required): Object type (`company` or `contact`)

### `scoring-assignment-create` (~29 tokens)

Assign a profile to a single object

Input parameters:

- `__requestBody` (object, required): Request body

### `scoring-assignment-bulk-create` (~32 tokens)

Assign a profile to many objects at once

Input parameters:

- `__requestBody` (object, required): Request body

### `scoring-assignment-delete` (~26 tokens)

Remove a profile assignment

Input parameters:

- `assignmentId` (string, required): Profile assignment UUID

### `scoring-scores-get` (~55 tokens)

Read scores for one or more objects

Input parameters:

- `objectId` (array, required): Repeatable. For `company` use the domain; for `contact` use the LinkedIn profile URL.
- `objectType` (string, required)

### `scoring-compute` (~25 tokens)

Trigger score recomputation

Input parameters:

- `__requestBody` (object, required): Request body

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/app-saber-mcp-saber/mcp#diagnostics

## Score history

- 2026-08-03: 83
- 2026-08-02: 83
- 2026-08-01: 82
- 2026-07-31: 82
- 2026-07-30: 77
- 2026-07-29: 77
- 2026-07-28: 76
- 2026-07-27: 75
- 2026-07-26: 75

## Links

- Remote endpoint: https://mcp.saber.app/mcp
- Repository: https://github.com/saberapp/platform
- Changelog RSS feed: https://verifymcp.io/servers/app-saber-mcp-saber/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-saber-mcp-saber/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/app-saber-mcp-saber/mcp
