# Outcomet (remote · mcp.outcomet.app)

Read customer feedback, problems and initiatives in Outcomet, and log new feedback from chat.

- Trust score: 78/100 (medium)
- Change this week: +41
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

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

## Channel facts

- Endpoint: `https://mcp.outcomet.app/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `3.5.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-11-05.

- **Endpoint Security**: 92/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.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 76/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).
  - Context-footprint check failed: tool/resource definitions use about 10668 tokens (~124/item across 86 items; 84 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 90/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 64% of tool parameters carry a description.
  - Structured output schemas are declared (99% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 12 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 86 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### How do I install the Outcomet MCP server?

Outcomet is a hosted endpoint at https://mcp.outcomet.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

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

### Cursor

```json
{
  "mcpServers": {
    "app-outcomet-mcp": {
      "url": "https://mcp.outcomet.app/mcp"
    }
  }
}
```

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

```json
{
  "McpServers": {
    "app-outcomet-mcp": {
      "Transport": "http",
      "Url": "https://mcp.outcomet.app/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add app-outcomet-mcp -t streamable-http -u 'https://mcp.outcomet.app/mcp'
```

### Other

```json
{
  "mcpServers": {
    "app-outcomet-mcp": {
      "type": "http",
      "url": "https://mcp.outcomet.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-11-05 (score 78, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-11-04 (score 78, +41)

- [security improvement] Transport: unverified → pass
- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [security] Authorization: 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.
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → 100
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 64
- [functional] First check of Schema quality: fail
- [functional] First check of Capabilities: pass
- [functional] First check of Tool coverage: 99
- [functional] First check of Destructive annotations: 100
- [functional] First check of Schema quality: good

### 2026-10-18 (score 37)

First indexed and scored.

## MCP tools (84)

### `server_status_get` (~26 tokens)

Get MCP Server Status

Returns the current status for the Outcomet MCP gateway without tenant data or secrets.

### `capability_update` (~143 tokens)

Update Capability

Updates allowlisted Capability fields. Requires capabilities:write. Read capability_get for expectedRowVersion; use a new idempotencyKey for changed input. Does not create a proposal.

Input parameters:

- `capabilityId` (string, required)
- `description`
- `domain`
- `expectedRowVersion` (string, required)
- `health`
- `idempotencyKey` (string, required): Stable UUID reused for exact retries.
- `maturity` (string): Capability maturity: concept, beta, stable, optimized. Defaults to concept on creation; live is not a valid value.
- `name` (string)
- `owner` (string)
- `tags` (array)

Output parameters:

- `capability` (object)
- `idempotencyKey` (string)

### `capability_create` (~119 tokens)

Create Capability

Creates a new Outcomet Capability directly. Reuse the same idempotencyKey for exact retries. Does not create a proposal.

Input parameters:

- `description`
- `domain`
- `idempotencyKey` (string, required): Stable UUID reused for exact retries.
- `maturity` (string): Capability maturity: concept, beta, stable, optimized. Defaults to concept on creation; live is not a valid value.
- `name` (string, required)
- `owner` (string)
- `parentCapabilityId`
- `tags` (array)

Output parameters:

- `capability` (object)
- `idempotencyKey` (string)

### `capability_reparent` (~84 tokens)

Reparent Capability

Moves one active Capability below another active Capability, or to the root with parentCapabilityId null. Requires capabilities:write and the latest row version.

Input parameters:

- `capabilityId` (string, required)
- `expectedRowVersion` (string, required)
- `idempotencyKey` (string, required): Stable UUID reused for exact retries.
- `parentCapabilityId` (required)
- `sortOrder`

Output parameters:

- `capability` (object)
- `idempotencyKey` (string)
- `parentCapability`

### `capability_retire` (~75 tokens)

Retire Capability

Retires one active Capability while retaining its relationships for history. Requires capabilities:write, the latest row version, and a reason.

Input parameters:

- `capabilityId` (string, required)
- `expectedRowVersion` (string, required)
- `idempotencyKey` (string, required): Stable UUID reused for exact retries.
- `reason` (string, required)

Output parameters:

- `capability` (object)
- `idempotencyKey` (string)
- `lifecycleStatus` (string)

### `capability_merge` (~114 tokens)

Merge Capabilities

Merges a source Capability into a survivor, transfers governed relationships, and retires the source. Requires capabilities:write, both latest row versions, and an explicit resolution.

Input parameters:

- `dependencyDisposition` (object)
- `expectedSourceRowVersion` (string, required)
- `expectedSurvivorRowVersion` (string, required)
- `idempotencyKey` (string, required): Stable UUID reused for exact retries.
- `resolvedFields` (object, required)
- `sourceCapabilityId` (string, required)
- `survivorCapabilityId` (string, required)

Output parameters:

- `idempotencyKey` (string)
- `sourceCapability` (object)
- `survivorCapability` (object)

### `capability_link_change` (~80 tokens)

Link Capability Change

Explicitly links one existing Change or Pull Request to a Capability. Requires capabilities:write.

Input parameters:

- `capabilityId` (string, required): Unique identifier of the capability to link.
- `changeId` (string, required): Unique identifier of the change or pull request to link.
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.

Output parameters:

- `capability` (object)
- `change` (object)
- `idempotencyKey` (string)

### `capability_unlink_change` (~82 tokens)

Unlink Capability Change

Explicitly removes a link between a Change/PR and a Capability. Requires capabilities:write.

Input parameters:

- `capabilityId` (string, required): Unique identifier of the capability to unlink.
- `changeId` (string, required): Unique identifier of the change or pull request to unlink.
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.

Output parameters:

- `capability` (object)
- `change` (object)
- `idempotencyKey` (string)

### `capability_link_opportunity` (~82 tokens)

Link Capability Opportunity

Explicitly links one existing Strategic Opportunity to a Capability through the shared app command. Requires capabilities:write.

Input parameters:

- `capabilityId` (string, required): Unique identifier of the capability to link.
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `opportunityId` (string, required): Unique identifier of the strategic opportunity to link.

Output parameters:

- `capability` (object)
- `idempotencyKey` (string)
- `opportunity` (object)

### `capability_unlink_opportunity` (~85 tokens)

Unlink Capability Opportunity

Explicitly removes a link between a Strategic Opportunity and a Capability through the shared app command. Requires capabilities:write.

Input parameters:

- `capabilityId` (string, required): Unique identifier of the capability to unlink.
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `opportunityId` (string, required): Unique identifier of the strategic opportunity to unlink.

Output parameters:

- `capability` (object)
- `idempotencyKey` (string)
- `opportunity` (object)

### `capability_search` (~124 tokens)

Search Capabilities

Searches scoped Capability summaries using the original natural-language DE/EN question, UUID, name or identifier. Ranked search is a bounded shortlist; preserve meta.search coverage/degradation and never infer nonexistence. Empty query lists deterministically. Use capability children/relationships tools for graph navigation. Continue with page.nextCursor; restart on invalid_cursor.

Input parameters:

- `cursor` (string)
- `demoBatchId` (string): Exact Demo batch for query search; default searches real Capabilities.
- `lifecycle` (string)
- `limit` (integer)
- `query` (string)

Output parameters:

- `completeness` (object)
- `filters` (object)
- `meta` (object)
- `order` (array)
- `page` (object)
- `results` (array)

### `capability_get` (~38 tokens)

Get Capability

Fetches one safe, tenant-scoped Outcomet capability context summary.

Input parameters:

- `capabilityId` (string, required)
- `lifecycle` (string)

Output parameters:

- `capability`
- `meta` (object)

### `capability_list_children` (~52 tokens)

List Capability Children

Lists one capability's direct children with stable pagination and explicit completeness facts.

Input parameters:

- `capabilityId` (string, required)
- `cursor` (string)
- `lifecycle` (string)
- `limit` (integer)

Output parameters:

- `completeness` (object)
- `filters` (object)
- `meta` (object)
- `order` (array)
- `page` (object)
- `results` (array)

### `capability_list_relationships` (~61 tokens)

List Capability Relationships

Lists typed, directed capability relationships with stable pagination and explicit completeness facts.

Input parameters:

- `capabilityId` (string, required)
- `cursor` (string)
- `lifecycle` (string)
- `limit` (integer)
- `relationshipTypes` (array)

Output parameters:

- `completeness` (object)
- `filters` (object)
- `meta` (object)
- `order` (array)
- `page` (object)
- `results` (array)

### `feedback_search` (~249 tokens)

Search Feedback

Finds Signals using natural DE/EN questions, symptoms, titles, UUIDs and technical tokens. Dates/status/source/type filter before ranking. meta.search reports coverage/degradation; ranked results never prove absence or a complete inventory. Continue with the opaque cursor. Empty query retains the deterministic list. Semantic retrieval covers title+summary; Evidence discovery is separate.

Input parameters:

- `createdSince` (string): Optional created_at lower bound.
- `createdUntil` (string): Optional created_at upper bound.
- `cursor` (string): Opaque cursor returned by the preceding page.
- `demoBatchId` (string): Exact Demo batch; requires query. Default query searches real Signals.
- `feedbackType` (string)
- `limit` (integer): Maximum feedback count.
- `offset` (integer): Optional non-negative record offset.
- `query` (string): Original natural DE/EN question, symptom, exact title/UUID or identifier. Ranked shortlist; absence is not proof of nonexistence.
- `searchMode` (string): Required with a nonzero ranked-search offset.
- `searchRevision` (string): Required with a nonzero ranked-search offset.
- `source` (string)
- `status` (string)

Output parameters:

- `completeness` (object)
- `meta` (object)
- `page` (object)
- `results` (array)

### `feedback_get` (~44 tokens)

Get Feedback

Fetches one safe, tenant-scoped Outcomet feedback summary by ID.

Input parameters:

- `feedbackId` (string, required): Stable feedback UUID to fetch from the tenant-scoped safe contract.

Output parameters:

- `feedback`

### `feedback_create` (~56 tokens)

Add Feedback

Creates one tenant-scoped Outcomet feedback inbox item for the verified MCP caller.

Input parameters:

- `body` (string, required): Feedback body text.
- `sourceUrl` (string): Optional source URL.
- `title` (string): Optional feedback title.

Output parameters:

- `appUrl` (string)
- `createdAt` (string)
- `feedbackId` (string)
- `status` (string)
- `summary` (string)
- `title` (string)

### `campaign_create` (~171 tokens)

Create Campaign

Creates a draft Campaign. Requires contacts:write. Optional playbookId copies a workspace playbook. Does not enroll contacts or send messages. Reuse the idempotencyKey for exact retries; changed input needs a new key. Without a playbook uses the generic other stage preset, including parked stages.

Input parameters:

- `campaignType` (string)
- `description` (string)
- `goal` (string): Campaign goal, e.g. learn, recruit_interviews, relationship_building, audience_growth, or a custom goal.
- `idempotencyKey` (string, required): Stable UUID reused for exact retries; changed input needs a new key.
- `name` (string, required)
- `playbookId` (string): Optional workspace playbook; its stages are copied. Creates a draft without enrolling or contacting anyone.

Output parameters:

- `campaign` (object)

### `company_search` (~119 tokens)

Search Companies

Searches tenant-scoped Outcomet companies.

Input parameters:

- `cursor` (string): Opaque cursor returned by the preceding page.
- `icpFitState` (string|null): Optional ICP fit state filter: unknown, strong_fit, partial_fit, weak_fit, not_fit.
- `lifecycleStatus` (string|null): Optional company lifecycle status filter: prospect, customer, partner, competitor, unknown.
- `limit` (integer): Maximum company count.
- `offset` (integer): Optional non-negative record offset.
- `query` (string): Optional text/domain filter.

Output parameters:

- `page` (object)
- `results` (array)

### `company_get` (~35 tokens)

Get Company

Fetches one safe, tenant-scoped Outcomet company summary by ID.

Input parameters:

- `companyId` (string, required): Stable company UUID.

Output parameters:

- `company`

### `contact_search` (~161 tokens)

Search Contacts

Searches tenant-scoped contacts; optional exact network source, tag, or LinkedIn profile filters support import previews.

Input parameters:

- `cursor` (string): Opaque cursor returned by the preceding page.
- `icpFitState` (string|null): Optional ICP fit state filter: unknown, strong_fit, partial_fit, weak_fit, not_fit.
- `limit` (integer): Maximum contact count.
- `linkedinProfileUrl` (string): Exact LinkedIn /in/ profile URL; normalized server-side.
- `offset` (integer): Optional non-negative record offset.
- `query` (string): Optional name/email/title/company/profile filter.
- `sourceLabel` (string): Exact network provenance label, e.g. LinkedIn Partner.
- `tag` (string): Exact contact tag.

Output parameters:

- `page` (object)
- `results` (array)

### `contact_get` (~37 tokens)

Get Contact

Fetches one tenant-scoped contact summary with compact network source labels and tags by ID.

Input parameters:

- `contactId` (string, required): Stable contact UUID.

Output parameters:

- `contact`

### `contact_custom_fields_list` (~51 tokens)

List Contact Custom Fields

Lists organization-defined custom field definitions for companies and contacts (key, label, fieldType, entityType, options, category).

Input parameters:

- `entityType` (string): Optional entity type filter: company or person.

Output parameters:

- `definitions` (array)

### `campaign_search` (~68 tokens)

Search Campaigns

Searches tenant-scoped Outcomet campaigns.

Input parameters:

- `cursor` (string): Opaque cursor returned by the preceding page.
- `limit` (integer): Maximum campaign count.
- `offset` (integer): Optional non-negative record offset.
- `query` (string): Optional campaign name/type/goal filter.

Output parameters:

- `page` (object)
- `results` (array)

### `campaign_get` (~35 tokens)

Get Campaign

Fetches one safe, tenant-scoped Outcomet campaign summary by ID.

Input parameters:

- `campaignId` (string, required): Stable campaign UUID.

Output parameters:

- `campaign`

### `campaign_list_members` (~118 tokens)

Search Campaign Members

Searches tenant-scoped campaign members for one campaign.

Input parameters:

- `campaignId` (string, required): Stable campaign UUID.
- `cursor` (string): Opaque cursor returned by the preceding page.
- `dueOnOrBefore` (string): Optional next-action due upper bound.
- `limit` (integer): Maximum member count.
- `missingProfileUrl` (boolean): Optional filter to return only members lacking a verified profile URL for the campaign channel.
- `offset` (integer): Optional non-negative record offset.
- `stage` (string): Optional campaign stage filter.

Output parameters:

- `page` (object)
- `results` (array)

### `campaign_member_get` (~35 tokens)

Get Campaign Member

Fetches one safe, tenant-scoped campaign member summary by ID.

Input parameters:

- `memberId` (string, required): Stable campaign member UUID.

Output parameters:

- `campaignMember`

### `playbook_search` (~73 tokens)

Search Playbooks

Searches tenant-scoped Outcomet campaign playbooks.

Input parameters:

- `cursor` (string): Opaque cursor returned by the preceding page.
- `limit` (integer): Maximum playbook count.
- `offset` (integer): Optional non-negative record offset.
- `query` (string): Optional playbook name/type/goal filter.

Output parameters:

- `page` (object)
- `results` (array)

### `playbook_get` (~39 tokens)

Get Playbook

Fetches one safe, tenant-scoped Outcomet playbook summary by ID.

Input parameters:

- `playbookId` (string, required): Stable playbook UUID.

Output parameters:

- `playbook`

### `campaign_interaction_list` (~101 tokens)

Search Campaign Interactions

Searches chronological interactions and touchpoints for one campaign.

Input parameters:

- `campaignId` (string, required): Stable campaign UUID.
- `cursor` (string): Opaque cursor returned by the preceding page.
- `limit` (integer): Maximum interaction count (1-50, default 25).
- `memberId` (string): Optional campaign member UUID filter.
- `offset` (integer): Optional non-negative record offset.
- `personId` (string): Optional person UUID filter.

Output parameters:

- `hasMore` (boolean)
- `page` (object)
- `results` (array)

### `company_upsert` (~438 tokens)

Upsert Company

Creates or updates one tenant-scoped company by ID, domain, or name; sourceLabel adds network provenance without replacing an existing source.

Input parameters:

- `blueskyHandle` (string|null): Optional Bluesky handle/DID (or null/empty to clear).
- `blueskyProfileUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `blueskyUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `companyId` (string): Stable company UUID if known; if omitted, resolves by domain, LinkedIn URL, or name.
- `companySizeRange` (string|null)
- `customFields` (object): Optional organization-defined custom fields map (snake_case key -> value, or null to clear). Call contact_custom_fields_list to inspect valid keys and types.
- `domain` (string|null): Company domain for matching or updating.
- `icpFitRationale` (string|null)
- `icpFitScore`
- `icpFitState` (string|null)
- `lifecycleStatus` (string|null)
- `linkedinProfileUrl` (string|null): Optional LinkedIn profile/company URL (or null/empty to clear).
- `linkedinUrl` (string|null): Optional LinkedIn profile/company URL (or null/empty to clear).
- `name` (string): Company name. Required when creating a new company if not resolving an existing record.
- `notes` (string|null)
- `profiles` (array): Optional multi-platform profile entries to upsert or clear.
- `sourceLabel` (string): Network provenance to append without replacing an existing source.
- `tags` (array): Tags to add without removing existing tags.
- `vertical` (string|null)
- `websiteUrl` (string|null)
- `xHandle` (string|null): Optional X/Twitter handle (or null/empty to clear).
- `xProfileUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).
- `xUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).

Output parameters:

- `company` (object)

### `company_create` (~377 tokens)

Create Company

Creates one tenant-scoped Outcomet company for the verified MCP caller.

Input parameters:

- `blueskyHandle` (string|null): Optional Bluesky handle/DID (or null/empty to clear).
- `blueskyProfileUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `blueskyUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `companySizeRange` (string|null)
- `customFields` (object): Optional organization-defined custom fields map (snake_case key -> value, or null to clear). Call contact_custom_fields_list to inspect valid keys and types.
- `domain` (string|null)
- `icpFitRationale` (string|null)
- `icpFitScore`
- `icpFitState` (string|null)
- `lifecycleStatus` (string|null)
- `linkedinProfileUrl` (string|null): Optional LinkedIn profile/company URL (or null/empty to clear).
- `linkedinUrl` (string|null): Optional LinkedIn profile/company URL (or null/empty to clear).
- `name` (string, required)
- `notes` (string|null)
- `profiles` (array): Optional multi-platform profile entries to upsert or clear.
- `sourceLabel` (string): Network provenance to append without replacing an existing source.
- `tags` (array): Tags to add without removing existing tags.
- `vertical` (string|null)
- `websiteUrl` (string|null)
- `xHandle` (string|null): Optional X/Twitter handle (or null/empty to clear).
- `xProfileUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).
- `xUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).

Output parameters:

- `company` (object)

### `company_update` (~385 tokens)

Update Company

Updates allowlisted fields on one tenant-scoped Outcomet company.

Input parameters:

- `blueskyHandle` (string|null): Optional Bluesky handle/DID (or null/empty to clear).
- `blueskyProfileUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `blueskyUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `companyId` (string, required)
- `companySizeRange` (string|null)
- `customFields` (object): Optional organization-defined custom fields map (snake_case key -> value, or null to clear). Call contact_custom_fields_list to inspect valid keys and types.
- `domain` (string|null)
- `icpFitRationale` (string|null)
- `icpFitScore`
- `icpFitState` (string|null)
- `lifecycleStatus` (string|null)
- `linkedinProfileUrl` (string|null): Optional LinkedIn profile/company URL (or null/empty to clear).
- `linkedinUrl` (string|null): Optional LinkedIn profile/company URL (or null/empty to clear).
- `name` (string|null)
- `notes` (string|null)
- `profiles` (array): Optional multi-platform profile entries to upsert or clear.
- `sourceLabel` (string): Network provenance to append without replacing an existing source.
- `tags` (array): Tags to add without removing existing tags.
- `vertical` (string|null)
- `websiteUrl` (string|null)
- `xHandle` (string|null): Optional X/Twitter handle (or null/empty to clear).
- `xProfileUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).
- `xUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).

Output parameters:

- `company` (object)

### `contact_upsert` (~478 tokens)

Upsert Contact

Creates or updates one tenant-scoped contact. Supports matching, setting, or clearing linkedinProfileUrl directly (or with sourceLabel for network imports).

Input parameters:

- `blueskyHandle` (string|null): Optional Bluesky handle/DID (or null/empty to clear).
- `blueskyProfileUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `blueskyUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `companyDomain` (string|null): Optional company domain to resolve and link company if companyId is omitted.
- `companyId`: Optional company UUID to link.
- `contactId` (string): Stable contact UUID if known. Network imports require this, email, or a profile URL/handle.
- `customFields` (object): Optional organization-defined custom fields map (snake_case key -> value, or null to clear). Call contact_custom_fields_list to inspect valid keys and types.
- `displayName` (string): Contact display name. Required when creating a new contact if not resolving an existing record.
- `icpFitRationale` (string|null)
- `icpFitScore`
- `icpFitState` (string|null)
- `linkedinProfileUrl` (string|null): LinkedIn /in/ URL used for exact matching before email, or null/empty to clear; never merges by name alone.
- `linkedinUrl` (string|null): Optional LinkedIn profile/company URL (or null/empty to clear).
- `notes` (string|null)
- `primaryEmail` (string|null): Primary email for matching or updating.
- `profiles` (array): Optional multi-platform profile entries to upsert or clear.
- `roleCategory` (string|null)
- `seniority` (string|null)
- `sourceLabel` (string): Network provenance to append without replacing an existing source.
- `tags` (array): Tags to add without removing existing tags.
- `title` (string|null)
- `xHandle` (string|null): Optional X/Twitter handle (or null/empty to clear).
- `xProfileUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).
- `xUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).

Output parameters:

- `contact` (object)

### `contact_create` (~375 tokens)

Create Contact

Creates one tenant-scoped Outcomet contact for the verified MCP caller.

Input parameters:

- `blueskyHandle` (string|null): Optional Bluesky handle/DID (or null/empty to clear).
- `blueskyProfileUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `blueskyUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `companyId`
- `customFields` (object): Optional organization-defined custom fields map (snake_case key -> value, or null to clear). Call contact_custom_fields_list to inspect valid keys and types.
- `displayName` (string, required)
- `icpFitRationale` (string|null)
- `icpFitScore`
- `icpFitState` (string|null)
- `linkedinProfileUrl` (string|null): Optional LinkedIn profile/company URL (or null/empty to clear).
- `linkedinUrl` (string|null): Optional LinkedIn profile/company URL (or null/empty to clear).
- `notes` (string|null)
- `primaryEmail` (string|null)
- `profiles` (array): Optional multi-platform profile entries to upsert or clear.
- `roleCategory` (string|null)
- `seniority` (string|null)
- `sourceLabel` (string): Network provenance to append without replacing an existing source.
- `tags` (array): Tags to add without removing existing tags.
- `title` (string|null)
- `xHandle` (string|null): Optional X/Twitter handle (or null/empty to clear).
- `xProfileUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).
- `xUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).

Output parameters:

- `contact` (object)

### `contact_update` (~383 tokens)

Update Contact

Updates allowlisted fields on one tenant-scoped Outcomet contact.

Input parameters:

- `blueskyHandle` (string|null): Optional Bluesky handle/DID (or null/empty to clear).
- `blueskyProfileUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `blueskyUrl` (string|null): Optional Bluesky profile URL (or null/empty to clear).
- `companyId`
- `contactId` (string, required)
- `customFields` (object): Optional organization-defined custom fields map (snake_case key -> value, or null to clear). Call contact_custom_fields_list to inspect valid keys and types.
- `displayName` (string|null)
- `icpFitRationale` (string|null)
- `icpFitScore`
- `icpFitState` (string|null)
- `linkedinProfileUrl` (string|null): Optional LinkedIn profile/company URL (or null/empty to clear).
- `linkedinUrl` (string|null): Optional LinkedIn profile/company URL (or null/empty to clear).
- `notes` (string|null)
- `primaryEmail` (string|null)
- `profiles` (array): Optional multi-platform profile entries to upsert or clear.
- `roleCategory` (string|null)
- `seniority` (string|null)
- `sourceLabel` (string): Network provenance to append without replacing an existing source.
- `tags` (array): Tags to add without removing existing tags.
- `title` (string|null)
- `xHandle` (string|null): Optional X/Twitter handle (or null/empty to clear).
- `xProfileUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).
- `xUrl` (string|null): Optional X/Twitter profile URL (or null/empty to clear).

Output parameters:

- `contact` (object)

### `campaign_interaction_create` (~232 tokens)

Create Campaign Interaction

Logs an outreach touchpoint or interaction (viewed, invited, messaged, commented, liked, replied, booked_call, email, other) for a campaign member or contact.

Input parameters:

- `body` (string|null): Optional interaction content / notes / snippet.
- `campaignId` (string): Stable campaign UUID. If memberId is provided, campaignId is automatically resolved.
- `companyId` (string): Optional company UUID.
- `contactAccountId` (string): Optional contact account UUID (e.g. LinkedIn profile).
- `direction` (string): Direction of interaction (default outbound).
- `interactionType` (string, required): Type of interaction.
- `memberId` (string): Optional campaign member UUID. When provided, automatically resolves campaignId, personId, companyId, and contactAccountId.
- `occurredAt`: ISO timestamp of when the interaction occurred (defaults to now).
- `personId` (string): Optional contact person UUID.
- `source` (string): Origin source (defaults to agent).
- `url` (string|null): URL of the post or interaction. Required for outbound commented interactions.

Output parameters:

- `interaction` (object)

### `campaign_member_update` (~151 tokens)

Update Campaign Member

Updates a campaign member stage, status (parking/active), next action, due date, recheck date, or operator rationale.

Input parameters:

- `memberId` (string, required): Stable campaign member UUID.
- `nextAction` (string|null): Next scheduled action description.
- `nextActionDue`: Due date for next action (YYYY-MM-DD).
- `recheckAt`: Scheduled recheck / follow-up date (YYYY-MM-DD).
- `selectionRationale` (string|null): Updated operator rationale or notes.
- `stage` (string): Target campaign stage key from the campaign stage_set (e.g. scouted, connect-sent, in-conversation, etc.).
- `status` (string): Campaign member status.

Output parameters:

- `campaignMember` (object)

### `campaign_member_create` (~162 tokens)

Create Campaign Member

Enrolls a person, company, or account into a campaign with duplicate protection.

Input parameters:

- `campaignId` (string, required): Stable campaign UUID.
- `companyId` (string): Company UUID to enroll into the campaign.
- `contactAccountId` (string): Contact account UUID to enroll into the campaign.
- `nextAction` (string|null): Next action description.
- `nextActionDue`: Due date for next action (YYYY-MM-DD).
- `personId` (string): Person UUID to enroll into the campaign.
- `selectionRationale` (string|null): Operator selection rationale.
- `stage` (string): Initial campaign stage key (defaults to first stage in campaign stage_set or scouted).
- `status` (string): Initial member status (defaults to selected).

Output parameters:

- `alreadyMember` (boolean)
- `campaignMember` (object)
- `created` (boolean)

### `campaign_interaction_delete` (~46 tokens)

Delete Campaign Interaction

Deletes a campaign interaction touchpoint by its UUID (e.g. for cleaning up test entries or mistaken logs).

Input parameters:

- `interactionId` (string, required): Stable campaign interaction UUID to delete.

Output parameters:

- `deleted` (boolean)
- `interactionId` (string)

### `campaign_member_delete` (~53 tokens)

Delete Campaign Member

Removes a campaign member enrollment (and its stage-transition history) from a campaign without deleting the underlying contact, company, or campaign interactions.

Input parameters:

- `memberId` (string, required): Stable campaign member UUID to remove from the campaign.

Output parameters:

- `campaignId` (string)
- `companyId` (string)
- `contactAccountId` (string)
- `deleted` (boolean)
- `memberId` (string)
- `personId` (string)

### `initiative_link_capability` (~59 tokens)

Link Initiative Capability

Explicitly links one existing Capability to an Initiative. Requires initiatives:write. No automatic linking is implied by creation.

Input parameters:

- `capabilityId` (string, required)
- `idempotencyKey` (string, required)
- `initiativeId` (string, required)

Output parameters:

- `idempotencyKey` (string)
- `initiative` (object)

### `initiative_link_change` (~53 tokens)

Link Initiative Change

Explicitly links one existing Change or Pull Request to an Initiative. Requires initiatives:write.

Input parameters:

- `changeId` (string, required)
- `idempotencyKey` (string, required)
- `initiativeId` (string, required)

Output parameters:

- `change` (object)
- `idempotencyKey` (string)
- `initiative` (object)

### `initiative_unlink_change` (~55 tokens)

Unlink Initiative Change

Explicitly removes a link between a Change/PR and an Initiative. Requires initiatives:write.

Input parameters:

- `changeId` (string, required)
- `idempotencyKey` (string, required)
- `initiativeId` (string, required)

Output parameters:

- `change` (object)
- `idempotencyKey` (string)
- `initiative` (object)

### `initiative_link_feedback` (~124 tokens)

Link Initiative Feedback Evidence

Atomically attaches selected Feedback evidence to an existing Problem and links that Problem to an Initiative. Requires initiatives:write and problems:write. Get real chunk IDs from feedback_list_evidence first. Uses the canonical Problem path; never creates a legacy direct Feedback link.

Input parameters:

- `evidenceChunkIds` (array, required): Evidence chunks belonging to feedbackId. Read feedback_list_evidence first.
- `feedbackId` (string, required)
- `idempotencyKey` (string, required)
- `initiativeId` (string, required)
- `meaning` (string)
- `problemId` (string, required)

Output parameters:

- `idempotencyKey` (string)
- `initiative` (object)

### `initiative_search` (~81 tokens)

Search Initiatives

Searches tenant-scoped Outcomet initiatives with stable keyset pagination.

Input parameters:

- `cursor` (string): Opaque cursor returned by the preceding page.
- `limit` (integer): Maximum records to return. Defaults to 25.
- `order` (string)
- `query` (string)
- `sort` (string)
- `status` (string)

Output parameters:

- `meta` (object)
- `page` (object)
- `results` (array)

### `initiative_get` (~44 tokens)

Get Initiative

Fetches one complete safe initiative record with strategic anchor context (Pillar + Opportunity) without expanding unbounded evidence.

Input parameters:

- `initiativeId` (string, required): Unique identifier of the initiative.

Output parameters:

- `initiative` (object)
- `meta` (object)

### `initiative_list_feedback` (~87 tokens)

List Initiative Feedback

Lists deduplicated feedback records linked to one initiative with evidence counts.

Input parameters:

- `cursor` (string): Opaque cursor returned by the preceding page.
- `initiativeId` (string, required): Unique identifier of the initiative.
- `limit` (integer): Maximum records to return. Defaults to 25.
- `order` (string): Fixed collection direction.
- `sort` (string): Fixed collection order.

Output parameters:

- `meta` (object)
- `page` (object)
- `results` (array)

### `evidence_search` (~244 tokens)

Search Evidence

Discover original customer statements using the natural DE/EN question, technical token or exact Evidence UUID, including topics absent from Signal titles/summaries. Returns real Evidence/parent IDs, unchanged excerpts or explicitly marked exact prefixes and safe provenance. Read-only ranked shortlist: 10/page, 3 per Signal across pages; inspect coverage/degradation. All readable unlinked/background/dismissed Evidence is eligible, including historical parents. status filters parents; evidenceStatus filters items. Continue opaque cursor; restart invalidated cursors. Open appUrl or evidence_get with the real entityId. Never infer absence, commercial validation, speaker identity/voice/buying role/consent or mutate Jobs, Problem links or status from retrieval.

Input parameters:

- `createdSince` (string)
- `createdUntil` (string)
- `cursor` (string)
- `demoBatchId` (string)
- `evidenceKind` (string)
- `evidenceStatus` (string)
- `feedbackId` (string)
- `feedbackType` (string)
- `limit` (integer)
- `query` (string, required)
- `source` (string)
- `status` (string)

Output parameters:

- `completeness` (object)
- `meta` (object)
- `page` (object)
- `results` (array)

### `feedback_list_evidence` (~107 tokens)

List Feedback Evidence

Lists bounded chunked-source evidence for one feedback record, optionally narrowed to one initiative.

Input parameters:

- `cursor` (string): Opaque cursor returned by the preceding page.
- `feedbackId` (string, required): Unique identifier of the feedback record.
- `initiativeId` (string): Optional initiative UUID to filter linked evidence.
- `limit` (integer): Maximum records to return. Defaults to 25.
- `order` (string): Fixed collection direction.
- `sort` (string): Fixed collection order.

Output parameters:

- `meta` (object)
- `page` (object)
- `results` (array)

### `evidence_get` (~35 tokens)

Get Evidence

Fetches one bounded chunked-source feedback evidence record with provenance.

Input parameters:

- `evidenceId` (string, required): Unique identifier of the evidence record.

Output parameters:

- `evidence` (object)
- `meta` (object)

### `initiative_list_relationships` (~97 tokens)

List Initiative Relationships

Lists typed initiative relationships to capabilities, changes, work items, and learning.

Input parameters:

- `cursor` (string): Opaque cursor returned by the preceding page.
- `entityTypes` (array)
- `initiativeId` (string, required): Unique identifier of the initiative.
- `limit` (integer): Maximum records to return. Defaults to 25.
- `order` (string): Fixed collection direction.
- `sort` (string): Fixed collection order.

Output parameters:

- `meta` (object)
- `page` (object)
- `results` (array)

### `initiative_create` (~163 tokens)

Create Initiative

Creates an Outcomet initiative with optional problem links and strategic context.

Input parameters:

- `decision` (string): Initial disposition/decision.
- `linkedProblemIds` (array): Optional list of canonical problem UUIDs to link to this initiative.
- `notes` (string): Detailed initiative description, notes, or implementation context.
- `opportunityId` (string): Optional strategic opportunity UUID to link this initiative to.
- `owner` (string): Initiative owner.
- `problemStatement` (string): Problem statement or user challenge being addressed.
- `status` (string): Initial lifecycle status (defaults to "open").
- `successSignal` (string): Observable outcome or success signal indicating resolution.
- `targetUser` (string): Target persona or affected segment.
- `title` (string, required): Initiative title.

Output parameters:

- `initiative` (object)
- `meta` (object)

### `initiative_update` (~197 tokens)

Update Initiative

Updates an Outcomet initiative fields, status, decision, or problem links.

Input parameters:

- `addProblemIds` (array): Canonical problem UUIDs to link to this initiative.
- `decision` (string): Updated disposition/decision.
- `initiativeId` (string, required): Unique identifier of the initiative to update.
- `notes` (string): Updated detailed notes or context.
- `opportunityId`: Updated strategic opportunity UUID (or null to unlink).
- `owner` (string): Updated owner.
- `problemStatement` (string): Updated problem statement or user challenge.
- `removeProblemIds` (array): Canonical problem UUIDs to unlink from this initiative.
- `status` (string): Updated initiative lifecycle status. Close initiatives through the review workflow inside Outcomet.
- `successSignal` (string): Updated success signal or outcome metric.
- `targetUser` (string): Updated target persona or segment.
- `title` (string): Updated initiative title.

Output parameters:

- `initiative` (object)
- `meta` (object)

### `initiative_get_goal_suggestions` (~55 tokens)

Get Initiative Goal Suggestions

Fetches prepared lifecycle goal suggestions, current goal, draft, and strategic opportunity context for an Initiative. Prioritize selecting from these suggestions before freeform overrides.

Input parameters:

- `initiativeId` (string, required): Unique identifier of the initiative.

Output parameters:

- `basis` (string)
- `currentGoal`
- `draft`
- `initiativeId` (string)
- `opportunity`
- `question` (string)
- `suggestions` (array)

### `initiative_confirm_goal` (~144 tokens)

Confirm Initiative Goal

Confirms a lifecycle goal for an Initiative by selecting a prepared suggestion (via selectedIndex or directionId) or providing custom overrides. Requires initiatives:write.

Input parameters:

- `customOutcome` (string): Custom outcome or override.
- `customSuccessCriterion` (string): Custom success criterion or override.
- `directionId` (string): ID of the prepared suggestion direction to confirm.
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `initiativeId` (string, required): Unique identifier of the initiative to confirm goal for.
- `selectedIndex` (integer): Zero-based index of the prepared suggestion to confirm. Read initiative_get_goal_suggestions first.

Output parameters:

- `goalId` (string)
- `idempotencyKey` (string)
- `initiative` (object)
- `status` (string)

### `opportunity_search` (~134 tokens)

Search Strategic Opportunities

Searches or lists tenant-scoped Strategic Opportunities with thesis, status, parent Strategic Pillar, and linked capability/initiative counts.

Input parameters:

- `cursor` (string): Opaque cursor returned by the preceding page.
- `limit` (integer): Maximum records to return. Defaults to 25.
- `offset` (integer): Zero-based offset when cursor is not supplied.
- `pillarId` (string): Optional strategic pillar UUID to filter opportunities.
- `query` (string): Optional search query matching opportunity name or thesis.
- `status` (string): Optional opportunity status filter (e.g., Proposed, Active, Paused, Completed, Archived).

Output parameters:

- `meta` (object)
- `page` (object)
- `results` (array)

### `opportunity_get` (~53 tokens)

Get Strategic Opportunity

Fetches one Strategic Opportunity with its thesis, status, gate state, parent Strategic Pillar, and linked Capabilities, Initiatives, and Gate Decisions.

Input parameters:

- `opportunityId` (string, required): Unique identifier of the strategic opportunity.

Output parameters:

- `meta` (object)
- `opportunity` (object)

### `problem_create` (~131 tokens)

Create Problem

Creates or reuses a canonical Problem with the same normalized title (including closed Problems), reporting effect created/reused, with required evidence from feedback_list_evidence. Requires problems:write. To connect the Problem to an Initiative use initiative_update.addProblemIds. Does not create a proposal.

Input parameters:

- `description` (string, required)
- `evidence` (array, required): Real evidence chunk IDs from feedback_list_evidence; never invent evidence. Required for a canonical Problem.
- `idempotencyKey` (string, required)
- `parentProblemId` (string)
- `severity` (string, required)
- `title` (string, required)

Output parameters:

- `effect` (string)
- `idempotencyKey` (string)
- `problem` (object)

### `problem_search` (~193 tokens)

Search Problems

Searches scoped canonical Problems using the original natural DE/EN question, symptom, UUID, title or technical token. Status, severity and Initiative filters apply before ranking. Inspect meta.search for lexical fallback and incomplete coverage. Ranked results are a shortlist, never proof that no Problem exists or that the whole inventory was checked. Without query, returns the deterministic list. Use nextCursor for continuation; restart on invalid_cursor.

Input parameters:

- `cursor` (string): Opaque cursor returned by the preceding page.
- `demoBatchId` (string): With query only: search this Demo batch instead of real Problems. Never mixes batches.
- `initiativeId` (string): Filter problems linked to a specific initiative.
- `limit` (integer): Maximum records to return. Defaults to 25.
- `offset` (integer): Optional non-negative record offset.
- `query` (string)
- `severity` (string)
- `status` (string)

Output parameters:

- `meta` (object)
- `page` (object)
- `results` (array)

### `problem_get` (~39 tokens)

Get Problem

Fetches one complete canonical problem record with linked evidence, initiatives, decisions, and opportunities.

Input parameters:

- `problemId` (string, required): Unique identifier of the problem.

Output parameters:

- `meta` (object)
- `problem` (object)

### `feedback_problem_review_get` (~80 tokens)

Get Feedback Problem Review

Fetches the Problem Discovery review state for one feedback item, including the active AI analysis set (pending proposals, approved/rejected proposals, background/excluded evidence), linked canonical Problems, and unlinked evidence chunks.

Input parameters:

- `feedbackId` (string, required): Unique identifier of the feedback item to inspect for Problem Discovery proposals, canonical Problems, and unlinked evidence.

Output parameters:

- `meta` (object)
- `review` (object)

### `problem_proposal_approve` (~170 tokens)

Approve Problem Proposal

Approves a single AI problem proposal (when proposalId is provided) or all pending proposals in an active feedback problem analysis set (when proposalId is omitted), creating or reusing canonical Problems and linking evidence. Requires problems:write.

Input parameters:

- `analysisSetId` (string, required): Active problem analysis set UUID from feedback_problem_review_get.
- `feedbackId` (string): Optional feedback UUID for audit correlation.
- `idempotencyKey` (string, required): Stable UUID for safe retries.
- `proposalId` (string): Specific proposal ID to approve. Omit to approve all pending proposals in the analysis set.
- `proposalOverrides` (array): Optional overrides to link a proposal to an existing problem (kind="reuse" or "contradicts", problemId) or force creation (kind="create").

Output parameters:

- `analysisSetId` (string)
- `createdProblemIds` (array)
- `effect` (string)
- `idempotencyKey` (string)
- `status` (string)

### `problem_proposal_reject` (~116 tokens)

Reject Problem Proposal

Rejects a single AI problem proposal (when proposalId is provided) or the entire active feedback problem analysis set (when proposalId is omitted). Requires problems:write.

Input parameters:

- `analysisSetId` (string, required): Active problem analysis set UUID from feedback_problem_review_get.
- `idempotencyKey` (string, required): Stable UUID for safe retries.
- `proposalId` (string): Specific proposal ID to reject. Omit to reject the entire analysis set.
- `reason` (string): Optional reason recorded for rejecting the proposal(s).

Output parameters:

- `analysisSetId` (string)
- `effect` (string)
- `idempotencyKey` (string)
- `status` (string)

### `work_item_search` (~93 tokens)

Search Work Items

Searches tenant-scoped Outcomet Work Items with stable keyset pagination.

Input parameters:

- `cursor` (string): Opaque cursor from the preceding page.
- `limit` (integer): Defaults to 25.
- `order` (string)
- `query` (string)
- `sort` (string)
- `sourceId` (string)
- `sourceProvider` (string)
- `status` (string)

Output parameters:

- `meta` (object)
- `page` (object)
- `results` (array)

### `work_item_get` (~33 tokens)

Get Work Item

Fetches one safe, tenant-scoped Work Item with explicit relationship IDs.

Input parameters:

- `workItemId` (string, required)

Output parameters:

- `meta` (object)
- `workItem` (object)

### `initiative_link_work_item` (~67 tokens)

Link Initiative Work Item

Adds an explicit Work Item link to an active Initiative. Existing inherited Initiative links remain derived through Changes.

Input parameters:

- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `initiativeId` (string, required)
- `workItemId` (string, required)

Output parameters:

- `receipt` (object)

### `initiative_unlink_work_item` (~67 tokens)

Unlink Initiative Work Item

Removes the explicit Initiative link. Inherited links remain; edit the originating Change to remove them.

Input parameters:

- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `initiativeId` (string, required)
- `workItemId` (string, required)

Output parameters:

- `receipt` (object)

### `capability_link_work_item` (~62 tokens)

Link Capability Work Item

Links an existing Work Item to an active Capability through the shared app command.

Input parameters:

- `capabilityId` (string, required)
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `workItemId` (string, required)

Output parameters:

- `receipt` (object)

### `capability_unlink_work_item` (~64 tokens)

Unlink Capability Work Item

Removes an explicit Work Item–Capability relationship. Does not remove inherited Change relationships.

Input parameters:

- `capabilityId` (string, required)
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `workItemId` (string, required)

Output parameters:

- `receipt` (object)

### `work_item_link_change` (~64 tokens)

Link Work Item Change

Adds an explicit relationship between a Work Item and Change. Does not change either lifecycle.

Input parameters:

- `changeId` (string, required)
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `workItemId` (string, required)

Output parameters:

- `receipt` (object)

### `work_item_unlink_change` (~68 tokens)

Unlink Work Item Change

Removes a manual Work Item–Change link. GitHub references remain until removed from the PR text.

Input parameters:

- `changeId` (string, required)
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `workItemId` (string, required)

Output parameters:

- `receipt` (object)

### `work_item_update` (~133 tokens)

Update Work Item

Queues an explicit GitHub issue edit. Only open/completed/cancelled are supported. Last confirmed values stay visible until GitHub confirms; poll work_item_get for pending/completed/failed/conflict. Refresh on conflict. No implied PR-to-issue close.

Input parameters:

- `description`
- `expectedUpdatedAt` (string, required): updatedAt from the latest get response; stale writes fail with conflict.
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `status` (string)
- `title` (string)
- `workItemId` (string, required)

Output parameters:

- `receipt` (object)

### `feedback_update` (~116 tokens)

Update Feedback

Corrects Feedback title, summary or type. Manual corrections survive automatic classification. Does not rewrite raw source or Evidence/Problem attribution; use problem_link_evidence/problem_unlink_evidence for attribution.

Input parameters:

- `expectedUpdatedAt` (string, required): updatedAt from the latest get response; stale writes fail with conflict.
- `feedbackId` (string, required)
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `summary`
- `title` (string)
- `type` (string)

Output parameters:

- `receipt` (object)

### `feedback_set_status` (~138 tokens)

Set Feedback Status

Sets Feedback open/closed atomically with optional selected open Evidence. Closing requires completed/rejected/obsolete; reopening clears resolution and cannot reopen Evidence implicitly. No Problem or Initiative is closed.

Input parameters:

- `evidenceVersions` (object): At most 50 explicitly selected open evidence IDs and their current updatedAt. Omit to change only the parent.
- `expectedUpdatedAt` (string, required): updatedAt from the latest get response; stale writes fail with conflict.
- `feedbackId` (string, required)
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `resolution`
- `status` (string, required)

Output parameters:

- `receipt` (object)

### `feedback_link_change` (~118 tokens)

Link Feedback Change

Records an explicit fix/evidence claim linking Feedback and selected Evidence to a Change. Does not close records or assert verified resolution. Readback marks the claim stale if its evidence changes.

Input parameters:

- `changeId` (string, required)
- `evidenceIds` (array)
- `expectedUpdatedAt` (string, required): updatedAt from the latest get response; stale writes fail with conflict.
- `feedbackId` (string, required)
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `reason` (string, required)

Output parameters:

- `receipt` (object)

### `feedback_unlink_change` (~80 tokens)

Unlink Feedback Change

Removes the explicit Feedback–Change evidence claim without changing lifecycle.

Input parameters:

- `changeId` (string, required)
- `expectedUpdatedAt` (string, required): updatedAt from the latest get response; stale writes fail with conflict.
- `feedbackId` (string, required)
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.

Output parameters:

- `receipt` (object)

### `problem_link_evidence` (~81 tokens)

Link Problem Evidence

Corrects Evidence attribution by linking it to an existing Problem with supports/contradicts meaning. Requires problems:write and feedback:write.

Input parameters:

- `evidenceId` (string, required)
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `meaning` (string, required)
- `problemId` (string, required)

Output parameters:

- `receipt` (object)

### `problem_unlink_evidence` (~69 tokens)

Unlink Problem Evidence

Removes an Evidence attribution from a Problem through the shared app command. Requires problems:write and feedback:write.

Input parameters:

- `evidenceId` (string, required)
- `idempotencyKey` (string, required): Reuse only when retrying exactly the same request.
- `problemId` (string, required)

Output parameters:

- `receipt` (object)

### `change_search` (~82 tokens)

Search Changes

Find Changes by exact source ID or repository, with stable pagination. Use the returned UUID when linking fix evidence.

Input parameters:

- `cursor` (string): Opaque cursor returned by the preceding page.
- `limit` (integer)
- `query` (string)
- `repo` (string)
- `sourceId` (string)
- `sourceProvider` (string)

Output parameters:

- `page` (object)
- `results` (array)

### `change_get` (~41 tokens)

Get Change

Read a Change and its explicit Feedback/Evidence fix claims, including stale evidence indicators. A link alone does not close Feedback.

Input parameters:

- `changeId` (string, required)

Output parameters:

- `change` (object)

### `competitor_search` (~292 tokens)

Search Competitors

Search and inspect tracked competitors, landscape snapshots, movement trends, risk registers, and workspace settings. Use the view parameter (list, landscape, risks, movement, settings) to select the desired projection.

Input parameters:

- `asOf`: Optional point-in-time ISO timestamp for historical state.
- `category` (string): Optional category key filter.
- `cursor` (string): Opaque cursor returned by the preceding page.
- `limit` (integer): Maximum number of items to return.
- `offset` (integer): Optional non-negative record offset.
- `overdue` (boolean): If true, filters to competitors where next_check_at <= now().
- `query` (string): Optional text search matching company name, domain, or UVP verbatim.
- `ring` (string): Optional ring filter: ring_1 (direct collision), ring_2 (substitute), ring_3 (ecosystem), ring_4 (distant/latent).
- `since`: Optional ISO timestamp for movement delta comparison.
- `status` (string): Competitor tracking status filter. Defaults to active.
- `tier` (string): Optional threat tier filter.
- `until`: Optional ISO timestamp upper bound for movement window.
- `view` (string): View/aggregation mode: list (compact competitor list), landscape (full matrix with quadrants/scores), risks (portfolio risk register), movement (temporal changes), settings (workspace rubric & anchor…

Output parameters:

- `meta` (object)
- `movement` (array)
- `page` (object)
- `profiles` (array)
- `results` (array)
- `riskRegister` (array)
- `settings` (object)
- `total` (integer)
- `view` (string)

### `competitor_get` (~113 tokens)

Get Competitor Profile

Fetch comprehensive details for a competitor profile by profileId, companyId, or domain, including dimensional ratings, threat score/tier/ring/quadrant, and relations (relations pending profile-scoped RPC).

Input parameters:

- `companyId` (string): Underlying company UUID.
- `domain` (string): Company domain (e.g. acme.com).
- `includeRelations` (boolean): Whether to load active relationships (pending profile-scoped RPC in outcomet-app).
- `profileId` (string): Competitor profile UUID.

Output parameters:

- `competitor`
- `meta` (object)

### `competitor_mutate` (~696 tokens)

Mutate Competitor

Execute competitor mutations: upsert_profile, create_assessment, upsert_relation, upsert_risk, add_source, set_status, or create_rubric_version (admin only).

Input parameters:

- `action` (string, required): Mutation operation to execute.
- `againstUs` (object): Strategic comparison points against own product.
- `archetypeKey` (string): Risk archetype key.
- `cadenceByTier` (object)
- `cadenceOverrideMonths` (integer): Custom re-check cadence in months.
- `categoryKey` (string): Competitor category key (e.g. direct, adjacent, legacy).
- `changeNote` (string|null): Summary explanation of what changed.
- `companyDomain` (string): Company domain for matching or creating in Contacts.
- `companyId` (string): Company UUID if known.
- `companyName` (string): Company name if companyId is omitted.
- `confidence` (string): Confidence rating: A (verified), B (mixed), C (inferred).
- `contextCompanyId`: Context employer company UUID if subject is a person.
- `counterMove` (string|null): Planned response if risk triggers.
- `dimensions` (array): Rubric dimensions (Admin only).
- `facts` (object): Structured facts (pricing, funding, stage, etc.).
- `firedAt`: Timestamp when risk fired.
- `firedNote` (string|null): Explanation of how risk fired.
- `idempotencyKey` (string|null): Caller-generated UUID or hash for idempotent retries.
- `impact` (integer): Risk impact rating (1-5).
- `kind` (string): Source kind: homepage, pricing, interview, review, news, other.
- `likelihood` (integer): Risk likelihood rating (1-5).
- `note` (string|null): Relationship context note.
- `profileId` (string): Competitor profile UUID. Required for assessments, relations, risks, sources, status.
- `quote` (string|null): Verbatim quote or excerpt.
- `quoteLanguage` (string|null): Language code of quote (e.g. de, en).
- `ratings` (object): 6 Outcomet rubric ratings on 0-10 scale (job, buyer, distribution, proof, differentiator, market).
- `rationale` (object): Justification per changed dimension.
- `relationship` (string): Relationship type: uses, evaluating, switched_from, lost_to, won_from, champion, etc.
- `ringThresholds` (object)
- `riskId`: Existing risk UUID if updating; omitted when creating a new risk.
- `riskStatus` (string): Risk status.
- `rubricNote` (string|null): Rubric change note.
- `since` (string|null): Date when relationship began (YYYY-MM-DD).
- `status` (string): Competitor tracking status.
- `statusReason` (string|null): Optional status explanation.
- `subjectId` (string): Company or Person UUID to link.
- `subjectType` (string): Linked relation subject type.
- `summaryMd` (string|null): Markdown profile brief.
- `tierThresholds` (object)
- `triggerCondition` (string): Condition that signals this risk is unfolding.
- `url` (string): Source URL.
- `uvpSourceUrl` (string|null): Source URL where UVP was identified.
- `uvpVerbatim` (string|null): Verbatim positioning statement or headline.

Output parameters:

- `action` (string)
- `meta` (object)
- `result` (object)

## Diagnostics

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

## Score history

- 2026-11-05: 78
- 2026-11-04: 78
- 2026-11-03: 37
- 2026-11-02: 37
- 2026-11-01: 37
- 2026-10-31: 37
- 2026-10-30: 37
- 2026-10-29: 37
- 2026-10-28: 37
- 2026-10-27: 37
- 2026-10-26: 37
- 2026-10-25: 37
- 2026-10-24: 37
- 2026-10-23: 37
- 2026-10-22: 37
- 2026-10-21: 37
- 2026-10-20: 37
- 2026-10-19: 37
- 2026-10-18: 37

## Common questions

### What is the Outcomet MCP server?

Outcomet is an MCP server listed in the public MCP registry as app.outcomet/mcp. Read customer feedback, problems and initiatives in Outcomet, and log new feedback from chat. This page covers its hosted endpoint (https://mcp.outcomet.app/mcp).

### Is the Outcomet MCP server safe to use?

Outcomet scores 78 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Outcomet MCP server expose?

Outcomet exposes 84 tools: server_status_get, capability_update, capability_create, capability_reparent, capability_retire, and 79 more. Their descriptions and schemas cost roughly 10,575 tokens of context every time the server is loaded.

### Does the Outcomet MCP server require authentication?

Yes. Outcomet asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Outcomet MCP server still maintained?

Outcomet is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.outcomet.app/mcp
- Website: https://outcomet.app/developers
- Changelog RSS feed: https://verifymcp.io/servers/app-outcomet-mcp/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-outcomet-mcp/mcp.json
- HTML version of this page: https://verifymcp.io/servers/app-outcomet-mcp/mcp
