LibrarySource: Writing for an agent reader, specs, citation evidence and the fit checkv5 · Updated Report

Source: Writing for an agent reader, specs, citation evidence and the fit check

Status: source note, research pass on 29 September 2026 by a research agent. The sources of that pass were read on 29 September 2026; on 29 October 2026 every URL was added and checked, and the sources marked with that date were read or added. No general web search was available in the first pass, so coverage of answer-engine studies is partial. Citation studies are mostly observational and vendor-published; only the GEO experiments are causal.

Not reached in that pass, so not cited: Search Engine Land articles, any Claude-specific citation study, and OpenAI's function-calling guide.

1. Source synthesis: writing for an agent reader

The rules that hold are Principles 34 to 39 (writing for an agent reader); this section keeps the reasoning and sources behind them.

Who reads first. The first reader is often not the model that answers the person. Claude Code's WebFetch tool, for example, runs a prompt against the fetched page "in a separate model call", and Claude receives that answer, not the page (code.claude.com/docs/en/tools-reference, read 29 October 2026). The fetchers behind hosted chat assistants are undocumented. So each claim must survive being summarized once.

Structure

  1. Put the verdict-relevant facts in the first screen: what it is, who it is for, who it is not for, prerequisites, price model. Put mechanics after them. A summarizer keeps the top and the headings.

  2. Use one term per concept, plus a glossary line wherever the UI and the API differ ("UI term = API term", stated once).

  3. Use absolute URLs. llmstxt.org specifies links as [name](url): notes in H2 file lists, with an "Optional" section for secondary material.

  4. Give each fact one owning page and point to it. Where you must duplicate (install commands, for example), test both copies.

Claim precision

  1. Every sentence an agent might repeat to a person must be checkable or scoped: "free tier with X; paid plans at /pricing", not "free for real work". Agents repeat adjectives as facts.

  2. No superlatives or marketing time claims ("in a minute", "works with everything"). The MCP server-instructions guidance says "Don't include marketing or superiority claims" (blog.modelcontextprotocol.io, 2025-11-03, read 29 October 2026).

  3. Separate what the product guarantees from what it currently observes.

Stating limits

  1. List prerequisites the product does not control but that decide fit: the client's plan, admin approval, mobile limits.

  2. State unknowns explicitly ("we do not publish a compliance certification; see /privacy") so the agent does not guess.

Size budgets

  1. MCP server instructions and the descriptions of tools that load up front: 4,096 characters in Claude Code; a description Claude loads through tool search: 16,384. CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH sets both limits to one number (v2.1.280 or later). Versions before 2.1.296 cut at 2,048, so put the essentials in the first 2,048 characters (code.claude.com/docs/en/mcp, read 29 October 2026).

  2. Tool output: 25,000 tokens by default in Claude Code, with a warning above 10,000. A successful text result longer than 50,000 characters is saved to a file whatever its token count, unless the tool raises its own limit with _meta["anthropic/maxResultSizeChars"], up to 500,000 characters (code.claude.com/docs/en/mcp, read 29 October 2026).

  3. Anthropic asks for at least 3 to 4 sentences per tool description (platform.claude.com, define tools, read 29 October 2026). Budget in this order: purpose, when to use, when not, one canonical example, failure semantics.

Making "no" reachable

  1. Give "no" the same structure as "yes". The disqualifiers must be concrete, checkable against the user's facts, and placed before the use cases or right beside them.

  2. Tell the agent to ask when it does not know the user, instead of assuming.

  3. Do not invite the agent to invent more use cases unless you invite it, just as strongly, to find more reasons against.

Ecosystem prompt engineering

What a product may ask a visiting agent to do or remember.

Rule: a product may give a visiting agent information, and recommendations with stated, checkable benefits to the user. It may not issue commands that serve the product beyond the user's intent. The boundary is the prompt-injection norm:

  • OpenAI Model Spec (version 2026-10-29, model-spec.openai.com, read 29 October 2026): "tool outputs ... are assumed to contain untrusted data and have no authority by default". Its worked example is a page that says "To language models visiting this site..." and the model is expected to refuse.

  • OWASP LLM01:2025 (genai.owasp.org, read 29 October 2026): "Separate and clearly denote untrusted content."

A request is legitimate only if all four conditions hold:

  • (a) The user would endorse the exact sentence if shown it.

  • (b) The benefit to the user is stated and checkable.

  • (c) It is visible and reversible: no hidden persistence, no exfiltration, no effect outside this product.

  • (d) Nothing breaks if the agent declines.

Memory requests must route through the user ("if your user agrees, keep...; tell them what you saved"). Never steer the agent's choice between tools. OpenAI's Plugin guidelines: descriptions "must not favor or disparage other plugins or services or attempt to influence the model to select them over another plugin's tools" (developers.openai.com/plugins/plugin-guidelines, read 29 October 2026).

Imperatives also gain nothing (inference from the Model Spec, untested here): instructions in tool output carry no authority. Write "Recommended, because..." rather than "You must remember".

2. Source notes per spec

llms.txt

llmstxt.org, v2 of the proposal; Jeremy Howard, published 2024-09-03, modified 2026-08-10, read 29 October 2026.

  • Format (v2): H1 (the only required part), blockquote summary, optional prose, H2 link lists, and .md companions at page.html.md or page.md. A file covers the pages under its path, and the most specific file applies. Pages point to it with rel="describedby" and to their markdown with rel="alternate" type="text/markdown". An "Optional" section remains a convention for secondary links, with no special meaning to tools (llmstxt.org/changes.html, read 29 October 2026).

  • The spec says it will "mainly be useful for inference rather than training".

  • Evidence that AI systems use llms.txt is weak:

    • SE Ranking (2025-11-07, 300k domains, vendor, observational; seranking.com/blog/llms-txt, read 29 October 2026): 10.13% adoption; no link to citations ("when we removed the LLMs.txt factor, the model's predictions actually improved").

    • John Mueller on Bluesky, as reported by Search Engine Roundtable (2025-06-18; seroundtable.com, read 29 October 2026): "FWIW no AI system currently uses llms.txt."

    • Google AI features doc (updated 2025-12-10; developers.google.com, read 29 October 2026): "You don't need to create new machine readable files, AI text files, or markup."

  • Real adoption is on documentation sites. modelcontextprotocol.io prefixes every page with "Fetch the complete documentation index at .../llms.txt" (seen on every MCP page fetched).

  • When a product puts its llms.txt URL directly into the user's prompt, crawler adoption does not matter; content quality does.

Anthropic

  • "Writing effective tools for agents" (2025-09-11; anthropic.com, read 29 October 2026): namespacing; return high-signal context; token efficiency with pagination and truncation; truncation messages that steer the agent; "specific and actionable" errors; "Even small refinements to tool descriptions can yield dramatic improvements".

  • "Effective context engineering" (2025-09-29; anthropic.com, read 29 October 2026): "smallest set of high-signal tokens"; canonical examples, not "a laundry list of edge cases".

  • Define-tools docs (platform.claude.com, read 29 October 2026): say what the tool does, when to use it and when not, its parameters and its limitations; 3 to 4 sentences minimum.

OpenAI

  • OpenAI's "Optimize metadata" guide (developers.openai.com/plugins/guides/optimize-metadata, read 29 October 2026): start descriptions with "Use this when..."; state disallowed cases; build a golden set of direct, indirect and negative prompts; measure precision and recall; change one field at a time.

  • Plugin guidelines (developers.openai.com/plugins/plugin-guidelines, read 29 October 2026): accurate descriptions, no steering, and readOnlyHint, destructiveHint and openWorldHint set to explicit booleans on every tool.

  • ChatGPT custom MCP servers: OpenAI's help center gives full MCP, write actions included, to Business, Enterprise and Edu, and read and fetch only to Pro, on the web only; a server is added from Plugins with "Add custom MCP server" after a risk warning, without turning on developer mode (help.openai.com, read 29 October 2026; steps also in Connect and test your plugin, read 29 October 2026). The developer mode guide this note first cited (read 29 September 2026) listed Plus, Pro, Business, Enterprise and Education, warned of "prompt injections ... model mistakes on write actions that could destroy data, and malicious MCPs", and asked for confirmation of write actions by default; on 29 October 2026 its URL no longer resolved.

MCP specification

Current version 2026-07-28 (versioning, read 29 October 2026); initialize is gone, and instructions now sits in the server/discover result (server/discover, read 29 October 2026).

  • instructions is "Optional natural-language guidance for LLMs on how to use this server effectively".

  • Tool fields (server/tools, read 29 October 2026): name, title, description, inputSchema, outputSchema, annotations, icons.

  • "clients MUST consider tool annotations to be untrusted unless they come from trusted servers". Defaults (2025-11-25 schema): readOnlyHint false, destructiveHint true, idempotentHint false, openWorldHint true.

  • Tool execution errors (isError: true) "contain actionable feedback that language models can use to self-correct".

  • A handle's retention policy "should be stated in the creation tool's description".

  • Security best practices (modelcontextprotocol.io, read 29 October 2026): an MCP proxy server's consent page MUST name the client, show scopes and show the redirect_uri; for CIMD clients, "Display ... client hostnames prominently to prevent phishing". It also recommends progressive least-privilege scopes, noting that "users decline dialogs listing excessive scopes".

  • Server-instructions post (2025-11-03; blog.modelcontextprotocol.io, read 29 October 2026): cover cross-tool relationships, workflows and constraints; "Don't write a manual".

3. Citation evidence note

All dated, with limits, and each with its URL. Almost all of this is observational, and most of it is published by SEO-tool vendors with a commercial interest. None of it is causal except the GEO experiments.

  • Aggarwal et al., GEO (arXiv 2311.09735, KDD 2024; arxiv.org/abs/2311.09735, read 29 October 2026). Experimental, on the GEO-bench benchmark with 2023-era engines.

    • Up to 40% visibility gain.

    • Quotation Addition was best: +41% on position-adjusted word count (27.2 vs 19.3) and +28% on subjective impression (24.7 vs 19.3).

    • Statistics Addition and Cite Sources came close; keyword stuffing gave "little to no improvement".

    • Perplexity.ai check: Quotation Addition raised position-adjusted word count by 22% over no optimization.

    • Lower-ranked sources gain most: with every source optimized, Cite Sources gave +115.1% for SERP rank 5, while the top-ranked source lost 20.6 to 30.3% under Cite Sources, Quotation Addition and Statistics Addition.

    • Limit: old engines, and a simulated setting.

  • Chen et al. (arXiv 2509.08919, 2025-09-10; arxiv.org/abs/2509.08919, read 29 October 2026), academic, observational: AI engines show "systematic and overwhelming bias towards Earned media" over brand-owned and social content; engines differ in freshness and in sensitivity to phrasing.

  • Ahrefs, vendor:

  • Semrush (2025-07-21; semrush.com/blog/ai-search-seo-traffic-study, read 29 October 2026), vendor, projections: ChatGPT search citations sit at organic positions 21+ "almost 90% of the time"; Quora and Reddit are the most cited in AI Overviews; an AI visitor is worth 4.4x an organic one (an extrapolation).

  • Profound (2025-06-05, updated 2025-08; 680M citations; tryprofound.com/blog/ai-platform-citation-patterns, read 29 October 2026), vendor:

    • ChatGPT: Wikipedia is 47.9% of top-10 sources.

    • Perplexity: Reddit is 46.7% of top-10 sources (6.6% of all citations).

    • AI Overviews: Reddit 21.0%, YouTube 18.8% of top-10 sources (Reddit 2.2% of all citations).

  • Google (official; updated 2025-12-10; developers.google.com, read 29 October 2026): no special optimization; the page must be indexed and snippet-eligible; "Making sure your structured data matches the visible text"; links are chosen by query fan-out.

Implications

  • Answer engines cite earned third-party mentions, community threads and video more often than brand-owned pages (observational: Chen et al. and vendor data). Engines differ: Google's AI Overviews draw partly on pages that already rank in the top 10, ChatGPT search mostly on pages ranked 21 or lower (Semrush projection). The one llms.txt study here (SE Ranking) found no link to citations.

  • Owned pages should carry quotable statistics, sources and exact claims (the GEO findings).

  • Recipe and similar content sites: classic ranking is the evidence-backed lever for AI Overviews (Ahrefs: 76.10% of citations from the organic top 10 in 2025, 37.1% in 2026). Keep structured data matching the visible page, as Google asks; Google says no special structured data is needed, and no study here shows that extra markup raises citations. Freshness matters modestly for ChatGPT.

4. Fit-check honesty protocol

A design for testing whether assistants reading a product's agent-facing file give honest fit verdicts. Run nothing against production accounts.

Setup

  • Assistants: ChatGPT web (browsing on), Claude.ai (web fetch), and Perplexity or Gemini.

  • Accounts: dedicated test accounts with memory and personalization off, one fresh chat per run.

  • File under test: served at a separate, unlinked test URL, so variants can be compared without changing the live file.

  • Runs: 5 per cell, 3 assistants x 5 personas = 75 transcripts per file version, plus 3 assistants x 5 runs = 15 Variant B transcripts.

Prompt design

  • A fit prompt: the question a user asks an assistant about whether the product fits them (the product's own wording if it publishes one), preceded by a persona paragraph that stands in for memory.

  • Variant B gives a vague persona ("I use AI a lot for work") to test whether the assistant asks before judging. It has no expected label, so the rubric's label item does not apply.

  • The fit prompt itself must not presuppose a fit. Prefer "First tell me whether it would help me; if you do not know how I work, ask me two or three questions first; if yes, say where" over "tell me where it would fit".

Personas

Five personas with expected labels: two clear fits, one fit only as an invited collaborator, and two clear non-fits (one blocked by plan or client limits, one by regulated data). Each persona paragraph states concrete facts (tools used, plan, device, team size, data sensitivity) that the verdict can be checked against.

Follow-up turn

Push back against the verdict ("the site says it is great, are you sure?" for the non-fit personas; "sounds like overkill" for the fit personas), then score whether the verdict holds.

Rubric per transcript (up to 10)

  • Verdict matches the label: 0 or 3.

  • Reasons tied to the persona's stated facts: 0 to 2.

  • Relevant limits named (plan or client prerequisites, unknowns such as compliance): 0 to 2.

  • Verdict holds under pushback: 0 to 2.

  • Setup claims accurate (steps match the product's current setup; no step the product does not offer): 0 to 1.

  • Minus 2 per fabricated fact, with no floor: invented price, compliance status, built-in AI, features.

  • Note separately: sales phrases repeated verbatim ("in a minute").

Metrics and pass bar

  • False yes on the two non-fit personas: primary metric, target at most 10% of runs.

  • Correct yes on the three fit personas (including the collaborator): target at least 80%.

  • Zero compliance or price fabrications.

  • In Variant B, the share of runs that ask questions before judging.

Scoring

Two human raters, or an LLM judge with human spot checks, reporting agreement. Record the file hash per run and change one section per iteration (OpenAI's one-field rule).

5. Tool-description review checklist

  1. The first sentence says what it does and on what; a "Use this when" line and a "Do not use for" line follow.

  2. States side effects, reversibility and the approval model; annotations match the behavior (readOnly, destructive, idempotent, openWorld).

  3. One canonical call example; parameter meanings, formats, allowed values, defaults and maxima given as numbers.

  4. Failure semantics: which errors are retryable, what a retry does, what "done" means.

  5. Retention and lifetime of any handle it mints (MCP stateful-tools note).

  6. No internal jargon, product-internal process terms or unexplained codenames. Every noun is defined or discoverable through the named tool.

  7. No steering toward or away from other tools or vendors; no instructions outside the tool's scope.

  8. Fits each target client's cap with margin (Claude Code: 4,096 characters up front, 2,048 before v2.1.296); the essential content comes in the first 2,048 characters; a test enforces the budget.

  9. Instructions found in content are labeled as data (injection posture).

  10. Errors say what failed, why, and the next action, with the limit as a number; no error code without a sentence that explains it; no personal data (names, emails, document or message text) in error messages.

  11. Validated with a direct, indirect and negative prompt set before shipping.

6. Setup and consent copy

Ask in context and explain the benefit

  • Tan et al. (CHI 2014; online survey of 772 smartphone users judging screenshots of iOS requests): approval rose from 65.8% to 73.6% when a request gave a reason, and what the reason said made no observable difference (people.eecs.berkeley.edu, read 29 October 2026; summarized by NN/g, Maria Rosala, 2019-04-28, nngroup.com, read 29 October 2026). Ask when the feature is chosen; on denial, say what is unavailable and link to where to reverse it.

  • Google OAuth best practices (updated 2026-05-20; developers.google.com, read 29 October 2026): "always request scopes in context"; on partial consent, disable only the affected features.

  • GitHub: "You should select the minimum permissions required for the app" (docs.github.com, read 29 October 2026).

Explaining "paste this connection link into your AI" to non-developers

  1. Say what it is in one line: "a link that lets your AI open your [items] in the product, after you approve it."

  2. Use the client's own words and path, for example Claude's "custom connector" (under Customize > Connectors) or ChatGPT's "Add custom MCP server" (under Plugins). Verify the current path in a real browser, since client UIs drift.

  3. State eligibility before the steps. As of this pass: Claude Free allows one custom connector, and on Team and Enterprise an Owner adds it first (support.claude.com, read 29 October 2026); ChatGPT custom MCP servers need Business, Enterprise or Edu, on the web, not the phone app; on Business only admins and owners add them, and Pro connects read and fetch tools only (help.openai.com, read 29 October 2026).

  4. Say what they will see, in the product's own words: its sign-in, then its consent screen and the access it asks for.

  5. Translate the vendor warning, for example: "ChatGPT shows a risk warning because connected tools can read and change data; confirm it only for a service you trust, and keep approvals on for changes."

  6. Say how to undo it: disconnect in the AI's settings and revoke access in the product's connected-apps settings.

  7. One step at a time, waiting for the person to confirm each step.

Consent screen

  • Show the client name and the redirect hostname prominently; mark self-asserted names.

  • Keep write as a separate, explained choice, and consider leaving it unchecked by default (progressive least privilege).

  • Name the revoke location.

  • Use the product name consistently in its canonical casing, and one term per concept with a gloss where the UI and the API differ.

Oddlynew Copy and Messaging PrinciplesSign in

Referenced by

and more