Skip to content
AGENTIC Data Mining
Live ● Public TOOL dla.nsn_suppliers LAST SYNC

Known suppliers by NSN

For a given NSN or Federal Supply Class: which companies have been awarded it before, how often, over what period — and who each of those companies actually is as a registered federal vendor: legal business name, UEI, registration currency, self-reported industry codes and location, from SAM.gov's own monthly entity-registration extract.

Two public sources, one join. DLA's DIBBS award grid is the only table in this catalog carrying nsn, fsc and cage_code together — it knows who won what but nothing about the winner. SAM.gov's Entity Registration extract is the federal registrant roster — it knows who a CAGE is but nothing about awards. Joined on CAGE, they answer a question neither can answer alone.

Read this before you act on the answer

This dataset answers “who has supplied this before”. It does not answer “who could supply this”. Every row is an observed, backward-looking fact: this CAGE was awarded this item, this many times, between these dates, per DLA's own published award grid.

The broader question is not merely unbuilt — it is unsupported by the data. Answering it would need a NAICS-to-FSC crosswalk (industry code → the stock-number classes a firm in that industry can actually produce), and no such crosswalk exists anywhere in this catalog. That is a documented gap confirmed across this whole line of research, not a feature waiting to ship.

This matters concretely because the tool does return NAICS codes. primary_naics and naics_codes are the vendor's own self-reported SAM registrations, chosen by the registrant to be eligible for set-asides. They tell you what kind of company this is. They are not evidence it can make this particular part, and every row carries a naics_disclaimer saying exactly that. Symmetrically: a company absent from a result has not been shown to be unable to supply the item — it has only not been captured winning it here.

Size standards: a threshold, not a determination

Every supplier also carries a size_standard block: the SBA small-business size standard for that vendor's primary self-reported NAICS code, from SBA's published table — the same standards codified at 13 CFR 121.201. Unlike the capability question above, this one is answerable, because SBA's size standard is the legal small-business test for a given industry code. “For NAICS 423330 the threshold is 225 employees” is a fact about the code, not an inference about a company.

The line this does not cross. A threshold is not a finding that a vendor is under it. That would need the vendor's actual average annual receipts or employee headcount, and SAM's public extract carries neither — there is no revenue, receipts or employee-count field in the public tier at all. Nothing on this surface renders as “this vendor is a small business”, and there is deliberately no boolean field that could be mistaken for one.

What SAM does carry, and it is better than expected. Every entry in SAM's NAICS list is a code plus the registrant's own SBA small-business self-certification for that specific code. That is a real first-party assertion — one that carries legal exposure for the registrant — and it is per-NAICS rather than blanket: the same firm is routinely small in one industry and not in another, which is exactly right, because size is measured against each industry's own standard. It is still a self-certification, not an audit, and a missing one is an absence of an assertion, never a “no”.

Exceptions are flagged, never guessed. SBA publishes exception standards for a handful of NAICS codes, where a named activity inside the industry gets a different threshold — and the gap is material: NAICS 115310 is $11.5M at base and $34.0M under either of its exceptions. SAM independently marks a registration as exception-scoped, and the two sources agree exactly on which codes have exceptions. So when an exception applies the block says so and lists the candidates, but it never picks one: which exception applies depends on the activity the vendor actually performs, and neither source states that.

This is the size test only. Actual set-aside eligibility also turns on socioeconomic certifications (8(a), HUBZone, WOSB, SDVOSB and similar), affiliation rules, and the specific solicitation's own terms — none of which are evaluated here. A six-state basis field says which case each row landed in, so “no threshold shown” is never ambiguous: a code with genuinely no SBA standard (public-administration codes, for instance) reads differently from a blank NAICS, from an unresolved registration, and from a lookup that could not run.

Status: Live since 8 August 2026 — the 2026-08-02 extract is loaded to the serving database: 895,429 rows parsed against the source file's own trailer count with 0 malformed, 41,240 no-public-display opt-outs and 309 Dun & Bradstreet-licensed rows withheld fail-closed before storage, 853,880 stored. The KPI tiles below are read live from the ingestion pipeline rather than asserted in this page's markup, so the figures you see are the ones actually in the table. This is a monthly full-refresh snapshot loaded on demand, not a continuously-running feed.

There is a portal for this: DIBIQ puts this supplier join in front of a DLA bidder as pages rather than tool calls — open solicitations, per-unit prior prices where they exist, approved sources and published item characteristics. Same subscription, same refusals.

Registered entities

One row per (UEI, EFT indicator) registration — not per UEI: a single entity legitimately holds several CAGE-bearing sub-registrations

Snapshot coverage

Measured live

The extract vintage actually loaded, read off the table itself. This is a monthly full-refresh snapshot, so “coverage” here means which snapshot you are reading, not a historical range.

CAGE join hit rate

94.0%

1,400 of 1,490 distinct DIBBS award CAGEs resolve to a stored registration — measured 2026-08-06 over the full population, not a sample

Freshness

Monthly

SAM republishes the whole corpus on the first Sunday · JSON · Public

Coverage syncing from the live ingestion pipeline…

How to tell whether the answer is trustworthy

Every caveat below is a queryable field, not a footnote. Nothing here is smoothed over in the response.

An unresolved CAGE is not an unregistered company

registration_status is a four-state field, never a boolean, because an unresolved CAGE is four genuinely different things — and two of them are our own deliberate withholdings, not facts about the company:

  • registration_on_file — a SAM row was found. Read registration_currency next; “on file” is not “active today”.
  • no_public_sam_registration_on_file — the CAGE won a real award but has no row in our stored slice. Could be a no-public-display opt-out (we withhold those), a D&B-licensed row (we withhold those too), a lapsed registration, or an award predating the registration.
  • no_cage_on_award_row — nothing to look up. No claim made.
  • registration_lookup_unavailable — the join could not be evaluated on this call. The award facts are still real; the registration half is unknown, never a negative finding.

Measured 2026-08-06: 1,400 of 1,490 distinct DIBBS award CAGEs (94.0%) resolve. An earlier 97.6% figure from a 500-CAGE sample did not hold at full scale and is not used anywhere on this site.

Registration is a monthly snapshot, and a stale row says so

Every registration field is as of that row's sam_snapshot_vintage. registration_currency is computed strictly as of that snapshot — never against the wall clock, which would silently mark an entire year-old snapshot expired:

  • active_as_of_snapshot — a deliberately narrower claim than “active”. Federal registrations renew annually, so an older snapshot is weak evidence about today.
  • expired_as_of_snapshot — cannot receive a new federal award without renewing, as of that date. Says nothing about whether they renewed since.
  • currency_undetermined — neither SAM's extract code nor an expiry was usable. Never read as either active or expired.

Known limitation, stated rather than hidden: this pipeline does not delete rows the source stops publishing, so a vendor that deregistered after our last snapshot still appears — carrying the older vintage it was last seen with. sam_snapshot_vintage is on every row precisely so a stale row reads as stale.

What this dataset deliberately does not carry

Three omissions, each a decision rather than a gap:

  • No prices, of any kind. Not a total, not a unit price, not a range. Use dla.dibbs for observed award totals or dla.prior_prices for published prior unit prices. This tool refuses to carry a number a caller could mistake for an item price.
  • No exclusion screening. A supplier appearing here has not been checked for debarment. Run risk.exclusions on the CAGE or UEI before acting on any name.
  • No point-of-contact data. SAM's public file carries 66 columns of individual-employee names, titles and addresses. They are parsed for row-width integrity and then structurally never stored — the persisted schema is 71 columns, not 137. A posture more conservative than the source.

Rows are ordered by count of captured awards. That is a count, not a ranking of quality, price, capability or preference — and no “best supplier” is ever computed.

What we withhold from this dataset, and why

SAM publishes more in this file than we serve. Both withholdings below are enforced before a row is ever stored — not filtered at query time, where a bug or a new code path could route around them.

Registrants who opted out of public display

SAM lets a registrant set a no-public-display flag. Its own public bulk file does not redact those rows — full legal name and address ship anyway. We drop every one of them fail-closed before storage: 41,240 of 895,429 rows (4.6%) in the 2026-08-02 extract. An opted-out registrant is therefore structurally unreachable through this dataset, the MCP tool and this site.

Consequence worth knowing: a perfectly active vendor who opted out will show as no_public_sam_registration_on_file. That is our choice, not their status.

Rows carrying Dun & Bradstreet-supplied data

SAM's terms of use carry a third-party licensing carve-out: D&B's “Open Data” — defined to include Legal Business Name and the full street address, i.e. this dataset's core columns — may not be used or disseminated in bulk, and other D&B-supplied data may not be used commercially at all. We withhold every row SAM marks as D&B-sourced: 309 rows in the 2026-08-02 extract.

A public-domain government work can still embed third-party-licensed content. This is the same class of restriction as the STOCK Act carve-out that keeps congressional trade data out of this catalog, and it is enforced in code rather than noted in prose.

Net effect on the 2026-08-02 extract: 895,429 rows published by SAM → 41,240 withheld as opted-out → 309 withheld as D&B-licensed → 853,880 stored. Sole-proprietor legal business names (which for that entity structure are individuals' names, 108,662 rows) are SAM's own intentional public disclosure and are included under an explicit data-owner authorization.

Query parameters

nsnstring

National Stock Number — the primary question. Dashed (4810-00-226-4107) or bare 13-digit (4810002264107) both work; you never have to reformat what you copied out of another tool. Required if fsc is not given.

fscstring

4-digit Federal Supply Class — the broader “who supplies this kind of item” scope. Required if nsn is not given. Classes 10–14 are withheld entirely by the export-control carve-out and return an explicit withholding, not a silent zero.

cagestring

CAGE code (5-character) — narrows to one supplier, e.g. to check whether a company you already have in mind has ever won this item. Dashed or undashed both work.

registration_statusstring

active · expired · any (default). Filters on currency as of each row's snapshot, not against today. It narrows the returned page rather than the corpus (the response says so), and it also removes suppliers whose registration did not resolve at all — which is not a finding about them. An unrecognized value is rejected with the valid set named, never silently zero-matched.

award_date_from / award_date_todate

ISO dates, inclusive. These narrow the whole aggregate: award counts and first/last dates then describe the window you asked for, not the supplier's full captured record.

limit / offsetinteger

Up to 50 suppliers per page (default 25). Page with offset; read has_more rather than total_matched, which can degrade to null under load.

Example call

Request · dla.nsn_suppliers
{
  "tool": "dla.nsn_suppliers",
  "params": {
    "nsn": "4810-00-226-4107",
    "limit": 10
  }
}

What comes back when nothing is on file

Response · no captured suppliers
{
  "rows": [],
  "returned": 0,
  "summary": {
    "nsn": "8030-01-999-9999",
    "suppliers_found": 0,
    "is_error": false,
    "statement": "No prior DIBBS award with an identified supplier CAGE is on file for NSN 8030-01-999-9999."
  },
  "absence": {
    "status": "loaded_but_no_match",
    "absence_means_here": "... it does not mean nobody supplies this item ... it does not mean the item does not exist ... and it does not mean the item is unrestricted."
  }
}

A stated answer that refuses three specific wrong readings — not an error, and distinguishable from one by design.

View tool & schema

Install in Claude Desktop

One-click .mcpb bundle — adds the dla.nsn_suppliers tool to Claude Desktop. Prompts for your API key on install; nothing is baked in.

Install in Claude Desktop (.mcpb)

Schema

One row per supplier CAGE, aggregated across that CAGE's matching award rows in dibbs_award_records, with its sam_entity_registration_records row attached where one is on file. It is not one row per award — use dla.dibbs for the individual award rows behind these counts.

Field Type Description
cage_codestringThe supplier, normalized uppercase/trimmed — the join key on both sides, and the only identity guaranteed present
awards_on_fileintegerCaptured DIBBS award rows matching your filter. Describes the window you asked for, not the vendor's full record
distinct_stock_numbers_awardedintegerHow many distinct NSNs those awards covered — a specialist/generalist signal at FSC scope
first_award_date / last_award_datedateSpan of captured award activity within your filter
registration_statusstringregistration_on_file · no_public_sam_registration_on_file · no_cage_on_award_row · registration_lookup_unavailable. Never a boolean — see “how to tell whether the answer is trustworthy” above
company_name / company_displaystringSAM legal business name, null when unresolved; company_display falls back to the bare CAGE, never to “unknown”
dba_namestringDoing-business-as name where the registrant supplied one
ueistringUnique Entity Identifier — the join key to contracts.awards, gov.assistance, health.nih_grants and risk.exclusions
registration_currencystringactive_as_of_snapshot · expired_as_of_snapshot · currency_undetermined. Computed as of the snapshot, never the wall clock
registration_expiration_date / initial_registration_datedateSAM's own dates, passed through unmodified
sam_snapshot_vintagedateWhich monthly extract this row came from. Read it before treating any registration as current — a deregistered vendor persists here with its older vintage
primary_naics / naics_codesstring / arraySELF-REPORTED industry registrations, capped at 25 with the total and a truncation flag. NOT a capability claim and NOT tied to this stock number — every row repeats that in naics_disclaimer
naics_registrationsarrayThe same codes, each with the registrant's own per-NAICS SBA small-business self-certification (self_certified_small) and an exception_scoped flag. A null certification means the registration carries none for that code — an absence, never a “no”
size_standardobjectThe SBA size standard for primary_naics — threshold type and value, industry description, SBA edition date, and a six-state basis. A THRESHOLD, never a determination the vendor meets it
entity_structurestringSAM's entity-structure code (e.g. 2L corporate, 2J sole proprietorship), verbatim and uninterpreted
city / state_or_province / country_code / entity_urlstringRegistered physical location and public URL, from the registration
registration_rows_for_this_cageintegerHow many SAM registrations share this CAGE. Above 1, the fields above are the most-recently-updated one — disclosed on the row, never silently merged

There is deliberately no point-of-contact, tax-identifier or banking field. The first is structurally excluded by us; the latter two are absent from SAM's public file entirely and were verified absent against a real download rather than assumed from the data dictionary.

Sample record

Sample · dla.nsn_suppliers · shape verified locally 2026-08-06
{
  "cage_code": "57626",
  "awards_on_file": 7,
  "distinct_stock_numbers_awarded": 3,
  "first_award_date": "2023-02-14",
  "last_award_date": "2026-01-18",
  "registration_status": "registration_on_file",
  "company_name": "COMSACO LLC",
  "company_display": "COMSACO LLC",
  "uei": "...",
  "registration_currency": "active_as_of_snapshot",
  "sam_snapshot_vintage": "2026-08-02",
  "primary_naics": "336413",
  "naics_codes": ["336413", "332710", "423860"],
  "naics_registrations": [
    { "naics_code": "336413", "self_certified_small": true, "exception_scoped": false },
    { "naics_code": "332710", "self_certified_small": true, "exception_scoped": false },
    { "naics_code": "423860", "self_certified_small": false, "exception_scoped": false }
  ],
  "naics_disclaimer": "SELF-REPORTED industry registration. NOT a capability claim...",
  "size_standard": {
    "basis": "base_standard",
    "naics_code": "336413",
    "industry_description": "Other Aircraft Part and Auxiliary Equipment Manufacturing",
    "threshold_type": "employees",
    "threshold_value": 1250,
    "threshold_display": "1250 employees",
    "sba_edition_effective_date": "2023-03-17",
    "self_certified_small": true,
    "exception_variants": [],
    "what_this_is_not": "A THRESHOLD, NOT A DETERMINATION..."
  },
  "entity_structure": "2L",
  "registration_rows_for_this_cage": 1
}

What is and is not measured here. The CAGE→company half is real: 57626 → COMSACO LLC and 1WRV6 → Building Perpetual Business Inc were both resolved against a real, locally-loaded copy of the 2026-08-02 extract. The size_standard block is real too — NAICS 336413 genuinely carries a 1,250-employee standard in SBA's 2023-03-17 edition, read out of the loaded table, not written by hand. The award counts and dates, and the per-code self_certified_small flags in this excerpt, are illustrative of the shape, not measured for this particular company — production holds no rows for this dataset yet, and inventing plausible values here is exactly the placeholder drift this page exists to avoid.

Read the two status fields, not the shape. registration_status tells you whether the identity half is real; registration_currency tells you as of when. A row with a company name but expired_as_of_snapshot is a genuine past supplier who cannot take a new award today without renewing — useful, and a different answer from either “active” or “not found”.

Use it for

  • Size the competitive field before bidding an NSN: how many companies have actually won it, how concentrated the wins are, and how recently anyone bid at all
  • Turn an incumbent's bare CAGE into a real company — legal name, UEI, entity structure, location — then take that UEI into contracts.awards or risk.exclusions for the wider picture
  • Qualify a supplier list you already hold: which of these CAGEs has a current federal registration, which has lapsed, and which one you cannot confirm either way
  • Scope by Federal Supply Class to find the repeat suppliers of a whole product family, not just one stock number
● Public Daily

DLA DIBBS micro-purchases

dla.dibbs

The award grid this dataset's supplier half is derived from — the individual award rows behind every count here, with their observed totals. Same NSN and CAGE keys.

Financial & Government Contracts

Included in subscription View dataset
● Public Daily

Exclusions & debarment

risk.exclusions

The screen this dataset deliberately does not perform. A supplier here is registered, not cleared — take the CAGE or UEI there before acting on any name.

Financial & Government Contracts

Included in subscription View dataset
● Public Daily

Federal contract awards

contracts.awards

Where a supplier's UEI from this dataset shows its $25k-and-up federal footprint — the half of procurement DLA micro-purchases never reach.

Financial & Government Contracts

Included in subscription View dataset