Persimmon

Brand-intelligence MCP: momentum scoring, signal evidence, and competitive context for agents.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
97%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~448Tokens (tool definitions)
~993 BTypical response size
Minimal attention impact (0.35% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "persimmon": {
      "url": "https://mcp.persimmonhq.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.persimmonhq.com/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_momentum_index(brand, limit)

Use this when an agent needs Persimmon's deterministic momentum score for a specific brand or the top of the index. Returns composite score plus four dimensions (Draw, Surge, Wedge, Hold), tier band, signal count, and last-updated timestamp. Pure read; no LLM calls in scoring.

Input Schema

{
  "type": "object",
  "properties": {
    "brand": {
      "type": "string",
      "description": "Brand name. Omit to receive the full index (capped to top-N by composite score)."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "When `brand` is omitted, cap the number of returned brand entries. Defaults to 50. Maximum 200."
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢get_brand_signals(brand, tier_floor, limit)

Use this when an agent needs the recent harvested signals (each with text, tier, score, and source URL) backing a brand's score. Public-citable signals only — internal-only items are filtered before emit. Always carries a coverage_status describing why a list may be empty.

Input Schema

{
  "type": "object",
  "properties": {
    "brand": {
      "type": "string",
      "description": "Brand name."
    },
    "tier_floor": {
      "type": "string",
      "enum": [
        "NOTABLE",
        "STRONG"
      ],
      "description": "Minimum signal tier to include. Defaults to NOTABLE."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max signals to return. Defaults to 10."
    }
  },
  "required": [
    "brand"
  ],
  "additionalProperties": false
}
🟢get_competitive_context(brand, limit)

Use this when an agent needs a brand's competitor set, peer momentum snapshots, and a deterministic competitive-position one-liner. Excludes peers without real signal coverage (scaffold tier). Always carries a coverage_status describing the result.

Input Schema

{
  "type": "object",
  "properties": {
    "brand": {
      "type": "string",
      "description": "Brand name."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "description": "Max number of peer snapshots to return. Defaults to 4."
    }
  },
  "required": [
    "brand"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools
verifiedversion not recorded3 tools
verifiedversion not recorded3 tools