The capability layer above the llms.txt ABM already ships
ABM's discovery file is real but flat (Finding 1). This kit shows the next step: a structured llms.txt with real service sections, an agent card (the file that lets an AI assistant use you correctly: the path that 404s today), MCP tool schemas for capability + service-proof verification (one is a live x402 call: a web-native way for AI agents to pay per use), and a concierge persona that routes to a human.
⚙ Prototype scaffold. Values drawn from ABM's public pages where available and markedTODO where ABM would confirm authoritative content. Nothing here is deployed; it's a starting point ABM would review and populate.
Building on what's there. ABM already ships /llms.txt (200) and enforced email auth (DMARC p=reject). The gap we verified: /.well-known/agent-card.json is 404 and the llms.txt has 0 capability sections. This kit completes a stack ABM has clearly started.
The same file ABM already publishes, but with real capability sections an agent can reason over: not a flat sitemap-as-markdown.
# ABM Industries: llms.txt (prototype: structured capability layer) # Facility, engineering & infrastructure, and mobility solutions. # ~113,000 people · 350+ offices · NYSE: ABM · founded 1909. ## Services - Janitorial & commercial cleaning · Engineering & facilities · HVAC & mechanical - Electrical & lighting · Parking & transportation · Landscape & turf / grounds - Energy & EV-charging infrastructure · Microgrid & power solutions (ATS) - Mission-critical facilities ## Industries - Commercial real estate · Aviation · Healthcare · Education · Manufacturing & distribution · Data centers / mission-critical · Parking ## Commitments an agent can cite - Advancing Sustainability (environmental stewardship program) # TODO ABM to confirm targets/dates - Proof-of-outcome layer for grounds/restore work: verify_service_receipt (below) ## Verify us - Capabilities by service/industry/location: get_capabilities (MCP) - Independent service-proof receipts (photo+GPS+signature): verify_service_receipt - Live work-packet endpoint (standard x402, keyless): work_packet ($0.10) ## Contact - Sales: /contact/sales · General: /contact/general-inquiries · Suppliers: /supplier-resources - This file describes public capabilities only; contracts and site details are handled by ABM personnel, never by an agent.
The machine-readable identity + skill list: the exact path that returns 404 today.
{
"protocolVersion": "0.3",
"name": "ABM: Capability & Verified-Service Concierge (concept)",
"description": "Answers public capability/industry/location questions and
verifies ABM service-proof receipts.",
"provider": { "organization": "ABM Industries Incorporated", "url": "https://www.abm.com" },
"preferredTransport": "JSONRPC",
"capabilities": { "streaming": true },
"skills": [
{ "id": "get_capabilities", "description": "Services by industry & location, cited" },
{ "id": "verify_service_receipt", "description": "Replay a proof-verified service receipt" },
{ "id": "request_proposal", "description": "Hand a scoped facility opportunity to ABM" }
],
"note": "Public capability agent only. No client-site, roster, contract, or
pricing data is exposed; those route to ABM account personnel."
}
The callable surface. verify_service_receipt and work_packet are backed by EcoWealth's live rails on Base: the $0.10 x402 call in "The ask" runs against exactly this.
[
{ "name": "get_capabilities",
"description": "Return ABM services by industry & location, with citations.",
"input_schema": { "type":"object", "properties":{
"service":{"type":"string"}, "industry":{"type":"string"}, "location":{"type":"string"} } } },
{ "name": "work_packet", // live · standard x402 · $0.10 · keyless
"description": "Emit a bounded, funded work packet (scope, safety, proof reqs).",
"input_schema": { "type":"object", "required":["place","problem"],
"properties":{ "place":{"type":"string"}, "problem":{"type":"string"} } } },
{ "name": "verify_service_receipt",
"description": "Replay a settled service receipt: scope, GPS, timestamps, photo
hashes, tCO2e (grounds/restore), on-chain tx. Independent of ABM's
internal systems. Fails closed.",
"input_schema": { "type":"object", "required":["receipt_id"],
"properties":{ "receipt_id":{"type":"string"} } } },
{ "name": "request_proposal",
"description": "Submit a scoped facility opportunity; routes to ABM sales.
No auto-commitment; a human follows up.",
"input_schema": { "type":"object", "required":["service","scope","contact"],
"properties":{ "service":{"type":"string"}, "scope":{"type":"string"},
"location":{"type":"string"}, "contact":{"type":"string"} } } }
]
request_proposal handed to sales; the agent never prices, negotiates, or commits ABM.Why this is the differentiator
The kit turns ABM's already-published discovery file into a structured, callable, verifiable surface. It's a scaffold, built to be reviewed and populated by ABM: the honest next step for a company already ahead of its sector on machine-legibility.