[ PERSIMMON ]

[ LIVE MCP PROOF · 2026-05-07 ]

Persimmon is brand intelligence agents can call.

Deterministic brand momentum, competitive context, and citable signal evidence — exposed through an interface agents can use today. Listed on the open Model Context Protocol registry as com.persimmonhq/persimmon. Hosted at https://mcp.persimmonhq.com/mcp.

What follows is a four-move walkthrough. Each move shows the agent prompt, the tool call, and the live MCP response shape. Responses below were captured from the hosted endpoint on 2026-05-07; long boilerplate fields are trimmed with explicit [excerpted] labels.

01

Deterministic brand momentum

The score comes back in milliseconds. Composite, four dimensions (Draw, Surge, Wedge, Hold), tier band, and a provenance stamp. No LLM in the scoring loop — the same engine that runs the website.

What an agent (or operator) asks

Use the Persimmon MCP and pull the momentum index for Adobe.
Show composite, tier band, the four dimensions, status, and provenance.

Tool call against https://mcp.persimmonhq.com/mcp

POST https://mcp.persimmonhq.com/mcp
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_momentum_index",
    "arguments": { "brand": "adobe" }
  }
}

Live response — get_momentum_index(adobe), 2026-05-07 [excerpted]

{
  "generated_at": "2026-05-07T09:40:29.739840",
  "brand": {
    "evidence_class": "owned_analysis",
    "brand_id": "adobe",
    "name": "Adobe",
    "composite": 72,
    "tier_band": "STRONG",
    "dimensions": {
      "draw": 74,
      "surge": 64,
      "wedge": 75,
      "hold": 75
    },
    "status": "MEANINGFULLY_SCORED",
    "signal_count": 25,
    "last_updated": "2026-05-07T09:40:04.708386",
    "_provenance": "persimmon_owned_analysis"
  },
  "coverage_status": "ok",
  "coverage_reason": "Persimmon momentum read for Adobe.",
  "fresh_scan_recommended": false,
  "can_request_scan": false,
  "scan_policy": "[excerpted — read-only, deterministic, no paid-vendor triggers; see Methodology below]",
  "_publisher": "Spann",
  "_product": "persimmon"
}

What this proves: One call returns a structured score with provenance. Composite 72 is reproducible: the same call returns the same number until the next harvest cycle updates the underlying substrate. The shape an agent sees is the shape a human auditor sees.

02

Competitive context, computed not generated

Same engine, relationship layer. Peer momentum snapshots come from the brand's competitor map; the position one-liner is computed deterministically from the composite numbers, not generated by a model.

What an agent (or operator) asks

Use the Persimmon MCP and pull competitive context for Stripe.
Show the peer set, peer composites, and the deterministic position summary.

Tool call against https://mcp.persimmonhq.com/mcp

POST https://mcp.persimmonhq.com/mcp
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_competitive_context",
    "arguments": { "brand": "stripe" }
  }
}

Live response — get_competitive_context(stripe), 2026-05-07 [excerpted]

{
  "generated_at": "2026-05-07T09:40:29.739840",
  "brand_id": "stripe",
  "brand_name": "Stripe",
  "brand_composite": 76,
  "competitors": ["Adyen", "Braintree", "Checkout.Com", "PayPal", "Square"],
  "peer_snapshots": [
    {
      "evidence_class": "owned_analysis",
      "brand_id": "adyen",
      "name": "Adyen",
      "composite": 44,
      "status": "TOPICAL_ONLY",
      "dimensions": { "draw": 45, "surge": 29, "wedge": 53, "hold": 50 },
      "_provenance": "persimmon_owned_analysis"
    },
    {
      "brand_id": "paypal",
      "name": "PayPal",
      "composite": 46,
      "status": "TOPICAL_ONLY",
      "dimensions": { "draw": 49, "surge": 30, "wedge": 58, "hold": 49 }
    },
    {
      "brand_id": "square",
      "name": "Square",
      "composite": 46,
      "status": "MEANINGFULLY_SCORED",
      "dimensions": { "draw": 61, "surge": 29, "wedge": 53, "hold": 35 }
    }
  ],
  "competitive_position": {
    "evidence_class": "owned_analysis",
    "text": "Stripe scores 76 — leads its competitive set. Peers: Adyen (44), PayPal (46), Square (46).",
    "_provenance": "persimmon_owned_analysis"
  },
  "coverage_status": "ok",
  "_publisher": "Spann",
  "_product": "persimmon"
}

What this proves: The position one-liner is a deterministic function of the peer composites — not a generated sentence. An agent doing competitive analysis can ground itself in the same map a human strategist would, with the same numbers.

03

Citable signal evidence

The evidence layer. Each signal carries a real https URL the audience can click. Internal-only signals are dropped before emit by an evidence-policy filter; what you see is what an agent could cite back to the source.

What an agent (or operator) asks

Use the Persimmon MCP and pull the recent signals tracked for Stripe.
Limit to three. Show signal text, tier, score, and the source URL.

Tool call against https://mcp.persimmonhq.com/mcp

POST https://mcp.persimmonhq.com/mcp
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "get_brand_signals",
    "arguments": { "brand": "stripe", "limit": 3 }
  }
}

Live response — get_brand_signals(stripe, limit=3), 2026-05-07 [excerpted]

{
  "generated_at": "2026-05-07T09:40:29.739840",
  "brand_id": "stripe",
  "brand_name": "Stripe",
  "tier_floor": "NOTABLE",
  "signals": [
    {
      "text": "Developer-facing release. Stars: 4405. Recent commits: True.",
      "tier": "NOTABLE",
      "score": 62,
      "category": "developer_velocity",
      "origin": "free_backbone",
      "evidence_class": "public_citable",
      "source": "github:stripe/stripe-node",
      "source_url": "https://github.com/stripe/stripe-node"
    },
    {
      "text": "Changelog shipped on stripe.",
      "tier": "NOTABLE",
      "score": 58,
      "category": "product_cadence",
      "origin": "free_backbone",
      "evidence_class": "public_citable",
      "source": "changelog:stripe",
      "source_url": "https://stripe.com/blog/everything-we-announced-at-sessions-2026"
    },
    {
      "text": "Changelog shipped on stripe.",
      "tier": "NOTABLE",
      "score": 58,
      "category": "product_cadence",
      "origin": "free_backbone",
      "evidence_class": "public_citable",
      "source": "changelog:stripe",
      "source_url": "https://stripe.com/blog/giving-agents-the-ability-to-pay"
    }
  ],
  "coverage_status": "ok",
  "raw_signal_count": 3,
  "emitted_signal_count": 3,
  "dropped_internal_only_count": 0,
  "_publisher": "Spann",
  "_product": "persimmon"
}

What this proves: Three signals in, three signals out, zero dropped to internal-only this cycle. Each carries a public URL: a GitHub release, a Sessions 2026 keynote post, an agents-payments product blog. An agent or analyst that wants to verify the score can click through to the source.

04

Graceful failure when the system doesn't know

A brand the system doesn't track produces a structured fail-closed envelope, not a traceback or an invented answer. The shape is diagnostic — an agent can branch on coverage_status and either retry, surface the gap, or move on.

What an agent (or operator) asks

Use the Persimmon MCP and pull the momentum index for "totally-fake-brand-xyz".
Show the full response.

Tool call against https://mcp.persimmonhq.com/mcp

POST https://mcp.persimmonhq.com/mcp
{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "get_momentum_index",
    "arguments": { "brand": "totally-fake-brand-xyz" }
  }
}

Live response — fail-closed envelope, 2026-05-07 [excerpted]

{
  "error": "brand_not_found",
  "message": "No tracked brand matches 'totally-fake-brand-xyz'.",
  "brand_query": "totally-fake-brand-xyz",
  "claims": [],
  "did_you_mean": [],
  "closest_match": null,
  "coverage_status": "brand_not_found",
  "coverage_reason": "'totally-fake-brand-xyz' is not in Persimmon's brand index. An operator-initiated scan could add it; this tool does not perform implicit scans.",
  "fresh_scan_recommended": true,
  "can_request_scan": true,
  "scan_policy": "[excerpted — see Methodology below]",
  "_publisher": "Spann",
  "_product": "persimmon"
}

What this proves: No invented score, no fabricated evidence, no traceback. The error is a typed envelope an agent can read: error code, coverage_status, did_you_mean for typo recovery, scan_policy disclaimer. When the system doesn't know, it says so in a shape the agent can branch on. That is the difference between infrastructure and a chat toy.

[ Methodology ]

How to read this

  • Deterministic, cached substrate. The MCP reads Persimmon's cached intel bundle. Calling the same tool with the same arguments returns the same response until the next harvest cycle updates the underlying data.
  • Read-only tools. All three tools — momentum index, competitive context, brand signals — are read-only. None of them write to the substrate. None of them trigger a new web scan or a paid-vendor API call as a side effect of being called.
  • No live harvest from this page. The transcripts above were captured from the hosted endpoint on 2026-05-07. Loading or scrolling this page does not call the MCP, does not trigger a harvest, and does not consume any vendor budget. If you want to verify the live shapes, use the tool call against the public endpoint directly.
  • Evidence policy. Every response is filtered through an evidence-policy filter before emit. Internal-only items are dropped; public-citable items pass with provenance attached. The coverage_status and dropped_internal_only_count fields make the policy visible at the wire.

[ REGISTRY RECEIPT ]

Listed on the open Model Context Protocol registry as com.persimmonhq/persimmon (v0.1.1, marked isLatest: true). Anyone with an MCP-aware client can resolve and call it from the registry today. View the registry record →

[ What this does not prove ]

This page proves Persimmon v1 — live, agent-callable brand intelligence with evidence discipline — and nothing more.

  • — Not the hospitality vertical proof. That ships on a separate substrate and is not yet ready for external claims.
  • — Not full strategic reads. Only the three read-only tools above are exposed today.
  • — Not live web scanning. The MCP reads cached intel; no scan is triggered by these calls.
  • — Not customer demand validation. Persimmon's commercial signal is held separately.
  • — Not the whole company. This is the proof surface, not the wedge.
[ Broader thesis ]

Persimmon is the first live proof surface for Spann — a substrate thesis that strategic workflows should not only produce human-facing reports; they should become infrastructure agents can call, inspect, and compose. Persimmon proves that domain intelligence can be exposed as a callable tool with provenance and refusal behavior. Spann's lead commercial bet is a separate substrate that is not making external claims yet.