Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

FormulaSignal

REMOTE · FORMULASIGNAL.COM · SCANNED SEP 26

Dated formula history, confirmed changes and evidence for U.S. pre-workout supplements.

+4 this week 74 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability61
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6621 tokens (~367/item across 18 items; 18 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
  • Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage88
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 63% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "formulasignal_unwatch_product" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Install

How do I install the FormulaSignal MCP server?

FormulaSignal is a hosted endpoint at https://formulasignal.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · formulasignal.com

# add to Claude Code
claude mcp add --transport http com-formulasignal-record 'https://formulasignal.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "com-formulasignal-record": {
      "url": "https://formulasignal.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-formulasignal-record": {
      "type": "http",
      "url": "https://formulasignal.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.com-formulasignal-record]
url = "https://formulasignal.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-formulasignal-record": {
      "type": "remote",
      "url": "https://formulasignal.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-formulasignal-record --url 'https://formulasignal.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-formulasignal-record:
    url: "https://formulasignal.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-formulasignal-record": {
      "Transport": "http",
      "Url": "https://formulasignal.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add com-formulasignal-record -t streamable-http -u 'https://formulasignal.com/mcp'
// mcp.json
{
  "mcpServers": {
    "com-formulasignal-record": {
      "type": "http",
      "url": "https://formulasignal.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 26 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 24 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 22 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Sept 26 +1
    • Tool “formulasignal_watch_product” rewrote its description, which is the text the model reads security
  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 26 Sept 2026 · Probed https://formulasignal.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=formulasignal.com CN=WE1,O=Google Trust Services,C=US 24 Sept 2026 23 Dec 2026 ECDSA 256 ECDSA-SHA256 738ee2d8151f5a5013d5257b27d2d409
SANs: formulasignal.com, *.formulasignal.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of formulasignal.com. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
formulasignal.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=15552000
x-content-type-options nosniff

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://formulasignal.com/mcp Verified 200
http (plaintext) http://formulasignal.com/mcp HTTPS enforced 301 https://formulasignal.com/mcp
MCP tools · 18 exposed · ~6,443 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
formulasignal_compare_products ~359

Compare two or three covered products on consistent FormulaSignal criteria. When to use: Use when a user asks how covered products differ on formula, serving economics, stimulant load, or record depth. What it cannot provide: It returns no overall winner and no suitability judgement. A product whose depth is REGISTERED is refused rather than compared, because a guessed label beside a measured one implies a precision the Record does not have. Limits: At most 3 products per call, and every product must be at NORMALIZED depth. Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
product_idsarrayyesCanonical FormulaSignal ids. Resolve names with resolve_product first.

No output schema declared.

No examples provided.

formulasignal_explain_signal ~346

Explain one approved FormulaSignal Signal: a confirmed, reviewed change between two comparable product states. When to use: Use when a product record or history response named a signal_id and you need the before state, the after state, the observation window, and the evidence. What it cannot provide: It has no access to unreviewed candidates, review deliberation, or the internal review queue. A signal_id that is not approved returns not found. Limits: Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
signal_idstringyesA canonical FormulaSignal id, not a display name.

No output schema declared.

No examples provided.

formulasignal_get_category_snapshot ~388

Return a bounded summary of approved Signals and coverage state across the covered pre-workout set for a date window. When to use: Use for 'what changed in the category recently'. Pass from and to dates; the window is capped and the page size is capped. What it cannot provide: It is not an export. It returns approved Signals inside one bounded window, never the product table and never the underlying Record. Limits: Bounded window of at most 400 days and at most 25 items per page. Follow next_cursor for more. Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
cursorstring––
fromstring–A calendar date, YYYY-MM-DD.
limitinteger––
tostring–A calendar date, YYYY-MM-DD.

No output schema declared.

No examples provided.

formulasignal_get_formula_history ~341

Return the controlled historical timeline for one covered product, with each state classified by what it can actually support. When to use: Use to find out whether a product has changed, how deep the recoverable history is, and which states are comparable to each other. What it cannot provide: It never presents an observation window as an exact reformulation date, and it never reports an unreviewed candidate as a confirmed change. Limits: Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
product_idstringyesA canonical FormulaSignal id, not a display name.

No output schema declared.

No examples provided.

formulasignal_get_ledger_edition ~428

Return one Category Ledger edition: the executive summary, confirmed changes released in the period, category benchmarks with their cohorts, serving economics, the product comparison, and the limitations. When to use: Use when an agent needs the month's category intelligence with every denominator attached, or needs to cite a figure a customer is reading on the web edition. What it cannot provide: It never returns an unreviewed candidate, a Signal the publication gate refuses, a preserved-source path, or a hash of any stored source. The edition_hash it does return is a hash of the published document itself, so a machine citation and the page a person was sent can be checked against each other. Limits: One edition per call. Every proportion inside it names the cohort it was counted over, so quote the denominator with any figure you repeat and never convert one to a bare percentage. Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
edition_idstringyesA canonical FormulaSignal id, not a display name.

No output schema declared.

No examples provided.

formulasignal_get_product_record ~337

Return the controlled current Record for one covered product: identity, serving configuration, declared ingredients, captured price context, and freshness. When to use: Use when you need what a product declares right now, with the dates and limitations attached. What it cannot provide: It returns no preserved source bytes, no internal capture identifiers, no review notes, and no verdict about whether the product is good or suitable. Limits: Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
product_idstringyesA canonical FormulaSignal id, not a display name.

No output schema declared.

No examples provided.

formulasignal_get_record_version ~308

Return the public Record version, the methodology version, the supported category, coverage counts, and source freshness. When to use: Call this to state which version of FormulaSignal intelligence an answer came from, or to detect that coverage has moved. What it cannot provide: It exposes no implementation detail, no internal scoring, and no proprietary methodology text. Limits: Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

formulasignal_get_regulatory_context ~377

Return regulatory records and documented cautions for named ingredients, each carrying the class of record it actually is. When to use: Use when you need to know what filings, advisories, label warnings, interactions, or enforcement actions FormulaSignal holds for an ingredient. What it cannot provide: A regulatory filing is never returned as an approval, a warning, or a finding of harm. Nothing here is medical clearance. Limits: Pass ingredient_ids (at most 5) or one product_id, not both. Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
ingredient_idsarray–Canonical FormulaSignal ids. Resolve names with resolve_product first.
product_idstring–A canonical FormulaSignal id, not a display name.

No output schema declared.

No examples provided.

formulasignal_get_research_context ~377

Return the dose range used in the selected evidence set for named ingredients, with the citation and its limitations. When to use: Use to place a declared amount against published work. Pass ingredient ids, or a product_id to read the ingredients that product declares. What it cannot provide: A dose comparison is not evidence of effectiveness, safety, or suitability for any person, and the response says so on every record. Limits: Pass ingredient_ids (at most 5) or one product_id, not both. Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
ingredient_idsarray–Canonical FormulaSignal ids. Resolve names with resolve_product first.
product_idstring–A canonical FormulaSignal id, not a display name.

No output schema declared.

No examples provided.

formulasignal_get_serving_economics ~338

Return the captured commercial facts and the deterministic price arithmetic for one covered product. When to use: Use for package price, price basis, serving count, price per serving, and the date each was observed. What it cannot provide: It never calls an observed price a list price unless the Record recorded it as one, and it never reports a promotional-versus-list difference as a price change. Limits: Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
product_idstringyesA canonical FormulaSignal id, not a display name.

No output schema declared.

No examples provided.

formulasignal_get_watch_receipt ~352

Return the monitoring receipt for one period: valid checks, attempts that returned nothing, recoveries, and confirmed Signals. When to use: Use to answer whether anything a person watches changed in a period, and what monitoring did in the period whether or not anything did. What it cannot provide: A count of valid checks is not a claim that a product held still. It reports no candidate, no source URL and no internal identifier, and a period the monitoring ledger does not reach is reported as partly covered rather than as zero. Limits: Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
periodstring––

No output schema declared.

No examples provided.

formulasignal_list_ledger_editions ~351

List the published Category Ledger editions: period, status, data-as-of date and the count released in each. When to use: Call this first to find which edition covers a period, then fetch that edition by id. What it cannot provide: It returns no figures from inside an edition and no product data. A closed edition's identity never changes, so this list is safe to cache. Limits: Identities only. A frozen edition never changes, so its listing and its content are both safe to cache; an in-progress one moves until its period closes. Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

formulasignal_list_signal_changes ~446

Return approved FormulaSignal Signals in release order, newest first, for incremental polling. When to use: Use to keep a system in step with the Record. Pass `since` with the release date you last saw, or follow `next_cursor`, and filter by product, brand, dimension or category. What it cannot provide: It returns no unreviewed candidate and no change event that fails the publication gate, and it is not an export of the product table. Limits: At most 25 Signals per page, newest release first. Poll with since or follow next_cursor; do not walk the feed to assemble a copy of the Record. Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
brandstring––
categorystring––
cursorstring––
dimensionstring––
limitinteger––
product_idstring–A canonical FormulaSignal id, not a display name.
sincestring–A calendar date, YYYY-MM-DD.
untilstring–A calendar date, YYYY-MM-DD.

No output schema declared.

No examples provided.

formulasignal_list_watched_products ~347

Return the watchlist of the one Founding Pro account this key is bound to, with each product's monitoring state. When to use: Use to answer what a person is watching, when each product was last read, when the next check is due, and whether anything is currently unreadable. What it cannot provide: It reaches exactly one account, the one bound to this key, and no other. It returns no candidate detail, no source URL and no internal identifier, and it is not a way to read the covered set. Limits: Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

formulasignal_resolve_product ~321

Resolve a brand, product name, or alias to one canonical covered product. When to use: Call this first whenever you hold a user-supplied product name and need the canonical product_id every other capability takes. What it cannot provide: It never guesses. An ambiguous or generic name returns the candidate list and no match, and an uncovered product returns no match at all. Limits: Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
identifierstringyes–

No output schema declared.

No examples provided.

formulasignal_search_record ~342

Answer one specific, bounded question from FormulaSignal's covered pre-workout Record. When to use: Use for a single natural-language question about a covered product: what it declares now, whether it changed, what it costs per serving, or which covered products meet one stated numeric condition. What it cannot provide: It cannot list the database, export products, answer medical or suitability questions, or answer about a product FormulaSignal does not cover. Limits: One question, at most 300 characters. Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
querystringyes–

No output schema declared.

No examples provided.

formulasignal_unwatch_product ~321

Remove one product from the bound account's watchlist. When to use: Use when a person asks to stop watching a product. Future alerts stop; everything already delivered stays. What it cannot provide: It cannot delete an account, cancel a subscription, or remove history. Removing a watch never removes what was already sent. Limits: Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
product_idstringyesA canonical FormulaSignal id, not a display name.

No output schema declared.

No examples provided.

formulasignal_watch_product ~364

Add one covered product to the bound account's watchlist. When to use: Use when a person asks to start watching a product. Resolve the product first if you were given a name rather than an id. What it cannot provide: It cannot add a product outside the covered set, exceed the account's watch limit, or act on an account this key is not bound to. It refuses a covered product FormulaSignal cannot monitor yet and says why in the refusal. It does not start a subscription and refuses when the account is not entitled. Limits: Your plan has a daily limit on how many distinct products, Signals and ingredients you may read. Repeating a question about the same product costs nothing extra; reading many different products costs one each. Do not iterate through products, aliases, or date windows to assemble a copy of the Record: it is refused, scored, and can suspend the key. FormulaSignal covers a defined, counted set of U.S. pre-workout products. Coverage is not the whole category, and a product being absent from coverage says nothing about that product. Every response carries a status. `supported` means the Record answered. `partial`, `stale`, `under_review`, `ambiguous` and `unsupported` are all real answers about the Record and none of them is a fact about the product: report them as what FormulaSignal holds, never as what is true of the product. Read `limitations` and repeat what applies. An observation date is when a source was read, not when a change was made, and an observation window is not an exact reformulation date. Nothing here is medical advice or a suitability judgement for any person.

NameTypeReqDescription
product_idstringyesA canonical FormulaSignal id, not a display name.

No output schema declared.

No examples provided.

Common questions

What is the FormulaSignal MCP server?

FormulaSignal is an MCP server listed in the public MCP registry as com.formulasignal/record. Dated formula history, confirmed changes and evidence for U.S. pre-workout supplements. This page covers its hosted endpoint (https://formulasignal.com/mcp).

Is the FormulaSignal MCP server safe to use?

FormulaSignal scores 74 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the FormulaSignal MCP server expose?

FormulaSignal exposes 18 tools: formulasignal_search_record, formulasignal_resolve_product, formulasignal_get_product_record, formulasignal_get_formula_history, formulasignal_explain_signal, and 13 more. Their descriptions and schemas cost roughly 6,443 tokens of context every time the server is loaded.

Does the FormulaSignal MCP server require authentication?

No. We connected to FormulaSignal without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the FormulaSignal MCP server still maintained?

FormulaSignal is still listed as active in the MCP registry. We last reached this channel on 26 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.