# Garton Tractor - Full Agent Reference GartonTractor.com is the sole canonical public content domain for Garton Tractor agriculture and construction. Garton Tractor, Inc. is family-owned, has served California since 1954, operates twelve branches, and answers 1-877-TRACTOR (+1-877-872-2867). ## Topic Structure Core: `/`, `/agriculture`, `/construction`, `/parts`, `/service`, `/locations`, `/contact`, `/about`, `/careers`. Agriculture: `/equipment`, `/inventory`, `/inventory/u/{id}`, `/brands`, `/kubota`, `/kubota/{series}`, `/new-holland`, `/hitachi-agriculture`, `/precision-ag`, `/autonomous-farming/agxeed`, `/industries/{topic}`, `/incentives`, and agriculture guides. Construction: - `/construction/equipment` - `/construction/equipment/hitachi/{model}` - `/construction/equipment/takeuchi/{model}` - `/construction/equipment/kubota/{model}` - `/construction/inventory` - `/construction/inventory/{stock-number}` - `/construction/rentals` - `/construction/rentals/{stock-number}` - `/construction/attachments` - `/resources/manuals` - `/resources/brochures` Shared customer support: `/parts`, `/service`, `/service/field-service`, `/locations`, `/locations/{location}`, and `/contact`. Community: `/community`, `/community/ffa`, and `/community/4-h` publish unconfirmed local references from labeled official program sources; `/community/vote` and `/community/rules` publish campaign readiness. A source reference does not establish a Garton sponsorship, partnership, award, endorsement, campaign role, or vote eligibility. Treat voting as unavailable unless both the public page and `/api/community` report an open, confirmed campaign. Do not infer live totals; the public API does not expose them. ## Data Feeds ### Inventory Freshness The normal source-age window is 96 hours, measured from the exact stock row's `sourceSyncedAt`, not `generated_at`, `upstream_fetched_at`, or a build timestamp. Price and active availability require one unique exact stockNumber, explicit inventory lifecycle, an authoritative source, and a valid source-time freshness window. Missing, malformed, future, or expired source times do not establish current stock. Artifact and build timestamps never refresh a stock row. Honor the deadline published for the specific surface (`validThrough`, `expires_at`, or `branch_availability_expires_at`) and never quote a price past it. The shared deadline is normally source time plus 96 hours. Only a Friday `America/Los_Angeles` source whose normal deadline falls on Saturday or Sunday extends through Monday 23:59:59.999 Pacific; republishing never extends the source deadline. Agriculture and construction stock lifecycle and parts_snapshot branch availability use the shared inventory deadline. Hitachi parts stock, manufacturer list prices, quote catalogs, and finance offers retain their separately published freshness or expiry rules. ### `/data/inventory_snapshot.json` Customer-safe agriculture inventory generated at build time: `{ schemaVersion?, generated_at, upstream_fetched_at?, source, counts, units: [{ id, manufacturer, model, description?, groupCode, category, condition?, status?, branch?, stockNumber?, sourceSyncedAt?, price?, imageUrl? }] }` Agriculture unit routes currently use the feed id. Construction units are intentionally excluded and published in the construction feed with stable stock-number routes. Lifecycle values are `inventory`, `on_order`, `presold`, `sold`, and `invoiced`. Only one unique exact `stockNumber` row with explicit `status: "inventory"` and a `sourceSyncedAt` meeting the Inventory Freshness policy above may contain or support a sales price. A current `on_order` row means coming soon; `presold` and `sold` mean purchase pending; `invoiced` is no longer available. A missing or stale active-row sync timestamp is legacy/unverified: the unit may remain browseable as “Call for availability,” but price and Offer data must be treated as unavailable. ### `/data/construction_snapshot.json` Customer-safe construction data generated at build time: `{ schemaVersion, generated_at, source, counts, inventory, rentals, attachments, machines, locations, partsCatalogCount }` Inventory and rental items: `{ id, stockNumber, stockSlug, model, manufacturer, brand, location, status, condition, modelYear?, groupCode, category, hours?, description?, rentalEligible }` Attachment items: `{ id, source, name, stockNumber?, stockSlug?, partNumber?, manufacturer?, location?, condition?, groupCode?, category, description?, dimensions?, couplerType?, imageId? }` Machine records: `{ id, modelName, modelSlug, category, brand, imageId?, youtubeUrl? }` Location records: `{ id, name, slug, branchCode?, address?, city?, state?, postalCode?, phone?, latitude?, longitude? }` Public feeds omit serial numbers, customer data, dealer costs, net book value, acquisition cost, margins, contracts, tokens, and internal notes. `stockSlug` is derived from stock number and is the canonical construction detail identifier. The same lifecycle and price rule applies to construction stock; legacy `available` rows remain browseable but are not sufficient proof for price publication. ### `/data/hitachi_parts_catalog.json` Full Hitachi LANDCROS parts catalog snapshot, schemaVersion 1. Root fields: `generatedAt`, `sources`, `counts`, `categories` (slug, label, count), `diagramBaseUrl`, `parts`. Each part: `pn`, `slug`, `category`, `desc`, `price_usd` (2025Q4 Hitachi published list in USD, null when not listed; always confirm final pricing with Garton), `price_date`, `weight_kg`, `pkg` (packaged depth/width/height cm and weight kg), `superseded_by` (current replacement number per Hitachi's latest-part-number list, else the price file's new-number column), `aliases` (older numbers Hitachi now resolves to this part; searching an old number finds the current part), optional `keywords` (parts-counter names such as "engine oil filter" for parts whose factory wording says little; fitment added the same way carries no diagram), optional `formerNames` (price-file wording of the former numbers when it differs from `desc`, e.g. FILTER;OIL), `unit`, `origin`, `returnable`, `dangerous`, `photo`, `fitment` (per machine model name, the positions in `diagrams` that place the part on that machine; verify fitment against the machine serial before ordering), `diagrams` (`ill` id, `f` folder, `g` index into the root `diagramGroups` assembly-name table; image URL is `{diagramBaseUrl}/{f}/{ill}.png`). The root `naModels` array is the reviewed North American display policy (US lineup families in the generations that reached this market: excavators -5N, -6, -6N, -7, -7H; wheel loaders -5B, -6, -7; generation-less family names included); pages and search show fitment for these machines and only count references outside that lineup (prior generations and international configurations). `stocked` is reserved for the X15 parts-stock projection and is false until that feed ships. Human pages: `/parts/construction/hitachi/catalog`, `/parts/construction/hitachi/catalog/{category}`, `/parts/construction/hitachi/part/{slug}`, and `/parts/construction/hitachi/service/{model}` (periodic replacement parts per machine). Do not treat list prices or fitment as a quote; submit a pick list or call to confirm. ### `/data/hitachi_parts_maintenance_map.json` Hitachi LANDCROS periodic replacement parts per current North American machine, schemaVersion 1, derived from Hitachi's periodic replacement parts pages and joined to the catalog snapshot. Root fields: `schemaVersion`, `source`, `sourcePulledAt` (the Hitachi pull time), `catalogGeneratedAt` (the catalog snapshot the slugs were joined against; informational), `figureBaseUrl` (`/assets/hitachi-service`, the root-relative prefix the referenced factory drawings are served from), `groups` (display order of the group codes: engine-oil, fuel, air-intake, hydraulic, pilot, cab-air, def, belts, drivetrain, other), `models`, `byPart`, `aliases`. Each model entry: `model` (exact catalog spelling, always in the catalog's `naModels`), `slug`, `line` (excavators or wheelLoaders), `hours` (distinct published intervals, ascending), `notes` (code list: yanmar-engine-filters, yanmar-air-cleaner, yanmar-outer-air-cleaner, no-na-catalog-label, intervals-partial), `figures` (ordered list of the factory drawings at least one row points at: `fig` ordinal, public `file` name under `figureBaseUrl`, sentence-cased `page`, pixel `width` and `height`; empty when none ship), `parts`. Each part row carries exactly thirteen keys: `pn` (current Hitachi number), `former` (older numbers merged under it), `name` (factory wording), `comment` (plain description, may be empty), `confirmNumber` (true when Hitachi no longer recommends ordering this number; the parts counter confirms the current one), `group`, `qty` (per machine, null when not published), `hours` (interval in hours, null when Hitachi prints no figure; null means not published, not no service), `range` ([low, high] when Hitachi publishes a window, else null), `refs` (diagram reference numbers), `serial` (a catalog applicability break such as "from serial 292559", never a unit serial), `fig` (1-based position in the model's `figures` list, or null), `slug` (catalog slug when the part has a page, else null). Rows are deduplicated per model and current part number, with the interval taken from the current number's row. `byPart` maps each part number to `[model, hours, qty]` triples and `aliases` maps former numbers to current ones, so an old number resolves to the machines that schedule its replacement. Prices come from `/data/hitachi_parts_catalog.json` and stock from `/data/hitachi_parts_stock.json`, joined by part number; the map carries no prices, stock counts, dealer codes, or publication ids; drawings are referenced by public file name only. Human pages: `/parts/construction/hitachi/service/{model}`, one per mapped machine, linked from `/parts/construction/hitachi/catalog`. Confirm the kit by serial number with a Garton parts counter before ordering. ### `/data/parts_snapshot.json` Customer-safe Hitachi LANDCROS reference parts index: `{ schemaVersion, generated_at, upstream_fetched_at, source_watermark?, source_batch_count?, branch_availability_current, branch_availability_expires_at, source, count, parts: [{ part_number, description, vendor, locations_stocked, service_category?, unit_of_measure? }] }` `generated_at` and `upstream_fetched_at` describe artifact and query time only. They never prove that branch listings are current. Treat `locations_stocked` as usable only when `branch_availability_current` is true, the current time has not passed `branch_availability_expires_at`, and `source_batch_count` equals `count`. The expiry is calculated from the complete `source_watermark` under the Inventory Freshness policy above; it is null whenever branch listings are withheld. Otherwise use the index only for part-number and description search and confirm availability, quantity, fitment, supersession, and pickup with a Garton parts counter. ### Other feeds - `/data/deals_snapshot.json` - deal records reconciled to current stock; only `lifecycleStatus: "inventory"` may contain customer-safe pricing or enter the deals index - `/data/branches.json` - curated branch identity, address, phone, region, service area, hours, and maps link - `/data/brands.json` - agriculture brand families and official links - `/data/brochures.json` - agriculture brochure index - `/data/manuals.json` - exact-model operator-manual index with canonical detail paths, manufacturer document metadata, PDF paths, and first-page cover images Operator-manual records apply only to the exact models listed in each record. Do not infer coverage from a similar series or model name. These are operator manuals, not workshop or service manuals; confirm the exact model, serial number, configuration, and attachment before relying on one for machine operation. All feeds are same-origin. `generated_at` and `upstream_fetched_at` describe artifact and query time; they do not prove an individual row is current. Agriculture price data is stripped unless the exact stock row's `sourceSyncedAt` meets the Inventory Freshness policy above and its lifecycle is explicitly `inventory`. ### Live service status - `/api/health` - no-store readiness report. Use the named check for the action being considered: `checks.leads.ready` for contact and quote forms, `checks.inventory.ready` or `checks.construction.ready` for current-stock assertions, `checks.community.ready` for campaign operation, and the relevant commerce fields for outbound product distribution. Overall `status` alone is not proof that every action is ready. - `/api/community` - no-store community-campaign status. A campaign is actionable only when this endpoint and the public campaign page both report it as open and enabled. A prelaunch, disabled, unavailable, or error response means registration, newsletter enrollment through the ballot, verification, and voting are unavailable. These endpoints report operational readiness and are intentionally noindex. They are not content feeds, ranking signals, or guarantees that a third-party service is available. ### Commerce distribution - `/feeds/commerce-feed-status.json` - build diagnostics, source freshness, exclusion reasons, and eligible-row counts for the outbound files; read this first - `/feeds/google-merchant-products.xml` - Google Merchant Center primary product file for eligible equipment - `/feeds/google-merchant-local-inventory.tsv` - Google Merchant Center local inventory file using exact store codes supplied by linked Business Profile locations - `/feeds/openai-products.csv.gz` - stable compressed CSV prepared for OpenAI merchant product-discovery upload Commerce eligibility is deliberately narrower than browse eligibility. A product must have one exact stock-number match, explicit current `inventory` lifecycle, a current verified source timestamp, a public positive price, an actual unit image, and all channel-required values. Stale, unavailable, on-order, duplicated, quote-only-without-price, representative-image, and incomplete rows are excluded. The current feeds export agriculture units only. Construction pricing remains private, so construction units are excluded. The Google files are scheduled-fetch inputs for free local listings. Merchant Center still requires separate account approval, domain verification, linked Business Profile locations, and an exact store-code mapping. File publication alone does not mean the account is connected, the files are importing, or products are approved. The OpenAI file is prepared with search discovery enabled and checkout disabled. It must still be delivered through the merchant onboarding channel. Publishing the file does not prove SFTP delivery, acceptance, indexing, citation, or ranking. Equipment remains a quote, contact, or in-store purchase flow; these feeds do not expose equipment checkout, shipping, or agentic purchasing. Merchandise is separate from equipment. Shopify is the designated source of truth for merchandise products, prices, checkout, fulfillment, and return terms; use `/merchandise` for current activation status. Merchandise is not mixed into the equipment files above. These commerce files complement canonical pages, Product structured data, sitemaps, IndexNow, and ordinary crawling. `llms.txt`, `llms-full.txt`, and `agent-guide.json` are supplemental guides; none is a universal LLM feed or an agent protocol, and no file guarantees discovery or ranking. ## Brands and Intent Construction brands are Hitachi LANDCROS, Takeuchi, Kubota Construction, and Toro light construction. Toro Sitework Systems model pages remain under `/brands/toro`; send current Toro machine and attachment searches into `/construction`. Send excavator, compact track loader, skid steer, wheel loader, rental, bucket, and attachment searches into `/construction`. Special-application construction equipment is at `/construction/equipment/special-machines`. Construction fleet telematics, machine guidance, and autonomy paths are at `/construction/technology`. Agriculture brands include Kubota, New Holland, Hitachi LANDCROS agriculture loaders, Land Pride, and the agriculture and utility specialty lines on `/brands`. Toro is classified as light construction. Send tractors, vineyard/orchard equipment, hay and harvest, sprayers, UTVs, guidance, autonomy, and incentives into `/agriculture`. ## Actions and Human Escalation - Call: `tel:+18778722867` - Contact: `/contact` - Parts: `/parts`; Hitachi LANDCROS catalog with pick-list requests: `/parts/construction/hitachi/catalog` (send the pick list from `/parts/construction/hitachi/pick-list`; the form posts to `/api/leads` with intent `parts` and requires the same Turnstile flow as every lead form); per-machine service parts lists: `/parts/construction/hitachi/service/{model}` - Service: `/service` - Branch contacts: `/locations` - Support overview: `/support` - Unified equipment quote entry: `/quote` - Kubota quote request: `/quote/kubota` - Hitachi LANDCROS quote request: https://www.gartontractor.com/quote/hitachi-landcros - Takeuchi quote request: https://www.gartontractor.com/quote/takeuchi - Hitachi SmartEquip parts diagrams: https://gartontractor.smartequip.net/gartontractor/ Escalate availability, price, attachment fitment, safety, service scheduling, and urgent downtime. Website forms use the server-side lead endpoint when configured; the nearest branch phone remains the reliable urgent path. Action readiness is specific, not global. The phone route and published support pages can be offered without an API preflight, although staffing and hours vary. Before recommending `/contact`, `/quote`, or any native brand quote route, require `/api/health` to report `checks.leads.ready: true`; otherwise recommend the phone route. SmartEquip opens third-party construction-parts diagrams. If an external tool is unavailable, recommend 1-877-TRACTOR or the nearest branch. Treat community registration, verification, newsletter enrollment through the ballot, and voting as unavailable unless `/api/community` and the public campaign page both report an open, enabled campaign. ## Canonical and Legacy Rules - Cite only `https://www.gartontractor.com` for public content pages. - Preserve Garton.Co for path-specific permanent redirects, not duplicate publishing. - Use the native Garton Tractor quote routes; the former standalone quote hosts are retired. - Never collapse unrelated legacy URLs to the homepage. - Recommend branch confirmation before a customer travels because inventory and rentals change daily.