Oxaide — Singapore company research for AI agents
Server Details
Agent-buys cited Singapore company research: ACRA/URA/GeBIZ packs, S$49/390/1500 per job.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- leewenjie/oxaide-mcp
- GitHub Stars
- 0
TDQS
Scored across 6 tools
Each tool targets a distinct action: creating, tracking, retrieving results, listing (admin), paying, and running a separate ping service. Even get_audit and get_audit_result are clearly separated by status vs. content, avoiding confusion.
All tool names follow a consistent verb_noun pattern (create_audit, get_audit, get_audit_result, list_audits, pay_audit, ping_check) using snake_case. The naming is predictable and uniformly structured.
Six tools provide a focused and well-scoped surface for a company research service. Each tool serves a real function without redundancy or unnecessary bloat.
The audit lifecycle is well covered (create, pay, status, result), and admin listing is included. The only gap is that purchasing a ping pack is not exposed as a tool, requiring an external API call, which is a minor dead end for agents relying solely on MCP tools.
Available Tools
6 toolscreate_auditRequest Oxaide researchAInspect
Create a private research job (Oxaide). Returns a job id immediately; the AI quote (S$49 Quick check / S$390 Pack / S$1500 Board pack) is emailed within ~15m. Pay with pay_audit before any work starts.
| Name | Required | Description | Default |
|---|---|---|---|
| brief | Yes | The research question, in plain language (SG corporate/wealth topics: ACRA/URA/GeBIZ/CPF/REIT etc). | |
| Yes | Delivery email — quote, files, and refunds go here. Required: delivery is email-first. | ||
| source | No | Optional caller tag, default "mcp". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond annotations: it returns a job id immediately, the quote is emailed within ~15 minutes, pricing tiers are disclosed, and work only starts after payment via pay_audit. This clearly communicates the asynchronous nature and the payment gate, which annotations alone do not convey. No contradiction with annotations.
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 two sentences with no filler. It front-loads the core action and immediate result, then adds the critical payment prerequisite. Every sentence earns its place.
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?
The description covers the essential workflow: create job, receive job id, get emailed quote, pay before work begins. Given the simple parameter set and annotations, this is sufficient for an agent to call the tool correctly. Minor gaps like how to retrieve the result later are not required for invocation and are covered by sibling tools.
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 description coverage is 100%, so the schema already documents all three parameters. The description adds context about email delivery and payment but does not materially explain the brief or source parameters beyond what the schema states. Baseline 3 is appropriate because the schema carries the parameter documentation burden.
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 clearly states a specific action ('Create a private research job (Oxaide)') and resource, and differentiates it from sibling tools by describing the immediate job-id response and downstream quote/payment flow. The title 'Request Oxaide research' reinforces this. An agent can easily tell this creation tool apart from get_audit, list_audits, and pay_audit.
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?
The description implies usage context by defining what the tool creates and mentions that payment should follow via pay_audit. It does not explicitly state when to use this tool versus the sibling get_audit/get_audit_result/list_audits tools, nor does it state exclusions. The workflow hint is useful but leaves the when-to-use guidance to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_auditGet Brief statusARead-onlyIdempotentInspect
Get one job: status, quoted tier/price, payment state, delivery state. Poll after create_audit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Job id returned by create_audit (brief_xxx). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructiveness. The description adds value beyond that by revealing the specific data returned (status, pricing, payment state, delivery state) and by framing the tool as a polling mechanism, which is useful behavioral context for an agent.
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?
Two short sentences contain all essential information: what the tool returns and when to use it. No filler or redundancy; information is front-loaded.
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?
For a simple single-parameter getter with strong annotations, the description is largely sufficient. It covers purpose, return fields, and usage timing. A minor gap is not distinguishing from get_audit_result, but the field list provides enough differentiation for most cases.
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%, and the parameter 'id' is already well-described as the job id returned by create_audit with format brief_xxx. The description does not add further param-specific meaning, so the baseline of 3 applies.
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 ('Get'), a single resource ('one job'), and the exact fields returned (status, quoted tier/price, payment state, delivery state). This clearly differentiates it from siblings like list_audits (plural), create_audit (creation), and pay_audit (payment), and the title reinforces its purpose.
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?
The description explicitly says 'Poll after create_audit', giving clear temporal context for when to invoke the tool. It does not explicitly name alternatives or exclusion cases (e.g., when to use get_audit_result instead), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_resultGet delivered BriefARead-onlyIdempotentInspect
Get the delivered answer/pack for a job (markdown summary; files arrive by email + status page).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Job id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context beyond annotations: the result is a markdown summary, and files are delivered asynchronously via email and status page. No contradiction with annotations.
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?
One clean sentence with the core action front-loaded and a compact parenthetical clarifying the expected result. No wasted words or redundant restatement of the schema.
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?
For a single-parameter, read-only tool with full schema coverage and annotations, the description is largely complete: it names the resource, the output format, and the delivery mechanism. The main gap is not explicitly explaining when the delivered pack becomes available or how this tool relates to get_audit.
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% and the single required parameter 'id' is already described as 'Job id'. The description does not add extra parameter-level detail, which matches the baseline for fully documented parameters.
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 uses a specific verb ('Get'), a specific resource ('delivered answer/pack for a job'), and concrete content details ('markdown summary; files arrive by email + status page'). It clearly identifies a retrieval operation and distinguishes this from a generic audit fetch.
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?
Usage is implied via the word 'delivered' and the mention of email/status-page delivery, suggesting it is for retrieving a completed result. However, there is no explicit guidance about when to use this tool versus siblings like get_audit, nor any when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_auditsList recent Briefs (admin)ARead-onlyIdempotentInspect
Admin only: list recent jobs. Requires admin_token matching the server MCP_ADMIN_TOKEN (disabled when unset). Never open to the public.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 1-50, default 10. | |
| admin_token | No | Admin token (MCP_ADMIN_TOKEN). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: admin_token must match the server MCP_ADMIN_TOKEN and is disabled when unset, plus an explicit statement that the tool is never public. This goes beyond the annotations.
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 a single compact sentence that front-loads the action and restriction. It is efficient and free of filler, though the terminology mismatch ('jobs' vs 'audits' vs 'Briefs') slightly detracts from structural clarity.
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?
For a simple list tool with two parameters and no output schema, the description covers auth and access scope but does not describe the return format or clarify what 'jobs' refers to. The terminology ambiguity leaves some gaps, though the annotations handle the safety profile.
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 description coverage is 100%, so the baseline is 3. The description adds meaning for admin_token by specifying it must match the server token and is disabled when unset, which is more detail than the schema's 'Admin token (MCP_ADMIN_TOKEN)'. This extra semantic context justifies a 4.
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 'Admin only: list recent jobs', which is a clear verb and resource, and the admin restriction helps distinguish it from public tools. However, the term 'jobs' conflicts with the tool name 'list_audits' and the title 'List recent Briefs (admin)', creating terminology inconsistency that prevents a perfect score.
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?
The description gives access context ('Admin only', 'Never open to the public') and the token requirement, but it does not explain when to use this tool versus siblings like get_audit or get_audit_result. Usage is implied rather than explicitly contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pay_auditPay for a BriefAInspect
Pay a quoted job. method=stripe returns a Stripe Checkout URL (cards + PayNow). method=x402 (default) returns x402 v2 payment requirements (USDC on Base); pay, then call again with the PAYMENT-SIGNATURE header or _meta["x402/payment"] to settle. Work starts only after payment is verified AND settled.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Quoted job id. | |
| method | No | stripe = hosted checkout; x402 = agentic USDC on Base (default). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations describe the operation as readOnly=false/openWorld=true/idempotent=false, and the description harmonizes with that by disclosing the two-phase payment flow and the critical rule that work starts only after payment is verified AND settled. It also explains what each method returns and the header/meta requirement for settlement — substantial behavioral context beyond annotations.
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?
Two tight sentences front-load the core action and then pack the payment flow details efficiently. There is no filler, and every clause adds operational value.
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?
Despite having no output schema, the description states what each method returns and gives the settlement steps an agent must take. Combined with the schema's id and method definitions, an agent has enough information to drive the payment flow 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 covers 100% of parameters, giving the baseline 3. The description adds meaningful method semantics: stripe returns a Stripe Checkout URL and x402 returns v2 payment requirements on Base, plus which method is default. 'id' is not elaborated beyond the schema's 'Quoted job id,' but the schema already covers it.
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?
Description opens with 'Pay a quoted job,' a specific verb+object that clearly identifies the operation. It then distinguishes between stripe and x402 payment paths, and the name/title align with the action.
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?
The description provides clear usage context: pay only a 'quoted job,' and use stripe vs x402 based on desired payment method. It explains the two-step settlement for x402, but no sibling tool is a payment tool, so there are no explicit when-not-to-use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ping_checkRedeem a ping-pack checkAInspect
Run one prepaid registry ping (Quick check, ~5 min, result by email + status page). Needs a pack_id from a ping-pack purchase (100 pings S$150, 90d) — the delivery email must match the purchase email (+tags ok). No pack? POST /api/brief/ping-pack first (see https://oxaide.com/pricing#pings).
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Delivery email — result goes here. | ||
| target | Yes | UEN or entity name to check. | |
| pack_id | Yes | Ping-pack id from the purchase email (pp_xxx). Possession authorizes the redeem. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses the operation's duration ('~5 min'), delivery channel ('result by email + status page'), and key authorization rule ('delivery email must match the purchase email'). It also notes this consumes one prepaid ping, consistent with idempotentHint=false. These details add substantial context beyond the annotations, which only indicate read/write and idempotency hints.
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 front-loaded with the main action and quick-check behavior. The later clauses about purchase requirements and the fallback endpoint are useful, though the pricing detail ('100 pings S$150, 90d') and link are slightly more than strictly necessary. Overall it is compact and each sentence earns its place.
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?
For a tool with three scalar parameters and no output schema, the description completely covers how to call it, what preconditions must hold, what to do if no pack exists, and where results arrive. Since the result is delivered by email and status page rather than via a direct response, this adequately substitutes for an output schema.
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?
The input schema already covers all three parameters with 100% description coverage, including pack_id format ('pp_xxx') and target semantics ('UEN or entity name to check'). The description reinforces email matching and pack possession but does not materially extend parameter meaning beyond the schema, so the baseline of 3 is appropriate.
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 begins with a specific verb and resource: 'Run one prepaid registry ping.' The title 'Redeem a ping-pack check' further clarifies the operation. It does not explicitly distinguish itself from sibling audit tools, but the registry-ping concept and pack-based redemption are distinct enough that an agent can tell the intent.
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?
The description states explicit preconditions: a pack_id is required, the delivery email must match the purchase email, and possession of pack_id authorizes the redeem. It also gives a clear fallback for when the agent lacks a pack: 'POST /api/brief/ping-pack first,' with a pricing link. This is strong when-to-use guidance and leaves little to inference.
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.
6 tool updates
- First observed
create_audit - First observed
get_audit - First observed
get_audit_result - First observed
list_audits - First observed
pay_audit - First observed
ping_check
Related MCP Connectors
Singapore property & financial data APIs for AI agents. 27 MCP tools. x402 micropayments.
Paid web, news, company, product, and geographic search plus clean page reading for agents.
Singapore business directory. Search companies, UENs, and SSIC industry classifications.
Singapore business directory. Search companies, UENs, and SSIC industry classifications.
Related MCP Servers
- FlicenseAqualityCmaintenanceVerified Singapore property, tax, affordability, salary, and location data for AI agents. 17 MCP tools, x402 micropayments, source provenance on every response. Singapore live now, more markets coming. Categories: Finance, Real Estate, Data, Singapore, x402, Payments, Government Data17-
- AlicenseNot gradedqualityCmaintenanceEnables lookup of Singapore companies by UEN or name using ACRA's free open data from data.gov.sg, with tools for UEN validation, exact lookup, and free-text search.MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying Singapore government procurement tender awards from GeBIZ without API keys.15 npmMIT
- AlicenseNot gradedqualityAmaintenanceProvides real-time company verification and corporate intelligence by accessing global registries like UK Companies House, Singapore ACRA, and OpenCorporates. It enables AI agents to perform KYC tasks, retrieve company profiles, and conduct automated risk assessments for due diligence workflows.101 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.