Skip to main content

langchain-graciousquotes

CI PyPI

LangChain tools that check who really said a quote. Each answer comes from Gracious Quotes' fact-checked records: a verdict, the reason for it, the source the quote was traced to, and a link to the record.

Many popular quotes are credited to the wrong person, or were never said at all. A language model answering from memory repeats the attribution it has seen most often, which for famous lines is frequently the wrong one. These tools give the agent the checked record instead.

No API key. No sign-up.

pip install langchain-graciousquotes

Tools

Tool Name the model sees What it returns
QuoteAttributionCheck check_quote_attribution The verdict for one quote: said by the credited person, uncertain, or wrongly credited, with the reason, the source and the record link.
QuoteSearch search_checked_quotes Checked quotes by wording, by author, or by verdict (verified, plausible, disputed, misattributed). The author filter matches who really said it.
QuoteCitation cite_quote An MLA 9, APA 7 or Chicago 17 citation for a checked quote, with the in-text form and a warning when the quote is usually credited to someone else.

Example

from langchain_graciousquotes import QuoteAttributionCheck

check = QuoteAttributionCheck()
print(check.invoke({"quote": "Do not follow where the path may lead. Go instead where there is no path and leave a trail."}))
Match: exact wording
Verdict: No: Ralph Waldo Emerson did not say it. It comes from Muriel Strode.
Status: Re-credited
Quote as checked: “Do not follow where the path may lead. Go instead where there is no path and leave a trail.”
Credit it as: Muriel Strode
Why: The line comes from Muriel Strode's 1903 poem "Wind-Wafted Wild Flowers", ...
Traced to: "Wind-Wafted Wild Flowers" (poem), The Open Court, August 1903; ...
Record: https://graciousquotes.com/quotes-with-sources/?id=588#q588
Source: Gracious Quotes (graciousquotes.com). Link the record above when you repeat this.

The exact wording of a result follows the live record, so it changes when a verdict is updated.

In an agent

from langchain.agents import create_agent
from langchain_graciousquotes import QuoteAttributionCheck, QuoteCitation, QuoteSearch

agent = create_agent(
    "anthropic:claude-sonnet-5-5",
    tools=[QuoteAttributionCheck(), QuoteSearch(), QuoteCitation()],
)
agent.invoke({"messages": [{"role": "user", "content": "Did Einstein say the definition of insanity is doing the same thing over and over?"}]})

Async works too: every tool supports ainvoke.

What the verdicts mean

Status Meaning
Verified Found in these words in the original book, speech, letter or interview, or in a reliable source that cites it, with the work named.
Plausible Consistently credited to this person in reliable references, but the original wording has not been located yet.
Disputed Sources disagree, the line appears only in quote collections or social posts, or it first appears in print long after the person lived.
Re-credited Someone else said or wrote it first. The record names who, or says the real author is unknown.
Traditional saying A proverb or common saying with no known author.

The full method is on How we source quotes. Corrections are logged in public on the corrections page.

No record is not a verdict. When a quote has not been checked, the tool says so and tells the model not to present an author from memory as confirmed.

Terms of use

  • AI tools may fetch these records because a user asked, on condition that they credit Gracious Quotes and link to the record (terms). Every tool result ends with that credit line and link, and the tool descriptions tell the model to repeat them.
  • Copying the records in bulk, building datasets from them, or using them to train models needs a licence: email jeremiah@graciousquotes.com with "Data access" in the subject.
  • The API is rate limited to 40 requests per 10 seconds per IP. A tool that hits the limit says so in its result rather than raising.
  • Quote text belongs to its authors. The records are Gracious Quotes' research about the quotes.

Configuration

Nothing is required. GRACIOUSQUOTES_BASE_URL (or base_url= on any tool) points the tools at another host, for testing. Requests identify themselves with the user agent langchain-graciousquotes/<version>.

Development

pip install -e ".[test]"
pytest -q

The suite includes LangChain's own conformance tests (langchain-tests, unit and integration, sync and async) and runs against the live API with no key, the same way a new user would.

Who maintains this

Jeremiah Say, founder and editor of Gracious Quotes. Issues and corrections are welcome here or through the contact page.

MIT licensed (the code). The records the tools return are covered by the terms above.

Metadata

Release files for langchain-graciousquotes 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for langchain-graciousquotes 0.1.0
File Size Uploaded
langchain_graciousquotes-0.1.0.tar.gz 12.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for langchain-graciousquotes 0.1.0
File Interpreter ABI Platform
langchain_graciousquotes-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.8 kB

Release files / langchain_graciousquotes-0.1.0.tar.gz

Download URL langchain_graciousquotes-0.1.0.tar.gz
Size 12.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6afb705528696a1d1776a8cfcd5e103cd825c7cd2870e21cd8ceba45b7a5e8bc
BLAKE2b-256 checksum
How to use checksums
454f5f7fbeceda32846ae877cfa8825413d1aa3bf6265dd036a421694dd6932e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / langchain_graciousquotes-0.1.0-py3-none-any.whl

Download URL langchain_graciousquotes-0.1.0-py3-none-any.whl
Size 10.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
93a7e572671a7c6e98bc36740d3b8120b77468a61a97f1ab9edb06583a91ee2a
BLAKE2b-256 checksum
How to use checksums
829501f9f7d78f609cc27c58f80e8013b68319bb101cbe8262574e858aab6920
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page