Skip to content
AGENTIC Data Mining
● Public TOOL dla.vendor_directory LAST SYNC —

DLA vendor directory (FOIA vendor master)

The name behind the CAGE. Award tools identify awardees by CAGE only; this dataset is DLA's own monthly vendor master from the same FOIA Reading Room — legal/DBA name, city/state/ZIP, and street when policy allows.

Serving may still fail closed behind DLA_VENDOR_DIRECTORY_GATE until opened at deploy time. Sole-proprietor street addresses are withheld by default; DoD ordering activities are excluded from name search by default. Absence means no name on file — not that no company holds the CAGE.

Source & conduct: Source: DLA FOIA Electronic Reading Room vendor bulk file. Owner browser download (scripted fetches 403). Personal-data screen fails closed against SAM entity_structure=2J.

There is a portal for this: DIBIQ puts DLA award and item context in front of a bidder as pages rather than tool calls. Same subscription, same refusals.

Records

—

One row per vendor registration (collapsed per CAGE on read)

Coverage

—

Populates from /api/dataset-coverage when a row exists

Scope

Registrations

FOIA Electronic Reading Room · export-control carve-out

Freshness

Monthly

Human drop + ingest · JSON · Public · included in subscription

Coverage figures populate from the ingestion pipeline after bin/refresh-coverage.py writes a dataset_coverage row for dla.vendor_directory.

Query parameters

cagestring

CAGE code (5-character), exact match, case-insensitive. Dashed or undashed both work; you never have to reformat. This is the primary question the tool answers: take a CAGE off a dla.contract_history or dla.dibbs award row and find out who it is.

name_starts_withstring

Vendor-name PREFIX, case-insensitive. This is a prefix, NOT an infix: "NOBLE" finds "NOBLE SUPPLY & LOGISTICS, LLC" but not "THE NOBLE COMPANY" -- use dla.crossref if you need a contains-match on a company name. Minimum 3 characters: a shorter fragment matches an unusable frac…

include_dod_activitiesboolean

Default false. The file contains 971 rows (measured 2026-09-05) that are DLA ORDERING ACTIVITIES -- its own customers, not vendors. They are excluded by default because a vendor directory that silently lists them is misleading; set true to include them. They arrive flagged is_…

limitinteger

Max records to return (default 25, max 50)

offsetinteger

Rows to skip before the page starts (0-based, default 0). Read `has_more` to know whether another page exists.

The full input schema is served by the MCP server at connection time.

Example call

Request · dla.vendor_directory
{
  "tool": "dla.vendor_directory",
  "params": {
    "cage": "ZZ001",
    "limit": 10
  }
}

What you can ask

  • Who is the legal name behind the awardee CAGE on a Contract History row?
  • Does a competitor name appear in DLA's vendor master, and under which CAGE?
  • Where is a supplier located (city/state) for a delivery feasibility check?
Full tool reference →

Schema

Fields from the live catalog entry for dla.vendor_directory. Sample values below are synthetic schema shapes — not live FOIA rows.

Field Type Description
cagestringCAGE code — the join key to dla.contract_history.cage_code and dla.dibbs' awardee CAGE. NOT unique in this table: 2,155 CAGEs hold more than one vendor registration, so reads collapse under a fixed total order and rep…
vendor_namestringLegal or DBA name as DLA publishes it, truncated by the publisher at 35 characters. Null when withheld by the sole-proprietor name policy — vendor_name_withheld says which, and the row is always retained
street_addressstringStreet line as published. Withheld by default for a CONFIRMED sole proprietor (it is frequently a home address); city, state and postal code are shown regardless. Also null on the 118 rows the publisher left blank and…
citystringCity as published. Never masked by either policy lever
state_or_provincestringState or province code as published; blank on 53,252 rows (mostly non-US vendors). Never masked
postal_codestringPostal code as published; blank on 179,190 rows. Never masked
is_dod_activitybooleanTRUE on the 971 rows that are DLA ORDERING ACTIVITIES — its own customers, not suppliers, carrying a DoDAAC-shaped registration id. Retained and flagged rather than deleted; excluded from results by default
registrations_for_this_cageintegerHow many vendor registrations this CAGE actually holds, so the collapse to one row never silently hides that there were others
duns_number_legacystringA LEGACY identifier, returned for provenance only. SAM replaced DUNS with the UEI in April 2022; it is DLA's own key for this row and is deliberately not indexed. Do not join on it
sole_proprietor_screen_resultstringsam_2j | sam_not_2j | sam_unresolved, or null for never screened. Three states, not a boolean: 'screened and unresolved' (75.7% of rows) and 'never screened' are different facts and a boolean collapses them
last_seen_stampdatePublication stamp of the most recent DLA file that still carried this registration. This source has no date column of its own — it is a current-state master, not an event log

Sample record

Sample · dla.vendor_directory · synthetic
{
  "cage": "ZZ001",
  "vendor_name": "SYNTHETIC BRACKET WORKS INC",
  "street_address": "100 EXAMPLE WAY",
  "city": "SPRINGFIELD",
  "state_or_province": "IL",
  "postal_code": "60000-1000",
  "is_dod_activity": false,
  "registrations_for_this_cage": 1,
  "duns_number_legacy": "900000001",
  "sole_proprietor_screen_result": "sam_not_2j",
  "last_seen_stamp": "2026-08-17"
}

Illustrative synthetic record from catalog.json — identifiers are fabricated so a real FOIA row is never reproduced on this public page.

Use it for

  • Take the awardee CAGE off any dla.contract_history or dla.dibbs award row and find out who actually won it — the single thing DLA's own award records never tell you.
  • Check whether a competitor you already know by name appears in DLA's vendor master at all, and under which CAGE, before assuming a CAGE on an award row is theirs.
  • See where a supplier is physically located (city and state) when deciding whether a delivery requirement is realistic for them.
  • Distinguish a real supplier from a DLA ordering activity when a CAGE-shaped code appears somewhere it should not.