# Fodda Knowledge Graphs (npm · fodda-mcp)

Expert-curated knowledge graphs for AI agents — retail, beauty, sports, plus institutional data

- Trust score: 64/100 (medium)
- Change this week: +20
- Registry status: deprecated
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

> **Deprecated**: this server is marked deprecated in the MCP registry.

## Components

- npm · `fodda-mcp`: 64/100 (this document), [markdown](https://verifymcp.io/servers/piers-fawkes-fodda/fodda-mcp.md), [page](https://verifymcp.io/servers/piers-fawkes-fodda/fodda-mcp)

## Channel facts

- Registry: `npm`
- Package: `fodda-mcp`
- Version: `1.7.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, 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.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (108 of 109), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (108 of 109), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (SEE LICENSE IN LICENSE) isn't a recognized OSI-approved license.
  - Actively maintained (last published 30 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1249 tokens (~178/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 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).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add piers-fawkes-fodda -- npx -y fodda-mcp
```

### Codex

```bash
codex mcp add piers-fawkes-fodda -- npx -y fodda-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "piers-fawkes-fodda": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "fodda-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add piers-fawkes-fodda --command npx --arg -y --arg fodda-mcp
```

### Hermes

```yaml
mcp_servers:
  piers-fawkes-fodda:
    command: "npx"
    args: ["-y", "fodda-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "piers-fawkes-fodda": {
      "command": "npx",
      "args": [
        "-y",
        "fodda-mcp"
      ]
    }
  }
}
```

## 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 64, +59)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [functional regression] License: unverified → fail
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Tool coverage: unverified → 100
- [functional] Licence: SEE LICENSE IN LICENSE

### 2026-08-01 (score 5, −14)

- [functional regression] Tool coverage: 100 → unverified

### 2026-07-31 (score 19, +13)

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

### 2026-07-30 (score 6, −38)

- [security regression] Malware scan: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Security disclosure: fail → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 44)

First indexed and scored.

## MCP tools (7)

### `list_graphs` (~56 tokens)

Discover available knowledge graphs and their schemas, including node types, relationship types, and versions. Use this tool first to find valid graphId values for other tools.

Input parameters:

- `userId` (string, required): Unique identifier for the user (Required)

Output parameters:

- `graphs` (array): Array of available graphs with their schemas

### `search_graph` (~310 tokens)

Search across expert-curated PSFK knowledge graphs (Retail, Beauty, Sports and partner datasets) to retrieve structured trend clusters, signals, and supporting articles relevant to a query. Note: a server-side relevance gate may reduce results for brand/entity-specific queries — results with low semantic scores that don't mention query terms are automatically filtered out.

Input parameters:

- `filters` (object): Optional filters to narrow search results
- `graphId` (string, required): Select which curated graph to query. Use list_graphs to discover available options. Common values: 'retail', 'beauty', 'sports', 'psfk', 'sic', 'waldo', 'pew'.
- `include_evidence` (boolean): If true, batch-fetch supporting evidence articles inline with results. Saves a separate get_evidence call per trend. Default: true. Each evidence item includes: sourceUrl, place (geographic location)…
- `limit` (number): Maximum number of results (default 25, max 50)
- `query` (string, required): The search query. Location terms (city/country names like 'London', 'Tokyo') are auto-detected and used to hard-filter results geographically. Geo terms auto-expand (e.g., 'London' also matches 'UK',…
- `use_semantic` (boolean): Whether to use semantic search (default true)
- `userId` (string, required): Unique identifier for the user (Required)

Output parameters:

- `results` (array): Array of matching nodes (trends, articles), each optionally with an 'evidence' array if include_evidence=true. When evidence is included, each evidence item contains: sourceUrl (article link), place…
- `search_method` (string): Search method used: 'vector', 'keyword', 'hybrid', or 'all_fallback'
- `total` (number): Total number of results found
- `usage` (object): Billing/usage metadata

### `get_neighbors` (~234 tokens)

Explore how a trend, brand, or technology connects to related signals, concepts, and adjacent innovation patterns within the selected graph. Traversal is depth-limited for focused discovery.

Input parameters:

- `depth` (number): Traversal depth (default 1, max 2)
- `direction` (string): Traversal direction: 'out' (default) follows outgoing edges, 'in' follows incoming edges
- `graphId` (string, required): Select which curated graph to query. Use list_graphs to discover available options. Common values: 'retail', 'beauty', 'sports', 'psfk', 'sic', 'waldo', 'pew'.
- `limit` (number): Maximum results (default 50)
- `relationship_types` (array): Filter by relationship types: 'EVIDENCED_BY', 'RELATED_TO', 'SEMANTICALLY_SIMILAR', 'ASSOCIATED_BRAND', 'MENTIONS_BRAND', 'IN_LOCATION'
- `seed_node_ids` (array, required): Array of node IDs to start traversal from
- `userId` (string, required): Unique identifier for the user (Required)

Output parameters:

- `edges` (array): Array of relationships between nodes
- `nodes` (array): Array of neighboring nodes
- `usage` (object)

### `get_evidence` (~139 tokens)

Retrieve supporting signals, source articles, and structured evidence for a specific trend or concept. Designed for provenance, validation, and strategic briefing.

Input parameters:

- `for_node_id` (string, required): The ID of the node (Trend or Article)
- `graphId` (string, required): Select which curated graph to query. Use list_graphs to discover available options. Common values: 'retail', 'beauty', 'sports', 'psfk', 'sic', 'waldo', 'pew'.
- `top_k` (number): Number of evidence items to return (default 5)
- `userId` (string, required): Unique identifier for the user (Required)

Output parameters:

- `evidence` (array): Array of evidence items with source URLs, titles, snippets, relevance scores, place (geographic location of the article), and brand names
- `node_id` (string): The node this evidence supports
- `usage` (object)

### `get_node` (~109 tokens)

Retrieve the full metadata and properties of a specific node within the knowledge graph, including labels and structured attributes.

Input parameters:

- `graphId` (string, required): Select which curated graph to query. Use list_graphs to discover available options. Common values: 'retail', 'beauty', 'sports', 'psfk', 'sic', 'waldo', 'pew'.
- `nodeId` (string, required): The ID of the node
- `userId` (string, required): Unique identifier for the user (Required)

Output parameters:

- `display` (string): Display name of the node
- `id` (string): Node ID
- `labels` (array): Array of node labels/types
- `properties` (object): Key-value properties of the node

### `get_label_values` (~175 tokens)

Discover available values for a specific category (e.g., Technology, Audience, RetailerType, Brand) to support structured filtering and exploration.

Input parameters:

- `graphId` (string, required): Select which curated graph to query. Use list_graphs to discover available options. Common values: 'retail', 'beauty', 'sports', 'psfk', 'sic', 'waldo', 'pew'.
- `label` (string, required): The label to fetch values for (e.g., 'Brand', 'Location', 'Technology', 'Audience', 'RetailerType', 'Trend')
- `property` (string): Optional property to return values for. Defaults vary by label (Brand→name, Technology→slug, Audience→slug, Trend→trendName)
- `userId` (string, required): Unique identifier for the user (Required)

Output parameters:

- `count` (number): Number of values found
- `label` (string): The label queried
- `property` (string): The property values were fetched from
- `values` (array): Array of valid values for the label

### `discover_adjacent_trends` (~226 tokens)

Find trends that are semantically similar to a given trend — useful for discovering 'what else should I be watching?' or expanding a research brief with related signals. Returns trends connected by AI-computed similarity, not editorial curation.

Input parameters:

- `graphId` (string, required): Select which curated graph to query. Use list_graphs to discover available options. Common values: 'retail', 'beauty', 'sports', 'psfk', 'sic', 'waldo', 'pew'.
- `include_editorial` (boolean): If true, also include trends that are already editorially linked via RELATED_TO. Default: false (shows only AI-discovered connections)
- `limit` (number): Maximum number of adjacent trends to return. Default: 10
- `min_score` (number): Minimum similarity score threshold (0-1). Higher = more similar. Default: 0.80
- `trend_id` (string, required): The trendId of the seed trend to find adjacent possibilities for
- `userId` (string, required): Unique identifier for the user (Required)

Output parameters:

- `adjacent` (array): Array of semantically similar trends with similarity scores
- `count` (number): Number of adjacent trends returned
- `min_score` (number): Minimum similarity threshold applied
- `node_id` (string): The seed trend ID queried
- `usage` (object)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/piers-fawkes-fodda/fodda-mcp#diagnostics

## Score history

- 2026-08-03: 64
- 2026-08-02: 64
- 2026-08-01: 5
- 2026-07-31: 19
- 2026-07-30: 6
- 2026-07-28: 44
- 2026-07-27: 44

## Links

- npm package: https://www.npmjs.com/package/fodda-mcp
- Socket report: https://socket.dev/npm/package/fodda-mcp
- Repository: https://github.com/piers-fawkes/fodda-mcp
- Website: https://fodda.ai/
- Changelog RSS feed: https://verifymcp.io/servers/piers-fawkes-fodda/fodda-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/piers-fawkes-fodda/fodda-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/piers-fawkes-fodda/fodda-mcp
