Files
seed-mcp/docs_mcp/lessons.md
T
justin 9ce920f622 agripro + nk scrapers — 146 Syngenta varieties added (wheat + corn/soy)
agripro (24 varieties)
- Drupal Views form scrape via /search-agripro-brand-varieties with
  explicit GET params (sidesteps the AJAX-only-on-load default that
  returns an empty form skeleton).
- Per-variety parse: <h1>, .field--node--variety-type--variety,
  .field--node--tag-line--variety, .field--node--body, plus the
  three rated sections (Agronomics / Grain / Disease) with their
  <div class="row"><div class="label">label</div><div>value</div>
  pairs.
- Wheat-class distribution: 12 HRS, 7 SWW, 3 HRW, 1 HWS, 1 Barley
  — provides the Northern Plains HRS coverage WestBred lacks.

nk (122 varieties — recon's "29" was outdated; the current NK seed
finder lists 41 corn + 81 soy)
- ASP.NET WebForms endpoint:
  POST /NKSeeds/{Corn,Soy}ProductFinder.aspx/GetProducts returns
  {"d": "<html>"} where the inner HTML is one <div class="sf-result">
  per variety. BeautifulSoup tokenizes the whole blob.
- Per-card: product code (NK8005, NK008-P8XF), RM/MG from the
  title <span>, "Brands Available" trait variants, marketing
  positioning + bullet strengths, tech-sheet PDF URL.
- pdfplumber text extraction on the tech-sheet PDFs adds:
  * corn disease ratings (Gray Leaf Spot, NCLB, Goss's Wilt,
    Anthracnose, Tar Spot, Fusarium, etc.) where the PDF prints
    "Label N" lines (text-extractable)
  * soybean Phytophthora source genes (Rps1c, Rps3a, ...)
  * soybean SCN race coverage
  * soybean agronomic ratings (Emergence, Standability, Shatter
    Tolerance, Green Stem) with text-extractable 1-9 values
  * soybean soil-type adaptation (Best/Good/Fair/Poor) for drought
    prone / high pH / poorly drained / etc.
- Agronomic rating BARS for corn (Emergence, Stalk Strength,
  Drought) are not text-extractable; we record the labels with an
  explicit "rated in PDF chart, see tech sheet" value so the agent
  can direct the farmer at the source for those numbers.

Scale-direction correction in lessons.md:
- NK and AgriPro both use 1 = best, lower = more resistant — the
  REVERSED convention vs Bayer / Golden Harvest. NK's tech-sheet
  footer literally prints "1-9 Scale: 1 = Best, 9 = Worst".
  AgriPro positioning on stripe-rust-resistant varieties (AP Iliad
  with Stripe Rust 1, Eyespot 2) confirms the same direction.
- sources-not-yet-indexed section trimmed to just Beck's PFR +
  Beck's products — everything else IS now in the corpus.

Cross-vendor coverage after this PR: 760 varieties.
  bayer_seeds     475 (DEKALB 288 / Asgrow 102 / WestBred 85)
  golden_harvest  139
  nk              122  (41 corn / 81 soy)
  agripro          24  (12 HRS / 7 SWW / 3 HRW / 1 HWS / 1 Barley)
Vendors: Bayer, Syngenta. Brands: 6. Crops: corn, soy, wheat (109
wheat now, up from 85).

requirements.txt: pdfplumber>=0.11 for NK tech-sheet parsing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 14:16:36 -04:00

11 KiB
Raw Blame History

crop_seed API lessons

Curated knowledge that does not live in the scraped corpus but that an agent needs to interpret search_docs / get_page results correctly. This file is the source for crop_seed_api_lessons(topic).

Each section starts with a ## <slug> heading; the tool returns sections whose slug matches the topic (substring match) or all sections when topic is None.

This file is the only place the MCP injects opinionated content. Everything else returned by the server comes verbatim from a vendor catalog. Lessons here should be: factual, well-cited, and conservative about what the corpus actually contains.


pioneer

Pioneer (Corteva) is NOT in the seed-mcp corpus. The MCP intentionally does not scrape pioneer.com. Per Pioneer's published Terms of Service:

"you shall not use any manual or automated software, devices or other processes (including but not limited to spiders, robots, scrapers, crawlers, avatars, data mining tools or the like) to 'scrape' or download data from the Services"

Pioneer additionally runs Imperva WAF on their catalog API and login-walls dealer lookup, so a polite scrape isn't technically feasible either.

Agent behavior when a farmer asks about Pioneer / P-series hybrids:

  1. Tell the farmer plainly: "I don't have Pioneer's variety data indexed — Pioneer doesn't allow automated indexing of their catalog."
  2. Recommend pioneer.com → Find a Sales Rep (or call 1-800-247-6803) for hybrid specs and local recommendations.
  3. If the farmer wants an independent third-party rating for a specific Pioneer hybrid, mention that university extension performance trials (Iowa State, Illinois Crop Sciences, Purdue, Nebraska, Ohio State) publish multi-location yield data on Pioneer hybrids alongside competitors — useful if they want apples-to-apples data without going through Pioneer's own marketing.
  4. Do NOT invent Pioneer hybrid ratings. If asked "what's the disease tolerance of P1142AM?", the only correct answer is "I don't have that data — please consult Pioneer or an extension service."

This is the canonical anti-hallucination policy for the seed-mcp. There is no Pioneer data; there is no inference. Direct the farmer to a primary source.


rating-scales

Different vendors publish ratings on different conventions. The chunker normalizes the labels in the chunk preamble but always preserves the source's _scale_direction field in the sidecar.

Bayer (DEKALB / Asgrow / WestBred): 1-9 (9 = best). A GRAY LEAF SPOT rating of 8 means EXCELLENT tolerance. A rating of 2 means SUSCEPTIBLE.

Syngenta Golden Harvest: 9-to-1 (9 = best, 1 = worst) — this is the direction Golden Harvest publishes, but the meaning of high numbers is the same: high = best. Where the chunker says "normalize" for Golden Harvest, that just means we've already re-stated it as 1-9 (9 = best) in the chunk preamble; the source's _scale_direction field still says 9-to-1 so you can detect the provenance.

Syngenta NK and AgriPro: 1-9 (1 = best, lower = more resistant). REVERSED from Bayer and Golden Harvest. NK's tech-sheet PDFs literally print "1-9 Scale: 1 = Best, 9 = Worst" in the footer; AgriPro's positioning on stripe-rust-resistant varieties (e.g. AP Iliad with Stripe Rust 1, Eyespot 2) confirms the same direction. On NK, this applies both to disease tolerance AND to numeric agronomic ratings (Emergence, Standability, Shatter Tolerance, Green Stem — all 1 = best). Cross-vendor comparisons MUST consult the _scale_direction field in each side's sidecar before drawing conclusions.

(Agronomic ratings on AgriPro are qualitative — "Excellent / Very Good / Good / Fair" — and have no direction issue. NK's soybean tech sheets ALSO publish soil-type adaptation as Best/Good/Fair/Poor labels which are qualitative.)

Beck's: ratings live behind SeedIQ login; only identity-level data is publicly available, so most disease/agronomic ratings are absent from Beck's records in this corpus.

Always check the chunk's "Rating scale" line or call lookup_variety(source_key) and look at _scale_direction if you are unsure. Cross-vendor comparisons are valid AFTER you've confirmed each side uses the same direction.

Non-numeric values appear for some characteristics and should be read literally:

  • R, MR, S for soybean disease resistance = Resistant / Moderately Resistant / Susceptible (not 1-9).
  • Rps1c, Rps3a, Rps1k, etc. = specific Phytophthora resistance gene present.
  • R1, R3 (under SOYBEAN CYST NEMATODE) = effective against SCN race 1 / race 3.
  • A, B, C under HERBICIDE sensitivity = grade letters where A is most tolerant.

maturity-semantics

Maturity is encoded differently per crop. Don't conflate the units.

Corn — Relative maturity (RM days): integer roughly 75-120. Lower = shorter season, suitable for higher latitudes / shorter growing windows. 110 RM is a Central Iowa default; 85 RM suits northern Minnesota or short-season silage; 115+ RM fits southern Indiana / southern Illinois / Missouri Delta. The number is Pioneer-style RM days, normalized across the industry.

Soybeans — Maturity group (MG): float 00 (zero-zero) to 9.0 expressed with one decimal. A "3.5 MG" soybean is for central Iowa. Northern North Dakota / Minnesota plant 0.01.5 MG. Mid-South plants 5.0+. Each tenth of an MG ≈ 7-10 days of additional season. Sidecar field: maturity_group (e.g. "3.5", "0.7").

Wheat — Class + heading: Winter / spring decision is separate from "class" (HRW / HRS / SRW / SWW / SWS / durum):

  • HRW = Hard Red Winter — Plains states bread wheat
  • HRS = Hard Red Spring — Northern Plains, North Dakota, Montana
  • SRW = Soft Red Winter — Eastern Corn Belt, Ohio Valley
  • SWW = Soft White Winter — Pacific Northwest
  • SWS = Soft White Spring — Pacific Northwest
  • Durum — North Dakota / Montana, pasta wheat Maturity is qualitative: Early / Medium-Early / Medium / Medium-Late / Late. WestBred's product page JSON does not always expose the wheat class as a structured field — sometimes it's only in the marketing narrative (e.g. "WB1376CLP is a Soft White Winter Clearfield® Plus Wheat variety"). Read positioning_statement carefully when the sidecar's wheat_class is null.

trait-glossary

Common trait codes that appear in trait_stack:

Corn:

  • SSRIB — SmartStax® RIB Complete® corn blend (above + below-ground insect protection + Roundup Ready + LibertyLink, with refuge-in-bag)
  • VT2PRIB — VT Double PRO® RIB Complete® (above-ground insect protection + Roundup Ready, refuge-in-bag)
  • VT4PRIB — VT4 PRO® RIB Complete® (newer above-ground protection)
  • Trecepta — Trecepta® (Trecepta + Roundup Ready + LibertyLink, for earworm + western bean cutworm pressure)
  • SmartStax PRO — SmartStax® PRO® (RNAi corn rootworm)
  • PowerCore — PowerCore® Refuge Advanced (older above-ground stack)
  • Conventional — no biotech traits (organic / specialty channels)

Soybeans:

  • XF — XtendFlex® (Roundup Ready 2 Xtend + dicamba + glufosinate)
  • Xtend — Roundup Ready 2 Xtend® (dicamba + glyphosate)
  • RR2Y — Roundup Ready 2 Yield® (glyphosate only)
  • E3 — Enlist E3® (2,4-D + glyphosate + glufosinate)
  • LL/LL+GT27 — LibertyLink® / LibertyLink + GT27 (glufosinate + glyphosate + isoxaflutole)
  • Conkesta E3 — Bt-stack for caterpillar pressure (BR/AR markets)
  • SR — SR® (sulfonylurea-tolerant, Asgrow-specific)

Wheat:

  • Clearfield / CLP — Clearfield® / Clearfield® Plus (imazamox tolerance)
  • CoAXium — CoAXium® (quizalofop tolerance) — note: AgriPro's catalog flag, NOT in the WestBred corpus.

Always render the full trait name (trait_descriptions) when telling the farmer "this variety has X trait" — bare trait codes are ambiguous in print.


scn-resistance

Soybean Cyst Nematode resistance ratings are critical for fields with SCN pressure (most of the Corn Belt). Read carefully:

  • R3 under SOYBEAN CYST NEMATODE = Resistant to race 3 (the most common race nationally). Most "SCN-resistant" soybeans on the market are R3.
  • R1, R3 = Resistant to both race 1 AND race 3. Higher value; useful in long-rotation SCN fields where race shifts have occurred.
  • MR3 = Moderately Resistant to race 3. Some yield loss expected under high SCN pressure.
  • S = Susceptible.
  • Some Bayer Asgrow XF lines (e.g. AG29XF4) use Peking-type SCN resistance, which is genetically distinct from the more common PI 88788 source. Peking is more durable when SCN populations have eroded PI 88788 effectiveness. Look for "Peking type" in the positioning statement.

Recommended workflow when a farmer asks about SCN: call search_docs with the user's MG range + "SCN-resistant", then lookup_variety on the top 2-3 candidates to verify the exact race coverage and resistance source.


regional-listings

The regional_recommendations array in each sidecar is sourced from Bayer's "local profiles" — varieties get assigned to regional Seed Guide bundles (e.g. "2026 Washington, Oregon, SEED GUIDE") with a named regional agronomist contact. This is the closest signal we have to "is this variety recommended for the farmer's geography?" but note:

  • A variety being absent from a regional listing does not mean it's unsuitable — Bayer's local agronomists curate these lists.
  • Listings are vendor-side recommendations, not third-party trial data.
  • When the farmer mentions a region, try filtering or scanning for varieties whose regional_recommendations[].product_list_name mentions that region.

Other vendors handle regional placement differently. Golden Harvest publishes a separate "plot report" system per state/year/site; NK publishes ratings as PDF tech sheets without regional flags.


sources-not-yet-indexed

If list_versions() doesn't show a vendor in the vendor facet, the corpus does not have it yet. Direct the farmer to that vendor's public catalog or their seed dealer.

Already indexed: Bayer (DEKALB / Asgrow / WestBred), Syngenta (Golden Harvest, NK, AgriPro).

Not yet indexed:

  • Beck's PFR (research) — 2,089 head-to-head trial documents on the public Sanity GROQ API. Different shape from variety records — these are studies, not hybrids. Surfacing them would benefit a separate tool (e.g. search_pfr_studies) rather than share a corpus with variety identity.
  • Beck's products — ~860 products. Identity-only (SeedIQ login gates the ratings).

checking-your-work

Before quoting a specific number to a farmer, always call lookup_variety(source_key=...) to confirm. The chunk text inside a search_docs response is a faithful render of the sidecar, but the sidecar IS the source of truth. Quoting from the canonical sidecar makes you robust against:

  • Chunk-text formatting bugs (e.g. a rare unicode issue trimming a value).
  • Future chunker changes (a re-index might rewrite the body).
  • Cross-vendor scale-direction differences (the sidecar's _scale_direction lets you state the convention explicitly).

If lookup_variety returns "not found" but search_docs surfaced the chunk, that's a bug — please report it. (In normal operation, every chunk's source_key round-trips to a valid sidecar.)