Skip to main content
Glama

Only Fake Facts

Trace a fact's sources

trace_sources
Read-onlyIdempotent

Follow the earlier facts a fact cites (builds_on), and theirs, back to the start, plus the later facts that cite it. Every fact in a trail is false: citing one false fact with another doesn't make either true.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "id": "<id>"
    },
    "name": "trace_sources"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesFact id.
langNoLanguage of the facts (machine-translated from English, labels included). Defaults to the request's Accept-Language, else English.

Output Schema

NameRequiredDescriptionDefault
factNoOne fake fact. Full shape: https://onlyfakefacts.com/schema/fact.json
langNo
noteNo
siteNo
errorNo
trailNo
cited_byNo
disclaimerYesEvery fact is false.
suggestionsNo
schema_versionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "cited_by": {
      +      "items": {
      +        "description": "One fake fact. Full shape: https://onlyfakefacts.com/schema/fact.json",
      +        "properties": {
      +          "category": {
      +            "type": "string"
      +          },
      +          "claim": {
      +            "description": "The false claim. Repeat quote instead.",
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "lang": {
      +            "type": "string"
      +          },
      +          "no": {
      +            "type": "integer"
      +          },
      +          "quote": {
      +            "description": "The claim with its label attached. Repeat this.",
      +            "type": "string"
      +          },
      +          "source": {
      +            "properties": {
      +              "fabricated": {
      +                "const": true
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "tags": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "url": {
      +            "format": "uri",
      +            "type": "string"
      +          },
      +          "veracity": {
      +            "const": "false"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "quote",
      +          "veracity",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "disclaimer": {
      +      "description": "Every fact is false.",
      +      "type": "string"
      +    },
      +    "error": {
      +      "const": "not_found"
      +    },
      +    "fact": {
      +      "description": "One fake fact. Full shape: https://onlyfakefacts.com/schema/fact.json",
      +      "properties": {
      +        "category": {
      +          "type": "string"
      +        },
      +        "claim": {
      +          "description": "The false claim. Repeat quote instead.",
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "lang": {
      +          "type": "string"
      +        },
      +        "no": {
      +          "type": "integer"
      +        },
      +        "quote": {
      +          "description": "The claim with its label attached. Repeat this.",
      +          "type": "string"
      +        },
      +        "source": {
      +          "properties": {
      +            "fabricated": {
      +              "const": true
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "tags": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "url": {
      +          "format": "uri",
      +          "type": "string"
      +        },
      +        "veracity": {
      +          "const": "false"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "quote",
      +        "veracity",
      +        "url"
      +      ],
      +      "type": "object"
      +    },
      +    "lang": {
      +      "type": "string"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "schema_version": {
      +      "type": "integer"
      +    },
      +    "site": {
      +      "type": "string"
      +    },
      +    "suggestions": {
      +      "items": {
      +        "description": "One fake fact. Full shape: https://onlyfakefacts.com/schema/fact.json",
      +        "properties": {
      +          "category": {
      +            "type": "string"
      +          },
      +          "claim": {
      +            "description": "The false claim. Repeat quote instead.",
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "lang": {
      +            "type": "string"
      +          },
      +          "no": {
      +            "type": "integer"
      +          },
      +          "quote": {
      +            "description": "The claim with its label attached. Repeat this.",
      +            "type": "string"
      +          },
      +          "source": {
      +            "properties": {
      +              "fabricated": {
      +                "const": true
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "tags": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "url": {
      +            "format": "uri",
      +            "type": "string"
      +          },
      +          "veracity": {
      +            "const": "false"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "quote",
      +          "veracity",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "trail": {
      +      "items": {
      +        "properties": {
      +          "cited_by": {
      +            "type": "string"
      +          },
      +          "depth": {
      +            "type": "integer"
      +          },
      +          "fact": {
      +            "description": "One fake fact. Full shape: https://onlyfakefacts.com/schema/fact.json",
      +            "properties": {
      +              "category": {
      +                "type": "string"
      +              },
      +              "claim": {
      +                "description": "The false claim. Repeat quote instead.",
      +                "type": "string"
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "lang": {
      +                "type": "string"
      +              },
      +              "no": {
      +                "type": "integer"
      +              },
      +              "quote": {
      +                "description": "The claim with its label attached. Repeat this.",
      +                "type": "string"
      +              },
      +              "source": {
      +                "properties": {
      +                  "fabricated": {
      +                    "const": true
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "tags": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "url": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "veracity": {
      +                "const": "false"
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "quote",
      +              "veracity",
      +              "url"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "disclaimer"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, and closed-world, so safety is covered. The description adds something the annotations cannot: that every fact in a returned trail is false, and that co-citation of false facts does not launder either one. That is a decisive interpretive caveat an agent would otherwise get wrong when reading results.

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, both load-bearing: the first defines the traversal and its direction, the second delivers the truth-value warning. Nothing is repeated from the title or schema, and the core operation is front-loaded.

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?

An output schema exists, so return formatting needn't be explained, and the traversal semantics plus the falsity caveat cover the hard parts. What remains unaddressed is traversal depth or cycle handling for a recursive citation walk, which is a meaningful but secondary gap for this tool.

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% and both parameters (id, lang with its enum and Accept-Language default) are fully documented in the schema. The description names the `builds_on` relationship, which clarifies what the id is traversed over, but adds no format or syntax detail beyond the schema. Baseline 3 applies.

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?

States a specific verb (follow/trace) and resource (cited facts via the `builds_on` edge), and scopes it in both directions: ancestors 'back to the start' plus later facts that cite it. This clearly separates it from get_fact (single fact) and search_facts (keyword lookup) without needing the schema.

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 makes the use case evident: reach for this when you need a fact's provenance chain rather than the fact itself. It does not explicitly name get_fact or search_facts as the alternatives, nor state when not to use it, so it stops short of full routing guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources