FIRMSapi MCP
An official MCP server provided by FIRMSapi that allows AI agents to search, look up, and validate U.S. CBP FIRMS facility codes. It wraps REST endpoints for facility details, search, proximity, and validation, using the same API key and quotas as the standard API.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.firmsapi.com/mcpWhat you can do with it
- Look up a specific FIRMS code record
- Search for facilities by name or address
- Validate a code against a port and use
- List CBP ports and their facilities
Source and maintenance
Protocol and capabilities
- Server
- firmsapi 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 6 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
6 advertised
lookup_firms_code — Look up a FIRMS code
Get the CBP FIRMS record for one code: facility name, status (active or deleted), facility type, address, CBP port, location, and the other codes registered at the same address. Deleted codes and "DO NOT USE" placeholders (junk: true) are returned with warnings. A code that is not on the list returns a not_found error, which still counts as a call. Wraps GET /v1/firms/{code}. Live keys (fapi_live_...): one counted call. Test keys (fapi_test_...): fixture sample data, not counted.
{
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Za-z0-9]{4}$",
"description": "4-character FIRMS code, e.g. E430."
}
},
"additionalProperties": false
}{
"title": "Look up a FIRMS code",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search_firms_facilities — Search facilities by name or address
Find FIRMS codes from a facility name and/or street address, e.g. 'maher terminal elizabeth' or '231 tyler st newark'. Typo-tolerant; returns ranked matches with a 0-100 score. Active codes only unless include_deleted is true. One call per search, however many results. Wraps GET /v1/search. Live keys (fapi_live_...): one counted call. Test keys (fapi_test_...): fixture sample data, not counted.
{
"type": "object",
"required": [
"query"
],
"properties": {
"port": {
"type": "string",
"pattern": "^[0-9]{4}$",
"description": "4-digit CBP port code, e.g. 4601."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Most matches to return."
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 2,
"description": "Name and/or address."
},
"state": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "2-letter state, e.g. NJ."
},
"types": {
"type": "array",
"items": {
"enum": [
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11"
],
"type": "string"
},
"description": "Only these facility types: 01 Container freight station (CFS), 02 Foreign trade zone (FTZ), 03 Pier or terminal, 04 Bonded warehouse, 05 Inspection facility, 06 Importer premises, 07 DP site, 08 CBP administrative, 09 Centralized examination station (CES), 10 Rail or air terminal (inferred), 11 CBP test."
},
"include_deleted": {
"type": "boolean",
"default": false,
"description": "Include deleted codes (ranked after active ones)."
}
},
"additionalProperties": false
}{
"title": "Search facilities by name or address",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}find_nearby_firms_facilities — Find facilities near a point, code or address
List FIRMS facilities within radius_km, nearest first. Pass exactly one origin: lat and lon; code (another FIRMS facility, left out of the results); or address (a US street address, geocoded unless it is a FIRMS facility's own address). meta.origin says which point was used. Facilities whose address could not be geocoded are not included. Test keys use approximate coordinates. Wraps GET /v1/nearby. Live keys (fapi_live_...): one counted call. Test keys (fapi_test_...): fixture sample data, not counted.
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Origin latitude in decimal degrees, e.g. 40.68. Pass with lon."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Origin longitude in decimal degrees, e.g. -74.15. Pass with lat."
},
"code": {
"type": "string",
"pattern": "^[A-Za-z0-9]{4}$",
"description": "Search around this FIRMS code."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Most facilities to return."
},
"types": {
"type": "array",
"items": {
"enum": [
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11"
],
"type": "string"
},
"description": "Only these facility types: 01 Container freight station (CFS), 02 Foreign trade zone (FTZ), 03 Pier or terminal, 04 Bonded warehouse, 05 Inspection facility, 06 Importer premises, 07 DP site, 08 CBP administrative, 09 Centralized examination station (CES), 10 Rail or air terminal (inferred), 11 CBP test."
},
"address": {
"type": "string",
"maxLength": 200,
"minLength": 3,
"description": "Search around this US street address, e.g. 231 Tyler St, Newark, NJ 07114."
},
"radius_km": {
"type": "number",
"default": 10,
"maximum": 100,
"description": "Search radius in km around the origin.",
"exclusiveMinimum": 0
},
"include_deleted": {
"type": "boolean",
"default": false,
"description": "Include deleted codes (ranked after active ones)."
}
},
"additionalProperties": false
}{
"title": "Find facilities near a point, code or address",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}validate_firms_code — Check a FIRMS code before filing
Pre-filing checks of a FIRMS code against the published CBP list, in order: format, exists (catches ACE reject 158), active (159), in the stated port (164), facility type fits the use (warehouse_entry: bonded warehouse 04; ftz_admission: FTZ 02; exam_site: CES 09; location_of_goods: not 07 or 08), not a placeholder. Returns valid, checks_passed, checks_failed, checks_skipped, checks_not_possible (bond status, FTZ zone ID, direct delivery, port clusters: not in the FIRMS list) and a note. valid: true is not ACE acceptance: FIRMSapi has no ACE connection, so confirm in ACE before filing. A failing code is a normal result (valid: false) and counts as a call. Wraps POST /v1/validate. Live keys (fapi_live_...): one counted call. Test keys (fapi_test_...): fixture sample data, not counted.
{
"type": "object",
"required": [
"code"
],
"properties": {
"use": {
"enum": [
"warehouse_entry",
"ftz_admission",
"exam_site",
"location_of_goods"
],
"type": "string",
"description": "How the code will be used; enables the facility type check."
},
"code": {
"type": "string",
"maxLength": 32,
"minLength": 1,
"description": "The code as it appears in your system. A malformed code is a failed check."
},
"port": {
"type": "string",
"maxLength": 8,
"description": "4-digit CBP port of entry of the filing."
}
},
"additionalProperties": false
}{
"title": "Check a FIRMS code before filing",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_cbp_ports — List CBP ports
Every CBP port that has FIRMS codes, with name, state, region, facility_count and active_count, in one call. Wraps GET /v1/ports. Live keys (fapi_live_...): one counted call. Test keys (fapi_test_...): fixture sample data, not counted.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"title": "List CBP ports",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_cbp_port — Get a CBP port and its facilities
One CBP port with a page of its FIRMS facilities, ordered by code. Placeholders are left out; active codes only unless include_deleted is true. For the next page pass cursor = meta.next_cursor (null on the last page); each page is one call. Wraps GET /v1/ports/{port}. Live keys (fapi_live_...): one counted call. Test keys (fapi_test_...): fixture sample data, not counted.
{
"type": "object",
"required": [
"port"
],
"properties": {
"port": {
"type": "string",
"pattern": "^[0-9]{4}$",
"description": "4-digit CBP port code, e.g. 4601."
},
"limit": {
"type": "integer",
"default": 100,
"maximum": 100,
"minimum": 1,
"description": "Facilities per page."
},
"types": {
"type": "array",
"items": {
"enum": [
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11"
],
"type": "string"
},
"description": "Only these facility types: 01 Container freight station (CFS), 02 Foreign trade zone (FTZ), 03 Pier or terminal, 04 Bonded warehouse, 05 Inspection facility, 06 Importer premises, 07 DP site, 08 CBP administrative, 09 Centralized examination station (CES), 10 Rail or air terminal (inferred), 11 CBP test."
},
"cursor": {
"type": "string",
"pattern": "^[A-Za-z0-9]{4}$",
"description": "meta.next_cursor from the previous page."
},
"include_deleted": {
"type": "boolean",
"default": false,
"description": "Include deleted codes (ranked after active ones)."
}
},
"additionalProperties": false
}{
"title": "Get a CBP port and its facilities",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 548 ms
- 95th percentile latency
- 548 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 548 ms · metadata changed · 6 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http firmsapi-mcp https://api.firmsapi.com/mcpCodex
codex mcp add firmsapi-mcp --url https://api.firmsapi.com/mcpCursor
{
"mcpServers": {
"firmsapi-mcp": {
"url": "https://api.firmsapi.com/mcp"
}
}
}Cline
{
"mcpServers": {
"firmsapi-mcp": {
"type": "streamableHttp",
"url": "https://api.firmsapi.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"firmsapi-mcp": {
"type": "http",
"url": "https://api.firmsapi.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http firmsapi-mcp https://api.firmsapi.com/mcpClaude Desktop
{
"mcpServers": {
"firmsapi-mcp": {
"url": "https://api.firmsapi.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"firmsapi-mcp": {
"serverUrl": "https://api.firmsapi.com/mcp"
}
}
}Let your agent find its tools
Find servers like FIRMSapi MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run FIRMSapi MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.