Skip to main content
Glama
JaredOnAnIsland

seed-oil-tracker-mcp

Seed Oil Tracker MCP Server

A free, hosted MCP server that gives AI assistants live access to the largest restaurant seed oil database: 500+ US chains, 40,000+ menu items, each with an estimated PUFA (polyunsaturated fat) value built from published nutrition data and disclosed cooking oils.

Ask your assistant things like:

  • Does Chick-fil-A use seed oils?

  • What oil does Chipotle cook with?

  • What is the cleanest thing to order at Five Guys?

  • Which chains have the lowest seed oil overall?

Connect

No key, no account, read only.

Endpoint (streamable HTTP):

https://seedoiltracker.com/mcp

Claude (claude.ai): Settings, then Connectors, then Add custom connector, then paste the endpoint URL.

Claude Code:

claude mcp add --transport http seed-oil-tracker https://seedoiltracker.com/mcp

Any other MCP client: streamable HTTP transport, no auth.

Setup guide: https://seedoiltracker.com/mcp-setup

Related MCP server: Macro Engine

Run locally (stdio)

Prefer a local process, or your client only speaks stdio? This repo ships a zero-dependency stdio server (server.py, Python 3.8+, standard library only). It answers the MCP handshake locally and forwards tool calls to the hosted endpoint.

python server.py

Claude Desktop config example:

{
  "mcpServers": {
    "seed-oil-tracker": {
      "command": "python",
      "args": ["/path/to/server.py"]
    }
  }
}

Or with Docker:

docker build -t seed-oil-tracker-mcp .
docker run -i seed-oil-tracker-mcp

Tools

Tool

What it does

get_chain

One chain's seed oil letter grade, the oil it fries in, the cleanest menu items to order, and the highest to avoid. Fuzzy name matching.

search_chains

Find covered chains by full or partial name.

get_rankings

Chains ranked cleanest first or worst first by average seed oil per menu item.

Data

Same dataset that powers the Seed Oil Tracker iOS app and seedoiltracker.com. Also available as a no-key JSON API and ChatGPT Action (https://seedoiltracker.com/ai-tool) and as an open dataset in CSV and JSON, licensed CC BY 4.0 (https://seedoiltracker.com/open-data).

Methodology and citation: https://seedoiltracker.com/methodology

About

Built by Seed Oil Tracker (https://seedoiltracker.com). The hosted server is the primary way to connect; this repository documents it and ships the local stdio bridge. Questions and issues welcome here.

Available Tools

3 tools
get_chainA chain's seed-oil grade, frying oil, and cleanest ordersA

Look up one US restaurant chain: its seed-oil letter grade, the oil it cooks with, the lowest-seed-oil menu items to order, and the highest to avoid. Fuzzy name matching ('chickfila' finds Chick-fil-A).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRestaurant chain name

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses fuzzy matching and US-only scope. However, it does not mention error behavior for unknown chains, authentication needs, or whether the data is static, leaving gaps for a tool with no safety annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste. Purpose is front-loaded, and fuzzy matching note is appended efficiently. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description fully explains what is returned (grade, oil, best/worst items). It specifies US-only scope, making the tool's behavior complete for a single-parameter lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter 'name' has 100% schema coverage (description 'Restaurant chain name'). The description adds significant value by explaining fuzzy matching behavior, which is beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'look up' and the specific resource 'one US restaurant chain', listing the exact data returned (grade, oil, items). It distinguishes from siblings by implying this is for detailed info on a single chain, while get_rankings and search_chains serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on fuzzy matching and implies use for specific chain details. However, it does not explicitly state when not to use it or mention alternatives like search_chains for finding chains or get_rankings for rankings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rankingsCleanest or worst chains, rankedA

Ranked list of chains by average seed oil per menu item. order=best (cleanest first) or worst.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 15
orderNoDefault best

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not explicitly state read-only or destructive behavior. However, 'Ranked list' implies a read operation. The description lacks details on what happens if no data is available or if parameters are invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 17 words, highly efficient. It is front-loaded with the title and immediately conveys the key functionality. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 2 parameters and no output schema, the description covers the essential logic: ranking by seed oil with order choice. The 'limit' parameter is documented in the schema (default 15), so omission in description is acceptable. No output schema exists, but the return type (list of chains) is inferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters. The description adds value by clarifying the 'order' parameter: 'order=best (cleanest first) or worst.' This provides semantic meaning beyond the schema's enum values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it provides a ranked list of chains by average seed oil per menu item, with order parameter for best/worst. The title 'Cleanest or worst chains, ranked' reinforces the purpose. It distinguishes from sibling tools 'get_chain' (specific chain) and 'search_chains' (search functionality).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description does not explicitly state when to use this tool versus alternatives, nor does it provide when-not-to-use guidance. However, the context of sibling tools implies usage for rankings, and the description is clear enough for an agent to infer appropriate use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_chainsFind matching chain namesA

Search the 500+ covered US chains by (partial) name; returns matches with grades.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesFull or partial chain name

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool returns matches with grades, but lacks details on limitations, edge cases (e.g., no matches), or behavior like pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words, front-loading the key action and result.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description provides adequate context (scope of 500+ chains, result type). Minor gap: no output structure details, but not critical for a basic search.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear parameter description. The tool description adds 'by (partial) name' which reinforces but does not extend the schema's semantics, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action (search), resource (US chains by partial name), and result (matches with grades), clearly distinguishing it from sibling tools like get_chain and get_rankings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for partial name matching but does not explicitly state when to use alternatives or provide exclusions. The context from sibling names suggests distinct purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedget_chain
    • First observedget_rankings
    • First observedsearch_chains

TDQS

A4.3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: single chain lookup, ranking list, and name search. No overlap in functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (get_chain, get_rankings, search_chains).

Tool Count5/5

Three tools is well-scoped for a focused domain of tracking seed oils in chains, providing lookup, rankings, and search without redundancy.

Completeness4/5

Core operations are covered: individual lookup, ranked comparisons, and search. A potential minor gap is lack of a tool to list all chains, but search with partial name covers most use cases.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A filesystem-based MCP server that turns any MCP-capable AI agent into a conversational calorie and protein tracker with natural-language estimates, confidence-aware logging, daily/weekly progress, food-history search, and export, working offline with local fallback data.
    15
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Tracks macros and logs meals via plain language by exposing a local USDA food database as an MCP server.
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    A local, JSON-first calorie and protein tracker for agents and shell workflows, providing a CLI and MCP server for meal tracking, goal management, and summaries with SQLite storage.
    11
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Exposes iiko restaurant management system REST API as 42+ LLM-callable tools over stdio, enabling natural language interaction with products, employees, orders, payments, OLAP reports, and assembly charts.
    2
    MIT