mcp-openfoodtox: Instructions file for Codex

AGENTS.md

mcp-openfoodtox AGENTS.md is an instructions file for Codex, OpenCode from spyrosze/mcp-openfoodtox. It costs 6,574 tokens per session, scanned A, original, MIT.

An MCP server that lets an AI query EFSA OpenFoodTox, a European food-safety database covering chemical substances, toxicology studies, and safety assessments. Its data is stored in related SQLite tables.

In plain words
What is it for?
Use it to investigate food additives, pesticides, chemical substances, toxicology studies, and EFSA safety assessments through connected records.
Why use it?
It makes a large technical dataset easier to search with natural-language questions instead of requiring users to understand every table and relationship.

Instructions file for CodexOpenCode

Written for Codex and OpenCode: the file is AGENTS.md.

This is spyrosze/mcp-openfoodtox's own configuration. It tells Codex and OpenCode how to work on mcp-openfoodtox itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything mcp-openfoodtox configures →

Reuse

Borrowing it

Nothing to install: this file belongs to spyrosze/mcp-openfoodtox. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/spyrosze/mcp-openfoodtox/master/AGENTS.md
Clone the repo
git clone --depth 1 https://github.com/spyrosze/mcp-openfoodtox

Made for: Codex, OpenCode.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for mcp-openfoodtox AGENTS.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/spyrosze/mcp-openfoodtox/agents-md/github.svg)](https://agentmods.dev/instructions/spyrosze/mcp-openfoodtox/agents-md)
Your own site
<a href="https://agentmods.dev/instructions/spyrosze/mcp-openfoodtox/agents-md"><img src="https://agentmods.dev/badge/instructions/spyrosze/mcp-openfoodtox/agents-md/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for mcp-openfoodtox AGENTS.md

Your own site · 80×15
<a href="https://agentmods.dev/instructions/spyrosze/mcp-openfoodtox/agents-md"><img src="https://agentmods.dev/badge/instructions/spyrosze/mcp-openfoodtox/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 6,574 This file is loaded in full into every session.
When invoked 6,574 The same file — it is already loaded in full.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.06574 $0.06574
Opus 5 $0.03287 $0.03287
Sonnet 5 $0.01315 $0.01315
Haiku 4.5 $0.00657 $0.00657

Measured 10d ago against content hash edd2292cee32, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

Grade A, and why

mcp-openfoodtox AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

AGENTS.md · 496 lines

How it starts

The opening of the file, as written. The whole thing — 496 lines — stays where its author put it; the contents beside it link to each section on GitHub.

EFSA OpenFoodTox MCP Server - Project Instructions

Project Overview

Python MCP (Model Context Protocol) server providing LLM access to EFSA food safety toxicology data (~138,000 entries in 9 tables, 8K Chemical substance details). Enables natural language queries about food additives, pesticides, and chemical safety assessments.

Dataset Structure

Core Tables (SQLite)

  • Opinion (2,437) - EFSA published opinions/documents
  • Synonym (45,582) - Alternative names, E-numbers, trade names
  • Component (8,006) - Chemical substance details (CAS, formulas, IUPAC)
  • Study (54,621) - Fact table linking substances to studies
  • Genotox (246) - Genotoxicity study details
  • Endpoint_study (11,698) - Toxicity endpoints (NOAEL, LD50, etc.)
  • Chem_assess (11,357) - Risk assessments (ADI, TDI, safety factors)
  • Question (5,296) - Opinion-related questions
  • Dictionary (204) - Metadata/column descriptions

Key Relationships

SYNONYM (45,582 names/codes)
  ↓ SUB_COM_ID
COMPONENT (8,006 substances)
  ↓ SUB_COM_ID
STUDY (54,621 study records)
  ↓ branches to three study types:
  ├─ GENOTOX_ID → GENOTOX (246 studies)
  ├─ TOX_ID → ENDPOINT_STUDY (11,698 studies)
  └─ HAZARD_ID → CHEM_ASSESS (11,357 assessments)
  ↓ OP_ID
OPINION (2,437 opinions)
  ↓ OP_ID
QUESTION (5,296 questions)

Important Fields

  • TRX_ID: Transaction ID (published transmission identifier)
  • OP_ID: Opinion identifier
  • SUB_COM_ID: Substance-component link
  • COM_TYPE: Chemical complexity (single/mixture/botanical/synthetic)
  • SUB_OP_CLASS: Usage category (food additive/pesticide/flavoring)
  • REGULATION_CODE: EU regulation (1333/2008=additives, 1107/2009=pesticides)

Database Schema Reference

Reference only - use when needed for column names, types, and nullability

Dictionary table
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 204 entries, 0 to 203
Data columns (total 8 columns):
 #   Column                    Non-Null Count  Dtype 
---  ------                    --------------  ----- 
 0   Table_name                197 non-null    object
 1   Name                      197 non-null    object
 2   Type                      197 non-null    object
 3   Description               197 non-null    object
 4   isNullable                197 non-null    object
 5   isRecordUniqueIdentifier  197 non-null    object
 6   Catalogue Code            33 non-null     object
 7   Last update               190 non-null    object
dtypes: object(8)
memory usage: 12.9+ KB
None
----------
Synonym table
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 45582 entries, 0 to 45581
Data columns (total 5 columns):
 #   Column       Non-Null Count  Dtype 
---  ------       --------------  ----- 
 0   SYNONYM_ID   45582 non-null  int64 
 1   SUB_COM_ID   45582 non-null  int64 
 2   TRX_ID       45582 non-null  int64 
 3   TYPE         45582 non-null  object
 4   DESCRIPTION  45582 non-null  object
dtypes: int64(3), object(2)
memory usage: 1.7+ MB
None
----------
Opinion table
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2437 entries, 0 to 2436
Data columns (total 20 columns):
 #   Column              Non-Null Count  Dtype         
---  ------              --------------  -----         
 0   DOCUMENT_ID         2437 non-null   int64         
 1   OP_ID               2437 non-null   int64         
 2   TRX_ID              2437 non-null   int64         
 3   DOCTYPE_ID          2437 non-null   int64         
 4   DOCTYPE_CODE        2437 non-null   object        
 5   DOCTYPE             2437 non-null   object        
 6   AUTHOR              2436 non-null   object        
 7   TITLE               2437 non-null   object        
 8   ADOPTION_DATE       2437 non-null   int64         
 9   ADOPTIONDATE        2437 non-null   datetime64[ns]
 10  PUBLICATION_DATE    2437 non-null   int64         
 11  PUBLICATIONDATE     2437 non-null   datetime64[ns]
 12  PUBLICATIONYEAR     2437 non-null   int64         
 13  DOI                 2437 non-null   object        
 14  URL                 2437 non-null   object        
 15  REGULATION_ID       2422 non-null   float64       
 16  REGULATION_CODE     2422 non-null   object        
 17  REGULATION          2422 non-null   object        
 18  REGULATIONFULLTEXT  2422 non-null   object        
 19  OWNER               2437 non-null   object        
dtypes: datetime64[ns](2), float64(1), int64(7), object(10)
memory usage: 380.9+ KB
None
----------
Component table
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8006 entries, 0 to 8005
Data columns (total 31 columns):
 #   Column                   Non-Null Count  Dtype  
---  ------                   --------------  -----  
 0   SUBSTANCECOMPONENT_ID    8006 non-null   int64  
 1   SUB_COM_ID               8006 non-null   int64  
 2   SUB_ID                   8006 non-null   int64  
 3   COM_ID                   8006 non-null   int64  
 4   TRX_ID                   8006 non-null   int64  
 5   SUB_NAME                 8006 non-null   object 
 6   SUB_ECSUBINVENTENTRYREF  3111 non-null   object 
 7   SUB_CASNUMBER            4263 non-null   object 
 8   SUB_DESCRIPTION          4398 non-null   object 
 9   SUBPARAM_ID              8006 non-null   int64  
 10  SUBPARAM_CODE            8006 non-null   object 
 11  SUBPARAMNAME             8006 non-null   object 
 12  SUB_TYPE                 8006 non-null   object 
 13  QUALIFIER_ID             8006 non-null   int64  
 14  QUALIFIER_CODE           8006 non-null   object 
 15  QUALIFIER                8006 non-null   object 
 16  COMP_VALUE               340 non-null    float64
 17  COM_NAME                 8006 non-null   object 
 18  COM_ECSUBINVENTENTRYREF  4705 non-null   object 
 19  COM_CASNUMBER            6713 non-null   object 
 20  IUPACNAME                6563 non-null   object 
 21  COMPARAM_ID              8006 non-null   int64  
 22  COMPARAM_CODE            8006 non-null   object 
 23  COMPARAMNAME             8006 non-null   object 
 24  MOLECULARFORMULA         6670 non-null   object 
 25  SMILESNOTATION           6695 non-null   object 
 26  INCHI                    6743 non-null   object 
 27  COM_TYPE                 8006 non-null   object 
 28  COM_STRUCTURESHOWN       0 non-null      float64
 29  SMILESNOTATIONSOURCE     0 non-null      float64
 30  INCHI_NOTATIONSOURCE     0 non-null      float64
dtypes: float64(4), int64(8), object(19)
memory usage: 1.9+ MB
None
----------
Study table
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 54621 entries, 0 to 54620
Data columns (total 14 columns):
 #   Column           Non-Null Count  Dtype  
---  ------           --------------  -----  
 0   FACTSTUDY_ID     54621 non-null  int64  
 1   STUDY_ID         54621 non-null  int64  
 2   SUB_COM_ID       54621 non-null  int64  
 3   OP_ID            54621 non-null  int64  
 4   GENOTOX_ID       1452 non-null   float64
 5   TOX_ID           30192 non-null  float64
 6   HAZARD_ID        42475 non-null  float64
 7   TRX_ID           54621 non-null  int64  
 8   SUB_OP_CLASS     54621 non-null  object 
 9   IS_MUTAGENIC     54621 non-null  object 
 10  IS_GENOTOXIC     54621 non-null  object 
 11  IS_CARCINOGENIC  54621 non-null  object 
 12  REMARKS_STUDY    54590 non-null  object 
 13  TOXREF_ID        84 non-null     float64
dtypes: float64(4), int64(5), object(5)
memory usage: 5.8+ MB
None
----------
Chem_assess table
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 11357 entries, 0 to 11356
Data columns (total 24 columns):
 #   Column               Non-Null Count  Dtype  
---  ------               --------------  -----  
 0   CHEMASSESS_ID        11357 non-null  int64  
 1   HAZARD_ID            11357 non-null  int64  
 2   TRX_ID               11357 non-null  int64  
 3   ASSESSMENTTYPE_ID    11357 non-null  int64  
 4   ASSESSMENTTYPE_CODE  11357 non-null  object 
 5   ASSESSMENTTYPE       11357 non-null  object 
 6   RISKQUALIFIER_ID     10492 non-null  float64
 7   RISKQUALIFIER_CODE   10492 non-null  object 
 8   RISKQUALIFIER        10492 non-null  object 
 9   RISKVALUE            10492 non-null  float64
 10  RISKUNIT_ID          10492 non-null  float64
 11  RISKUNIT_CODE        10492 non-null  object 
 12  RISKUNIT             10486 non-null  object 
 13  RISKUNITFULLTEXT     10492 non-null  object 
 14  RISKVALUE_MILLI      10492 non-null  float64
 15  RISKUNIT_MILLI       10492 non-null  object 
 16  SAFETY_FACTOR        4440 non-null   float64
 17  ID_POPULATION        11328 non-null  object 
 18  POPULATIONTEXT       11328 non-null  object 
 19  REMARKS              9075 non-null   object 
 20  ASSESS               1305 non-null   object 
 21  COM_GROUP_ID         340 non-null    float64
 22  GROUP_UNIT           340 non-null    object 
 23  GROUP_REMARKS        16 non-null     object 
dtypes: float64(6), int64(4), object(14)
memory usage: 2.1+ MB
None
----------
Question table
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5296 entries, 0 to 5295
Data columns (total 4 columns):
 #   Column       Non-Null Count  Dtype 
---  ------       --------------  ----- 
 0   QUESTION_ID  5296 non-null   int64 
 1   OP_ID        5296 non-null   int64 
 2   TRX_ID       5296 non-null   int64 
 3   QUESTION     5296 non-null   object
dtypes: int64(3), object(1)
memory usage: 165.6+ KB
None
----------
Genotox table
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 246 entries, 0 to 245
Data columns (total 32 columns):
 #   Column                   Non-Null Count  Dtype  
---  ------                   --------------  -----  
 0   GENOTOXICITY_ID          246 non-null    int64  
 1   GENOTOX_ID               246 non-null    int64  
 2   TRX_ID                   246 non-null    int64  
 3   STUDY_CATEGORY           246 non-null    object 
 4   GUIDELINE_QUALIFIER      246 non-null    object 
 5   GENOTOXGUIDELINE_ID      31 non-null     float64
 6   GENOTOXGUIDELINE_CODE    31 non-null     object 
 7   GENOTOXGUIDELINE         246 non-null    object 
 8   GENOTOXGUIDELINEFULLTXT  246 non-null    object 
 9   DEVIATION                20 non-null     object 
 10  GLP_COMPL                32 non-null     object 
 11  SPECIES_CODE_ID          246 non-null    int64  
 12  SPECIES_CODE             246 non-null    object 
 13  SPECIES                  246 non-null    object 
 14  STRAIN_ID                104 non-null    float64
 15  STRAIN_CODE              104 non-null    object 
 16  STRAIN                   104 non-null    object 
 17  SEX                      42 non-null     object 
 18  MET_INDICATOR            75 non-null     object 
 19  ROUTE_ID                 61 non-null     float64
 20  ROUTE_CODE               61 non-null     object 
 21  ROUTE                    246 non-null    object 
 22  EXP_PERIOD               35 non-null     float64
 23  EXPPERIODUNIT_ID         35 non-null     float64
 24  EXPPERIODUNIT_CODE       35 non-null     object 
 25  EXPPERIODUNIT            35 non-null     object 
 26  EXPPERIODUNITFULLTXT     35 non-null     object 
 27  EXPPERIOD_DAY            35 non-null     float64
 28  NUMBER_INDIVIDUALS       13 non-null     float64
 29  CONTROL                  40 non-null     object 
 30  IS_GENOTOXIC             246 non-null    object 
 31  REMARKS                  231 non-null    object 
dtypes: float64(7), int64(4), object(21)
memory usage: 61.6+ KB
None
----------
Endpoint_study table
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 11698 entries, 0 to 11697
Data columns (total 60 columns):
 #   Column               Non-Null Count  Dtype  
---  ------               --------------  -----  
 0   ENDPOINTSTUDY_ID     11698 non-null  int64  
 1   TOX_ID               11698 non-null  int64  
 2   TRX_ID               11698 non-null  int64  
 3   STUDY_CATEGORY       11698 non-null  object 
 4   TESTSUBSTANCE        1931 non-null   object 
 5   TESTTYPE_ID          11698 non-null  int64  
 6   TESTTYPE_CODE        11698 non-null  object 
 7   TESTTYPE             11698 non-null  object 
 8   LIMITTEST            1174 non-null   object 
 9   GUIDELINE_QUALIFIER  11698 non-null  object 
 10  GUIDELINE_ID         1362 non-null   float64
 11  GUIDELINE_CODE       1362 non-null   object 
 12  GUIDELINE            11698 non-null  object 
 13  GUIDELINEFULLTXT     11698 non-null  object 
 14  DEVIATION            11698 non-null  object 
 15  GLP_COMPL            11698 non-null  object 
 16  SPECIES_ID           11646 non-null  float64
 17  SPECIES_CODE         11698 non-null  object 
 18  SPECIES              11698 non-null  object 
 19  STRAIN_ID            2 non-null      float64
 20  STRAIN_CODE          458 non-null    object 
 21  STRAIN               458 non-null    object 
 22  SEX                  1042 non-null   object 
 23  ROUTE_ID             4310 non-null   float64
 24  ROUTE_CODE           4310 non-null   object 
 25  ROUTE                11698 non-null  object 
 26  EXP_DURATION         6304 non-null   float64
 27  DURATIONUNIT_ID      6304 non-null   float64
 28  DURATIONUNIT_CODE    6304 non-null   object 
 29  DURATIONUNIT         6304 non-null   object 
 30  EXP_DURATION_DAYS    6304 non-null   float64
 31  NUMBER_INDIVIDUALS   647 non-null    float64
 32  CONTROL              731 non-null    object 
 33  ENDPOINT_ID          11698 non-null  int64  
 34  ENDPOINT_CODE        11698 non-null  object 
 35  ENDPOINT             11698 non-null  object 
 36  QUALIFIER_ID         11698 non-null  int64  
 37  QUALIFIER_CODE       11698 non-null  object 
 38  QUALIFIER            11698 non-null  object 
 39  VALUE                11698 non-null  float64
 40  DOSEUNIT_ID          11698 non-null  int64  
 41  DOSEUNIT_CODE        11698 non-null  object 
 42  DOSEUNIT             11691 non-null  object 
 43  DOSEUNITFULLTEXT     11698 non-null  object 
 44  VALUE_MILLI          11698 non-null  float64
 45  UNIT_MILLI           11698 non-null  object 
 46  BASIS_ID             11698 non-null  int64  
 47  BASIS_CODE           11698 non-null  object 
 48  BASIS                11698 non-null  object 
 49  TOXICITY_ID          5253 non-null   float64
 50  TOXICITY_CODE        5253 non-null   object 
 51  TOXICITY             5253 non-null   object 
 52  TARGETTISSUE_ID      674 non-null    float64
 53  TARGETTISSUE_CODE    674 non-null    object 
 54  TARGETTISSUE         657 non-null    object 
 55  EFFECT_DESC          3567 non-null   object 
 56  REMARKS              5363 non-null   object 
 57  GROUP_UNIT           236 non-null    object 
 58  COMGROUP_ID          236 non-null    float64
 59  GROUP_REMARKS        26 non-null     object 

Read the full file on GitHub · 496 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago First seen · 496 lines · 6,574 tokens per session scan A edd2292cee32

Subscribe to this mod's changes

mcp-openfoodtox AGENTS.md is an instructions file published in the GitHub repository spyrosze/mcp-openfoodtox (5 stars, last pushed 10mo ago), licensed MIT. It adds 6,574 tokens to every session, about $0.0329 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other instructions, from other repositories

next.js AGENTS.md

AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.

vercel/next.js · 7,296 tokens

codex AGENTS.md

AGENTS.md instructions for openai/codex, covering rust/codex-rs, the codex-core crate, code review rules, crate api surface and model visible context.

openai/codex · 5,153 tokens

vscode buildNext.instructions.md

Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).

microsoft/vscode · 6,785 tokens

spec-kit AGENTS.md

AGENTS.md instructions for github/spec-kit, covering agents.md, about spec kit and specify, quickstart — add a new integration in 5 steps, integration architecture and integrationmanifest — file tracking.

github/spec-kit · 7,104 tokens

vscode oss-third-party-notices.instructions.md

Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, applying the notice (cutover) and fallback chain (never fail the build).

microsoft/vscode · 5,001 tokens

langchain AGENTS.md

AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.

langchain-ai/langchain · 4,469 tokens