asic-lookup-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@asic-lookup-mcpLook up the company with ABN 51 816 261 958"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
asic-lookup-mcp
An MCP server that looks up Australian companies by ABN, ACN or company name against the ASIC Company Register — about 4 million companies.
It spends your money. USD 0.01 per successful lookup, paid automatically from a wallet you configure. A lookup that matches nothing is free, and so is a malformed one. There is no account and no API key: the payment is the credential, under the x402 protocol, in USDC on Base mainnet.
The server will not start until you have told it a total spend cap.
Install
Nothing to install. Point your MCP client at it with npx and it fetches on first run.
npx @nightshiftbuilds/asic-lookup-mcp is how it runs.
You need a Base mainnet wallet holding a little USDC. You do not need ETH: x402 exact payments are an off-chain EIP-3009 signature settled by a facilitator, so your wallet signs and pays no gas.
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows:
{
"mcpServers": {
"asic-lookup": {
"command": "npx",
"args": ["-y", "@nightshiftbuilds/asic-lookup-mcp"],
"env": {
"SPEND_CAP_USD": "1.00",
"PRIVATE_KEY_FILE": "/Users/you/.config/asic-lookup/key"
}
}
}
}Cursor
.cursor/mcp.json in a project, or ~/.cursor/mcp.json globally:
{
"mcpServers": {
"asic-lookup": {
"command": "npx",
"args": ["-y", "@nightshiftbuilds/asic-lookup-mcp"],
"env": {
"SPEND_CAP_USD": "1.00",
"PRIVATE_KEY_FILE": "/Users/you/.config/asic-lookup/key"
}
}
}
}Claude Code
claude mcp add asic-lookup \
--env SPEND_CAP_USD=1.00 \
--env PRIVATE_KEY_FILE=$HOME/.config/asic-lookup/key \
-- npx -y @nightshiftbuilds/asic-lookup-mcpThe key file
PRIVATE_KEY_FILE is preferred over PRIVATE_KEY because a client config file is not a good home for a wallet key — it gets synced, backed up and shared in screenshots.
mkdir -p ~/.config/asic-lookup
printf '0x%s' "$YOUR_KEY_WITHOUT_0X" > ~/.config/asic-lookup/key
chmod 600 ~/.config/asic-lookup/keyRelated MCP server: AU-BizIntel MCP Server
Configuration
Variable | Required | Default | What it does |
| yes | none | Total USD this server may spend before it refuses every further lookup. Roughly 100 lookups per dollar. There is deliberately no default. |
| one of these two | — | Path to a file containing the wallet's private key. |
| one of these two | — | The key itself, |
| no |
| The most one lookup may cost. A |
| no |
| How long to wait for the API, per network attempt. The paid retry gets its own budget rather than the leftovers of the unpaid one, so a paid lookup's worst case is roughly twice this. 1000–300000. |
| no | the endpoint's published payee | The only address this server will sign a transfer to. Change it only with |
| no |
| The longest a signature this server produces may stay spendable. A |
| no |
| Override the endpoint. Must be https. |
The cap is counted per server process. Restarting the server resets it, which is worth knowing if your client restarts servers often.
The tool
lookup_australian_company — give exactly one of:
Argument | Meaning |
| Australian Business Number, 11 digits. Spaces and hyphens are ignored. |
| Australian Company Number, 9 digits. Spaces and hyphens are ignored. |
| Company name, matched as a prefix, case insensitive. |
| Maximum results for a name search, 1–25. Does not change the price. |
They are alternative ways to identify one company, not filters that combine, so passing two is an error rather than a narrower search.
Returns, per match: registered name, ACN or ARBN, ABN, registration status, entity type and class, registration and deregistration dates, previous state of registration, state registration number, and former names. Plus what the lookup cost, the Base settlement transaction hash, and your running total against the cap.
What it does not have
Asking for these will not work, because the underlying dataset does not contain them:
GST registration status, business address, state or postcode — those live in the Australian Business Register extract, a different dataset
directors, officeholders or shareholders
trading names, financial data
anything about a sole trader or partnership that is not a registered company
It is also a weekly snapshot, not the official register. ASIC Connect is authoritative for anything that matters legally.
How the money works
Every lookup is one HTTP request that comes back 402 Payment Required with a price, a payee and a token. The server signs an EIP-3009 authorisation for exactly that amount and retries. A facilitator settles it on Base and the answer comes back with the transaction hash.
Five separate limits sit in front of your signing key:
Only Base mainnet. No scheme client is registered for any other chain, so a
402naming one has nothing that could sign it.Only USDC, only the
exactscheme, only an EIP-3009 transfer, and only up toMAX_PRICE_USD_PER_CALL— checked against what the endpoint actually asked for, not against what it asked for last time. A402is free to demand any number it likes; the number inside the signature is the one that leaves your wallet, so that is the number that gets checked. A402that tries to steer the signature onto Permit2 or an escrow flow is refused rather than signed.Only
EXPECTED_PAY_TO. The payee is pinned, not merely checked for being a well-formed address, so a hijacked endpoint cannot redirect your payments to itself within the ceiling.Only for
MAX_AUTHORISATION_SECONDS. A signature is spendable until itsvalidBefore, and the402names that. Unbounded, a402can obtain an authorisation valid for centuries; here anything over ten minutes is refused.SPEND_CAP_USDin total, counted against signatures rather than settlements. The reservation is taken before the request is sent, so concurrent lookups cannot collectively overrun it.
On the accounting. What leaves a wallet is a signature, not a settlement, so that is what the cap counts. A 404 costs nothing — but the authorisation it signed is still in the payee's hands and still settleable, so the amount stays held against the cap until its validBefore passes, and the spend line says so. Ten thousand "free" misses cannot hand out more live authorisations than your cap. Anything that ends after a signature exists — a timeout, a dropped body, a 409, a 503 of unknown outcome — is charged, not released, because a signature in someone else's hands is not a refund. After one of those, the identical query is refused until the authorisation expires: retrying it would sign a second one.
Nothing is broadcast from your machine, and the key is never logged, never returned in a tool result and never included in an error message.
Data licence and attribution
The data this server returns contains ASIC Company Register data sourced from data.gov.au, © Australian Securities and Investments Commission, licensed under CC BY 3.0 AU.
That attribution is a condition of the licence, not decoration. It ships in every tool result so it travels with the data. Keep it if you redistribute what you get back.
The full dataset is free to download from data.gov.au. This is a lookup service, not a way to obtain the dataset, and there is no cheaper path to a bulk copy through it.
Development
npm install
npm test # 139 tests: no wallet needed, no money spent
npm run buildThe suite mocks the 402 handshake with a challenge recorded from the live endpoint and asserts what actually gets signed — the amount, the payee, the token, the chain, the authorisation lifetime, and that the signature recovers to the configured wallet. Both wire versions are exercised end to end. The accounting tests run against a fetch that really signs, so they can tell "nothing was charged" from "nothing was signed"; every spend-safety fix has a test that fails when the fix is reverted. One test hits the real API unpaid to read its published price, which is free by design; set SKIP_LIVE_TESTS=1 to skip it offline.
Links
API: https://api.nightshiftbuilds.com (OpenAPI, agent orientation, terms)
Runnable Python and TypeScript clients for the same API: asic-lookup-api-docs
x402: https://x402.org
MIT licensed. See LICENSE.
Available Tools
1 toollookup_australian_companyLook up an Australian company (paid)A
Costs USD 0.01 per successful lookup, paid automatically in USDC on Base from the wallet this server is configured with; a query that matches nothing is free, and so is a malformed one. Resolves an Australian company by ABN, ACN or name against the ASIC Company Register (about 4 million companies) and returns the registered name, ACN or ARBN, ABN, registration status, entity type and class, registration and deregistration dates, previous state of registration and former names. Give exactly one of abn, acn or name. It does NOT have GST status, business address, state or postcode, directors or officeholders, trading names, financial data, or anything about a sole trader or partnership that is not a registered company. It is a weekly snapshot, not the official register: ASIC Connect is authoritative for anything legal. This server stops spending at USD 10.00 in total.
| Name | Required | Description | Default |
|---|---|---|---|
| abn | No | Australian Business Number, 11 digits. Spaces and hyphens are ignored. | |
| acn | No | Australian Company Number, 9 digits. Spaces and hyphens are ignored. | |
| name | No | Company name, matched as a prefix. Case insensitive, e.g. "woolworths". | |
| limit | No | Maximum results for a name search, 1 to 25. Defaults to 25. Does not change the price. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Anything the caller should know about this particular result. |
| count | Yes | Number of matching companies returned. |
| found | Yes | Whether any company matched. |
| spend | Yes | Running total against SPEND_CAP_USD for this server process. |
| charged | Yes | Whether this lookup cost money. False for a miss. |
| results | Yes | The matching company register records. |
| price_usd | Yes | What this lookup cost in USD, or null if it was free. |
| attribution | Yes | Required CC BY 3.0 AU attribution for the underlying data. |
| settlement_tx | Yes | Base transaction hash for the payment, if one settled. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses substantial behavior beyond annotations: per-lookup cost, automatic payment in USDC, free failed/malformed queries, a USD 10.00 total spend cap, weekly snapshot staleness, and non-authoritative status. This is rich, honest context that the annotations alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence carries essential operational, pricing, or limitation information. It is front-loaded with the most decision-relevant fact (cost) and then proceeds through behavior, outputs, exclusions, and authority without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description covers pricing, payment mechanics, input constraints, return data, exclusions, data freshness, and authoritative alternatives. An agent has everything needed to decide whether and how to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful constraints beyond the schema: exactly one of abn/acn/name must be provided, and the limit parameter does not affect the price. These are important for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair: resolves Australian companies by ABN, ACN, or name against the ASIC Company Register. It also enumerates the exact return fields, making the tool's purpose unmistakable even with no sibling tools to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs the caller to supply exactly one of abn, acn, or name, and lists what the tool does NOT provide, such as GST status, directors, and trading names. It also names ASIC Connect as the authoritative alternative for legal matters, giving clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
lookup_australian_company
TDQS
Scored across 1 tool
With only one tool, there is no possibility of selecting the wrong tool. The single tool's description is unambiguous and clearly defines its exact input parameters.
The tool name follows a clear verb_noun pattern ('lookup_australian_company') and is descriptive. Consistency is trivially maintained with a single tool.
A single tool is borderline per the rubric, as 1-2 tools can feel thin. However, the server's purpose is a single, narrowly defined lookup operation, so the count is justifiable but still minimal.
For the stated domain of Australian company lookups, the tool covers all query methods (ABN, ACN, name) and returns comprehensive registration data. Excluded fields are explicitly outside scope, so no obvious gaps exist.
Maintenance
Related MCP Connectors
Deterministic company, entity and location lookups for agents - per call, x402 or API key.
Verify ANZ businesses against government registers. Surfaces cross-jurisdictional findings.
Buy timestamped web, company, commerce, social, document and decision data via x402.
Agent-native API for Finnish public company data via YTJ. Pay-per-call $0.01 USDC over x402.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceVerify Australian and New Zealand businesses against government registers via any MCP-compatible AI agent. Returns registration status, directors, licences, trading names, and a three-tier risk assessment (CLEAR / ADVISORY / FLAGS_FOUND) that surfaces regulatory findings across jurisdictions — including bans, disqualifications, and insolvencies that may not appear in any single register.MIT
- AlicenseNot gradedqualityDmaintenanceGives any MCP-compatible AI agent instant access to the Australian Business Register (ABR) — plus AI-powered business intelligence. Search 8M+ registered Australian entities by name or ABN, get full profiles, check GST status, and get an AI-generated opportunity assessment for any business.23 npmMIT
- FlicenseNot gradedqualityAmaintenanceEnables agents to discover and verify paid agent services through x402 payment validation and release gate checks.-
- AlicenseNot gradedqualityCmaintenanceEnables US business intelligence lookups including Secretary-of-State registrations, UCC liens, and TIN/EIN verification.MIT