Bounty-api
The Bounty API server provides Singapore property/financial intelligence and general research APIs, using an x402 micropayment model (pay-per-call in USDC on Base) with no API keys or subscriptions required.
Free Endpoints
Stamp Duty: Calculate BSD + ABSD by buyer profile (SC/SPR/Foreigner/Entity), property type, and count — verified against IRAS
Postal Lookup: Get district, area, and name from a 6-digit Singapore postal code
Address Intelligence: Full details including URA planning area, market region (CCR/RCR/OCR), HDB town, coordinates, and nearest 5 MRT stations with walking distance
MRT Nearby / MRT Search: Find nearest MRT/LRT stations to a postal code, or search stations by name
Income Tax: Singapore resident (progressive) and non-resident (flat) tax with reliefs and deductions
GST: Add or remove Singapore 9% GST
Property Commission: Estimate agent commission for sale or rental (HDB, private, landed)
CPF Housing: Estimate CPF OA accumulation for housing use
Salary Benchmark: Median and percentile salaries from live MyCareersFuture job postings
Mortgage Calculation: Standard amortization calculation
Currency Conversion: Convert currencies using ECB rates
Paid Endpoints (USDC micropayments)
Affordability: Loan affordability under MAS TDSR/MSR rules with stress-tested rates and LTV limits
Rental Yield: Gross/net yield, cap rate, cashflow, and break-even years
HDB Resale Median: Median resale prices by flat type and town
HDB Resale Search: Search transactions with filters (town, flat type, price range)
Property Analyze: Comprehensive analysis combining stamp duty, HDB comparables, rental yield, affordability, and location — with verdict and risk flags
Property Rank: Rank multiple candidate properties across value, yield, affordability, and location dimensions
Property Pitch: Generate a complete one-page investment pitch with plain-English recommendation
Company Intelligence ($0.05): Tech stack, contacts, social links, SSL/security headers
News Search ($0.01): Structured current news by keyword
Job Search ($0.02): Job postings and hiring signals
App Reviews ($0.02): Recent App Store reviews with rating samples and topic flags
Integration: Available via direct REST API or as an MCP (Model Context Protocol) package for AI agent integration.
Provides access to recent App Store reviews for applications, including ratings and topic flags.
Bounty
A research system that turns online conversations into cited findings. Bounty collects posts, comments, and replies from YouTube, Reddit, TikTok, Instagram, and X; discovers rising topics via Google Trends; and uses LLM analysis to extract signals — pain points, adoption patterns, objections, belief shifts — each backed by quotes and source links. If evidence is thin, it says so.
Users: investors (unknown-unknown discovery, pain-point research around companies), marketers (creative angles, competitor mentions), product teams (feature gaps, user complaints). The engine is horizontal; investing is the first lens, not a hardwired filter.
Live at bountyapi.com/dashboard (token-gated).
Read this first
AGENTS.md— operating manual: architecture, the two-pipeline warning, commands, deploy flow, credentials map, hard rules, known-broken list. Any agent (or human) working in this repo must read this before making changes.STATE.md— product philosophy, what's built, gaps, priority order.
Related MCP server: quanta-x402-mcp
Quickstart
python -m pytest tests/ -x -q # 189+ tests, must be green before every push
python -m uvicorn app:app --port 8000 # local dev; BOUNTY_ENV=development bypasses token gate
# open http://localhost:8000/dashboardDeploy: push to main → Railway auto-builds → bountyapi.com. Nothing else.
What this repo is NOT
Not the x402/USDC data-API marketplace — that code exists but is deferred (see
docs/legacy/)Not Singapore property/real-estate tooling — legacy, deferred
Not an MCP directory play — legacy, deferred
Old strategy and marketing documents live in docs/legacy/ and describe that earlier direction. They are kept for history only.
Layout
Path | What |
| FastAPI routers (dashboard API, dashboard page, social search) |
| Dashboard frontend (vanilla JS/CSS) |
| Connectors, broker, discovery pipeline, monitoring, storage, LLM client |
| Full suite |
| Superseded strategy docs — do not implement from these |
Available Tools
17 toolshdb_resale_medianAInspect
Get HDB resale price data for a Singapore town. Returns median prices by flat type (2 ROOM through EXECUTIVE) with transaction counts. Data sourced from data.gov.sg. (PAID — auto-pay if wallet configured)
| Name | Required | Description | Default |
|---|---|---|---|
| town | Yes | Town name (e.g. 'ANG MO KIO', 'BISHAN', 'TAMPINES'). Use uppercase. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the tool is PAID and auto-pays if configured, which is a key behavioral trait. However, it omits other traits like rate limits, authorization requirements, or that it is read-only. The data source mention adds some transparency.
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 concise: three sentences covering purpose, return details, and payment. No fluff or redundancy. Information is front-loaded and easy to parse.
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 tool with one parameter and no output schema, the description covers the key aspects: what is returned (median prices, flat types, counts), data source, and payment model. It does not specify error handling or edge cases, but these are minor given the simplicity.
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% (the only parameter is described in the schema). The description adds no additional meaning beyond the schema's explicit examples and uppercase instruction. The baseline score 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 clearly states the tool gets HDB resale median prices by town, specifying the exact metrics (median prices by flat type, transaction counts). This is specific and distinguishes from sibling 'hdb_resale_search' which likely handles individual transactions.
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 no guidance on when to use this tool versus alternatives like 'hdb_resale_search'. It mentions payment but no explicit when/when-not context. Usage context must be inferred from the tool name and sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hdb_resale_searchBInspect
Search HDB resale transactions with filters. Returns individual transaction records with flat type, storey, area, and price. (PAID — auto-pay if wallet configured)
| Name | Required | Description | Default |
|---|---|---|---|
| town | No | Filter by town (optional) | |
| limit | No | Max results (default 20, max 100) | |
| flat_type | No | Filter by flat type, e.g. '4 ROOM' (optional) | |
| max_price | No | Maximum price in SGD (optional) | |
| min_price | No | Minimum price in SGD (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It adds the cost context (PAID — auto-pay) which is useful, but does not disclose other behaviors such as rate limits, idempotency, or what happens if the wallet is not configured. The transparency is adequate but not comprehensive.
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 plus a parenthetical note, which is efficient and front-loaded. The first sentence states the core purpose, and the second lists output fields. Some minor redundancy with the schema exists, but overall it earns its space.
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 there is no output schema and no annotations, the description partially compensates by listing return fields and noting the payment model. However, it omits details like pagination (implied by limit param), error handling, or behavior when filters are combined. It is adequate but not fully complete for the tool's complexity.
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 has 100% coverage, with all five parameters described. The description only says 'with filters' without adding any meaning beyond what the schema already provides. Baseline score of 3 is appropriate as the schema does the heavy lifting.
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 the specific verb 'Search' and clearly identifies the resource as 'HDB resale transactions'. It lists the return fields (flat type, storey, area, price), distinguishing it from the sibling 'hdb_resale_median' which likely provides aggregated data. The purpose is unambiguous and well-defined.
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 no guidance on when to use this tool versus alternatives. The only usage-related note is about payment (PAID — auto-pay if wallet configured), but it does not suggest strategic scenarios, prerequisites, or exclusions. There is no explicit 'when to use' or 'when not to use' information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_address_intelAInspect
Full address intelligence for a Singapore postal code. Returns district, planning area (URA Master Plan), market region (CCR/RCR/OCR), HDB town, approximate coordinates, and the 5 nearest MRT stations with walking distance and time. 140+ MRT stations in database covering all 6 lines. (FREE)
| Name | Required | Description | Default |
|---|---|---|---|
| postal_code | Yes | Singapore postal code (6 digits), e.g. 238582 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully bears the burden of transparency. It details the return data comprehensively (district, planning area, etc., plus 140+ MRT stations covering all lines). This provides good insight into tool behavior. Minor lacking: no mention of error handling for invalid postal codes, but acceptable.
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 extremely concise: one main sentence listing returns, plus two short clarifications. It is front-loaded with the core purpose. No unnecessary words.
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 no output schema, the description adequately lists what the tool returns. It covers the key aspects of address intelligence. However, it could clarify the format of coordinates or MRT distance/time, but the description is sufficiently complete for an agent to understand the tool's output.
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 schema already describes the single 'postal_code' parameter with format and example. The tool description adds context about what the parameter's value will yield (the full intelligence), but it does not add new semantic detail about the parameter itself beyond the schema. Baseline 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 tool name 'sg_address_intel' combined with the description clearly states it provides full address intelligence for a Singapore postal code. The list of returned items (district, planning area, market region, HDB town, coordinates, nearest MRT stations) is specific and distinguishes it from siblings like 'sg_mrt_near' which focus only on MRT stations.
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 does not specify when to use this tool versus alternative tools in the sibling list. For example, it doesn't explain differences from 'sg_postal_lookup' or 'sg_mrt_near'. The only contextual hint is '(FREE)' indicating no cost, but no usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_affordabilityAInspect
Calculate Singapore property loan affordability under MAS TDSR/MSR framework. Checks if a borrower can afford a property based on Total Debt Servicing Ratio (55%), Mortgage Servicing Ratio (30% for HDB), LTV limits, and stress-tested interest rates. Returns max affordable loan and property price. (PAID — auto-pay if wallet configured)
| Name | Required | Description | Default |
|---|---|---|---|
| loan_type | No | hdb=HDB loan, bank_hdb=bank loan for HDB, bank_private=bank loan for private property | bank_private |
| borrower_age | No | Age of youngest borrower | |
| monthly_income | Yes | Gross monthly income in SGD (all borrowers combined) | |
| property_price | Yes | Property purchase price in SGD | |
| loan_tenure_years | No | Loan tenure in years (max 30 HDB, 35 private) | |
| housing_loan_count | No | Number of outstanding housing loans including this one | |
| existing_monthly_debt | No | Total existing monthly debt obligations (car loans, credit cards, other mortgages) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It clearly states the tool is paid ('PAID — auto-pay if wallet configured') and outlines the regulatory framework used. However, it does not disclose other behavioral traits like idempotency, caching, or rate limits.
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 concise with two sentences and a parenthetical. It front-loads the core purpose. However, it could be slightly more structured by separating the output description ('Returns max affordable loan and property price') into a clearer format.
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 complexity (7 parameters, no output schema), the description provides adequate but not complete context. It explains the calculation framework but does not describe the output format, error scenarios, or edge cases (e.g., invalid loan_type, age limits). A more complete description would help an agent use this tool effectively.
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 baseline is 3. The description adds context about the TDSR and MSR ratios, which relate to the 'loan_type' parameter. However, it does not explain individual parameters beyond the schema, such as the meaning of 'housing_loan_count' or 'existing_monthly_debt' in the context of the calculation.
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 the tool calculates Singapore property loan affordability under MAS TDSR/MSR framework, specifying the key ratios (TDSR 55%, MSR 30% for HDB), LTV limits, and stress-tested interest rates. It distinguishes itself from sibling tools which focus on other property aspects like stamp duty, rental yield, or HDB resale prices.
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 the tool is for calculating affordability but does not explicitly state when to use it versus alternatives. It does not mention when not to use it, prerequisites, or context that would help an agent select it among siblings like sg_property_analyze or sg_cpf_housing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_cpf_housingBInspect
Estimate CPF Ordinary Account (OA) accumulation for housing use. Shows monthly OA contribution by age band, 3-year and 5-year projected balances at 2.5% interest. FREE
| Name | Required | Description | Default |
|---|---|---|---|
| age | Yes | Current age (16-65) | |
| monthly_income | Yes | Gross monthly income in SGD | |
| existing_oa_balance | No | Existing CPF OA balance |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions the interest rate but omits assumptions, limitations (e.g., CPF contribution caps, constant income), and whether it is read-only. This is insufficient for a tool that performs sensitive calculations.
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 wasted words. It front-loads the purpose and efficiently lists outputs. The 'FREE' tag is minor but does not detract.
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 simplicity (3 parameters, no output schema), the description adequately covers outputs and interest rate. However, it lacks details on contribution calculation rules and assumptions, so it is not fully complete.
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 schema covers all parameters (100% coverage). The description adds that age is used for banding and mentions projections, but does not elaborate on how each parameter affects the output. Baseline 3 is appropriate as schema does the heavy lifting.
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 the tool estimates CPF OA accumulation for housing, specifying outputs like monthly contribution and projected balances. It is specific about the verb and resource, though it does not explicitly differentiate from sibling tools like sg_affordability.
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?
No guidance is provided on when to use this tool versus alternatives such as sg_affordability or sg_stamp_duty. The context is implied but lacks explicit when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_gstAInspect
Add or remove Singapore GST (9% from 1 Jan 2024). mode='add' calculates GST on a price; mode='remove' extracts GST from a GST-inclusive price. FREE
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 'add' (add GST) or 'remove' (extract GST from inclusive price) | add |
| amount | Yes | Amount in SGD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the mode behavior and GST rate (9% from 1 Jan 2024). Adequate for a stateless calculation tool.
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 sentences with no waste. First sentence states action and rate, second explains modes. The 'FREE' tag is minor but does not detract.
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?
Simple tool with no output schema; description covers purpose and parameters sufficiently. Could mention output format but not necessary for clarity.
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% with descriptions for both parameters. Description adds value by specifying the GST rate and date context beyond schema.
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 the tool adds or removes Singapore GST with specific rate and date. It distinguishes itself from sibling tools which are about property, HDB, salary, etc.
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 explains when to use 'add' vs 'remove' mode with clear behavior. It does not include explicit exclusions but is sufficient for a simple calculator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_income_taxAInspect
Calculate Singapore individual income tax. Resident progressive rates (0-22%, YA 2024+). Non-residents: 15% flat or progressive. Returns marginal breakdown, effective rate, and tax payable. FREE
| Name | Required | Description | Default |
|---|---|---|---|
| reliefs | No | Total personal reliefs (earned income, spouse, child) | |
| deductions | No | Total deductions (CPF, expenses, donations) | |
| is_resident | No | Tax residency status | |
| annual_income | Yes | Gross annual income in SGD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It states the tool is free and returns marginal breakdown, effective rate, and tax payable, but does not disclose any side effects, rate limits, or prerequisites (e.g., valid income range). For a simple calculator, this is adequate but not comprehensive.
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, front-loading the purpose and concisely summarizing rates and outputs with no extraneous information.
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 no output schema, the description explains return values (marginal breakdown, effective rate, tax payable). It covers all four parameters implicitly through rate context, but lacks explicit mention of income limits or error handling. Overall, it is sufficiently complete for a straightforward calculation tool.
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 describes each parameter. The description adds context about tax rates and residency, but does not provide additional semantics beyond the schema. 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 clearly states the tool calculates Singapore individual income tax, specifies rates for residents and non-residents, and lists return values. It distinguishes from sibling tools like sg_gst and sg_stamp_duty, which cover different tax types.
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 indicates the tool is for Singapore income tax calculations, with rate details for residents and non-residents. While it doesn't explicitly state when not to use or list alternatives, the sibling context (e.g., sg_gst) makes the usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_mrt_nearAInspect
Find nearest MRT/LRT stations to a Singapore postal code. Returns station name, MRT lines, distance in km, and estimated walking time. Free endpoint. (FREE)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 5, max 20) | |
| postal_code | Yes | Singapore postal code (6 digits) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, description carries full burden. It discloses free access and return fields, but omits rate limits, authentication needs, or read-only nature. Adequate for a simple query tool.
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 sentences, front-loaded with primary purpose, no wasted words. Efficient and clear.
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 low complexity and complete schema coverage, description adequately covers inputs and outputs. Could mention error handling or result limits, but sufficient for typical use.
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% with descriptions for both parameters. Description adds no extra meaning beyond the schema, so baseline 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 clearly states it finds nearest MRT/LRT stations to a Singapore postal code, specifies return fields, and distinguishes from sibling sg_mrt_search which likely searches by station name.
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 use when you have a postal code and need stations, but lacks explicit when-not-to-use or alternative tool guidance. The 'FREE' note is helpful but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_mrt_searchAInspect
Search MRT stations by name. Returns station name, MRT line codes, and coordinates. Covers all 140+ stations across 6 MRT lines. (FREE)
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Station name to search (partial match), e.g. 'Bishan' or 'Tamp' | |
| limit | No | Max results (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions coverage (140+ stations, 6 lines) and 'FREE' cost hint. Lacks details on auth, read-only nature, pagination, or response structure.
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 concise sentences, front-loaded with key information. No wasted words.
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 search tool with 2 parameters and no output schema, description adequately explains return values (name, line codes, coordinates) and coverage. Sufficient for agent to invoke 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 both parameters with descriptions. Description adds value with partial match clarification, example values, and default limit. More helpful than schema alone.
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?
Clearly states 'Search MRT stations by name' with specific verb and resource. Returns station name, line codes, coordinates. Distinguishes from sibling sg_mrt_near which likely does proximity search.
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?
Implied usage for searching by name, but no explicit when/not to use or alternatives. No guidance on when to use sg_mrt_near instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_postal_lookupAInspect
Look up Singapore postal code to find the district number, district name, and area names. Covers all 28 postal districts. (FREE)
| Name | Required | Description | Default |
|---|---|---|---|
| postal_code | Yes | Singapore postal code (6 digits), e.g. 238801 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It states the tool is free and covers all districts, which adds context, but it does not disclose any limitations, rate limits, authentication needs, or potential errors. For a simple lookup, this is adequate but could be more transparent.
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 extremely concise: two sentences that front-load the core action and outputs. Every word contributes to understanding, with no redundancy. It efficiently conveys purpose, scope, and cost.
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 simplicity (one parameter, no output schema) and the context signals (100% schema coverage, no nested objects), the description is complete. It specifies what information is returned (district number, name, area names) and that it covers all 28 districts. No additional details are necessary for correct usage.
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 describes the parameter 'postal_code' with format details (6 digits, example). The description does not add additional meaning beyond what the schema provides. With 100% schema coverage, a baseline score 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 clearly states the tool's purpose: 'Look up Singapore postal code to find the district number, district name, and area names.' It uses a specific verb ('look up') and resource ('postal code'), and the mention of covering all 28 districts distinguishes it from sibling tools that focus on HDB, property, or MRT data.
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 explains the tool's scope ('Covers all 28 postal districts') and notes it is free, but does not explicitly state when to use this tool over alternatives or provide exclusion criteria. While the sibling tools are distinctly different, the lack of direct usage guidance makes this dimension adequate but not strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_property_analyzeAInspect
COMPLETE property investment analysis in one call. Combines stamp duty (IRAS), HDB transaction comparables (data.gov.sg), rental yield, MAS TDSR/MSR affordability check, and MRT location intelligence. Returns a verdict with risk flags. This is the most comprehensive Singapore property analysis endpoint available — no agent can replicate this by scraping. Region parameter supports future expansion (SG now, HK/AE/AU/JP planned). (PAID — auto-pay if wallet configured)
| Name | Required | Description | Default |
|---|---|---|---|
| town | No | HDB town (e.g. 'TAMPINES'). Required for HDB analysis. | |
| region | No | Region/country code. SG supported now; HK/AE/AU/JP planned. | SG |
| flat_type | No | HDB flat type (e.g. '4 ROOM') | |
| postal_code | No | Postal code for location intelligence (optional) | |
| borrower_age | No | Age of youngest borrower | |
| monthly_rent | No | Expected monthly rent in SGD (optional, for yield analysis) | |
| buyer_profile | No | SC | |
| property_type | No | hdb | |
| monthly_income | No | Gross monthly income for affordability check (optional) | |
| property_count | No | Number of properties owned including this one | |
| property_price | Yes | Property price / asking price in SGD | |
| loan_tenure_years | No | Loan tenure in years | |
| existing_monthly_debt | No | Existing monthly debt obligations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses paid nature ('PAID — auto-pay if wallet configured'), data sources, and output (verdict with risk flags). This provides critical behavioral context beyond what the schema gives.
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 dense and front-loaded with key value proposition. Minimal fluff, though the mention of future region expansion could be seen as slightly extraneous.
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 13 parameters, no output schema, and no annotations, the description covers scope, data sources, paid status, and output nature. Lacks specifics on response format but is adequate for a comprehensive analysis tool.
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 85%, so parameters are already well-documented. The description adds overview context but doesn't provide additional semantics for individual parameters beyond the schema's existing descriptions.
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 states 'COMPLETE property investment analysis in one call' and lists specific components (stamp duty, HDB comparables, rental yield, etc.), clearly distinguishing it from sibling tools like sg_stamp_duty, sg_affordability, which are more focused.
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 use for comprehensive analysis and notes it's the most comprehensive endpoint, but does not explicitly state when to use sibling tools instead or exclude scenarios. However, the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_property_commissionBInspect
Estimate Singapore property agent commission for sale or rental transactions. HDB, private, landed. Rates are market norms (CEA), not legally fixed. FREE
| Name | Required | Description | Default |
|---|---|---|---|
| price | Yes | Sale price or monthly rent in SGD | |
| property_type | No | hdb | |
| transaction_type | Yes | Type of property transaction | |
| is_seller_landlord | No | true = seller/landlord side, false = buyer/tenant side |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that rates are market norms (CEA) and not legally fixed, which is useful. However, lacks details on how estimates are derived, if they vary by agent, or any disclaimers about accuracy. No annotations to supplement.
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?
Very concise, front-loaded with 'Estimate'. One sentence plus a few phrases. The 'FREE' at the end is extraneous but not harmful. Could be slightly more structured.
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?
Lacks output description: does not specify if commission is returned as a percentage or amount, or both. With 4 parameters and no output schema, the description should clarify the return format for agent decision-making.
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 75% with 3 of 4 parameters described. The description adds the enum values for property_type (HDB, private, landed) and transaction_type (sale, rental) but does not significantly enhance parameter meaning beyond the schema.
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 the tool estimates Singapore property agent commission for sale or rental transactions, covering HDB, private, landed. It is distinct from siblings like sg_rental_yield or sg_property_analyze, which focus on other metrics.
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?
No guidance on when to use this vs alternative tools. It does not mention prerequisites, exclusions, or context such as when sg_rental_yield might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_property_pitchAInspect
Generate a complete property investment pitch — the kind of one-page analysis a property agent presents to a client. Combines price fairness vs transaction comps, stamp duty breakdown, MAS affordability check, rental yield projection, location intelligence (MRT, district, region), tenure/lease risk assessment, and a plain-English verdict with recommendation. This is the highest-value output for property agents and investors. (PAID — auto-pay if wallet configured)
| Name | Required | Description | Default |
|---|---|---|---|
| sqft | No | Floor area in square feet | |
| town | No | HDB town (e.g. 'TAMPINES') or area name | |
| tenure | No | Freehold, 99-year, 999-year, etc. | |
| top_year | No | Year of Temporary Occupation Permit (TOP) | |
| flat_type | No | HDB flat type (e.g. '4 ROOM') or unit type | |
| buyer_notes | No | Any specific concerns or goals | |
| postal_code | No | Postal code for location intelligence | |
| monthly_rent | No | Expected monthly rent (optional) | |
| project_name | No | Condo/project name (for private property) | |
| buyer_profile | No | SC | |
| property_type | No | hdb, private, condo, landed | hdb |
| monthly_income | No | Gross monthly income | |
| property_count | No | ||
| property_price | Yes | Asking price in SGD | |
| existing_monthly_debt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool is paid and auto-pays if a wallet is configured, which is critical for an AI agent to understand before invocation. It also describes the broad behavioral output (a pitch combining multiple analyses). It does not explicitly state it is read-only or list rate limits, but the paid nature implies no destructive action. The transparency is good given the complexity.
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 extremely concise: three sentences that front-load the core purpose, list key components, and note the paid nature. Every sentence adds value with no redundancy.
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 complexity (15 parameters, no output schema), the description adequately outlines the tool's purpose and inputs. However, it does not describe the output format or structure beyond 'one-page analysis' and 'plain-English verdict'. With no output schema, more detail on the return value would improve completeness. The paid aspect is noted, but prerequisites (wallet configuration) are only implied.
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 high (80%), so baseline is 3. The description adds meaning by explaining how the parameters are used together ('Combines price fairness... stamp duty breakdown, MAS affordability check...'), beyond the individual field descriptions. This helps an agent understand which parameters are relevant for the pitch output.
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 the tool's purpose ('Generate a complete property investment pitch') and specifies what it combines (price fairness, stamp duty, MAS affordability, rental yield, location intelligence, tenure risk, verdict). It also distinguishes itself from siblings by claiming to be the 'highest-value output for property agents and investors'.
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 use when a comprehensive property pitch is needed, calling it a 'one-page analysis' and 'highest-value output'. It mentions a paid model, but does not explicitly list when to use alternatives like sg_property_analyze or sg_affordability. However, the context is clear enough for an agent to infer this is the go-to for a full pitch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_property_rankAInspect
Rank multiple candidate properties by investment value. Accepts properties from ANY source (user, web search, listing portals) and enriches each with stamp duty, transaction comps, rental yield, affordability, and location data. Returns ranked list with transparent scores (0-100) across 4 dimensions: value vs comps, rental yield, affordability, location. This is the decision layer — an agent gathers listings anywhere, Bounty tells it which one is best. (PAID — auto-pay if wallet configured)
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Region/country code. SG supported now; HK/AE/AU/JP planned. | SG |
| candidates | Yes | List of candidate properties to evaluate | |
| buyer_profile | No | SC | |
| monthly_income | No | Gross monthly income for affordability (optional) | |
| existing_monthly_debt | No | Existing monthly debt obligations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It details enrichment with stamp duty, transaction comps, rental yield, affordability, location data, and returns ranked scores across 4 dimensions. It also flags PAID status. No contradictions.
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 concise (4 sentences) and front-loaded with the main purpose. It efficiently covers enrichment, scoring dimensions, and use case. The PAID note is relevant but could be slightly integrated.
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?
With 5 parameters, nested input, and no output schema, the description explains the return value (ranked list with scores) but lacks details on output structure or data format. It is adequate for a ranking tool but not fully complete given the complexity.
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 80%. The description adds context to some parameters like region (SG supported now, others planned) and candidates (max 50, min 1). However, it doesn't elaborate on parameter details beyond what the schema already provides, so baseline 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 clearly states the tool ranks multiple candidate properties by investment value, accepts properties from any source, and enriches with multiple data dimensions. It distinguishes itself as the 'decision layer' versus sibling tools like sg_property_analyze which likely analyze a single property.
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 says this is the decision layer after gathering listings, and mentions PAID/auto-pay. It doesn't explicitly exclude use cases, but the context and sibling names imply when to use (after gathering) and not to use (before or for single property analysis).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_rental_yieldAInspect
Calculate rental investment metrics for a Singapore property. Returns gross yield, net yield, cap rate, price-to-rent ratio, monthly cashflow, and years to break even. (PAID — auto-pay if wallet configured)
| Name | Required | Description | Default |
|---|---|---|---|
| monthly_rent | Yes | Expected monthly rental income in SGD | |
| property_price | Yes | Property purchase price in SGD | |
| annual_expenses | No | Other annual expenses (optional) | |
| maintenance_monthly | No | Monthly maintenance cost (optional) | |
| management_fee_monthly | No | Monthly property management fee (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the tool is paid and auto-payment behavior, which is helpful. But it does not mention whether the tool is read-only, has side effects, or any other behavioral traits.
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 concise sentences convey the purpose and payment requirement without fluff. Every word 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 main actions and outputs, and the payment disclosure is critical for agent decision-making. It lacks assumptions or examples, but given the tool's simplicity, it is fairly complete.
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 parameters are already well-described. The description adds the computed metrics, which provides context but does not enhance parameter meaning beyond the schema.
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 it calculates rental investment metrics for Singapore property and lists specific outputs (gross yield, net yield, cap rate, etc.). This distinguishes it from sibling tools like hdb_resale_median or sg_property_analyze, which focus on other aspects.
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 mentions it's a paid tool with auto-pay if wallet configured, giving context on when it can be used. However, it does not explicitly state when to use this tool versus alternatives or provide any usage restrictions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_salary_benchmarkAInspect
Benchmark salary for a Singapore role using live MyCareersFuture (government job portal) data. Returns median, percentile ranges, annual equivalents from real employer-posted salary ranges. Not self-reported — actual job postings. FREE
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Job title or keyword (e.g. 'equity analyst', 'software engineer', 'project manager') | |
| limit | No | Max job listings to scan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses data source (MyCareersFuture, live, not self-reported), nature (real employer-posted), and cost (FREE). Missing details like rate limits or update frequency, but overall transparent.
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 sentences, no fluff. Action verb 'Benchmark' is front-loaded. Every word adds 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?
Description is adequate for a simple lookup tool, but lacks details about output format (e.g., JSON structure, exact percentile fields). With no output schema, more explicit expectations would improve completeness.
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 parameters are already described. Description does not add extra meaning beyond schema (e.g., role as job title, limit as max listings). Baseline 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?
Description clearly states the tool benchmarks salary for a Singapore role using live government job portal data. It specifies outputs (median, percentile ranges, annual equivalents) and highlights differentiation from self-reported data. No sibling tools overlap, making it distinct.
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?
Context is clear: use for Singapore salary benchmarking. No explicit when-not or alternatives given, but no sibling salary tools exist. Guidance is adequate for the tool's unique function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sg_stamp_dutyAInspect
Calculate Singapore property stamp duty (BSD + ABSD). Returns total stamp duty, effective rate, and breakdown by tier. Buyer profiles: SC (Singapore Citizen), SPR (Permanent Resident), FR (Foreigner), entity, developer, trustee. Rates verified against IRAS (iras.gov.sg). (FREE)
| Name | Required | Description | Default |
|---|---|---|---|
| price | Yes | Property purchase price in SGD, e.g. 1500000 | |
| buyer_profile | No | SC | |
| property_type | No | residential | |
| property_count | No | Number of residential properties owned including this one |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions 'Rates verified against IRAS' and 'FREE', which add some transparency about data source and cost. However, it does not disclose if the tool makes external calls, has rate limits, or returns cached data. The output format is not described, leaving some uncertainty.
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 concise with four short sentences covering purpose, return values, profiles, and source verification. It is front-loaded and avoids unnecessary details. Slight improvement could group related info more structurally.
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 has 4 parameters and no output schema, the description is moderately complete. It covers the core purpose and key profiles, but lacks explanation of property type differentiation, how property_count affects ABSD, and examples of return data. Sibling tools are diverse, so no direct conflict, but more context on output would help.
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 50%, with descriptions only for 'price' and 'property_count'. The description adds value by defining the buyer_profile acronyms (SC, SPR, FR), but does not explain 'property_type' or the effect of 'property_count' beyond the schema's description. Overall, it compensates partially for the missing schema descriptions.
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 specifies the tool calculates Singapore property stamp duty (BSD + ABSD) and returns total, effective rate, and breakdown. It names the resource and action precisely, distinguishing it from sibling tools like sg_income_tax or sg_rental_yield.
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 by stating it calculates stamp duty, but does not explicitly state when to use vs alternatives or provide exclusions. There is no guidance on when not to use this tool, which leaves room for misinterpretation.
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. Dates show when Glama detected each change.
17 tool updates
v1.0.0- First observed
hdb_resale_median - First observed
hdb_resale_search - First observed
sg_address_intel - First observed
sg_affordability - First observed
sg_cpf_housing - First observed
sg_gst - First observed
sg_income_tax - First observed
sg_mrt_near - First observed
sg_mrt_search - First observed
sg_postal_lookup - First observed
sg_property_analyze - First observed
sg_property_commission - First observed
sg_property_pitch - First observed
sg_property_rank - First observed
sg_rental_yield - First observed
sg_salary_benchmark - First observed
sg_stamp_duty
TDQS
Tools are generally distinct, with clearly different purposes such as HDB transactions, MRT stations, salary benchmarking, and stamp duty. However, sg_property_analyze, sg_property_pitch, and sg_property_rank have overlapping roles in property analysis, though their descriptions differentiate them (comprehensive analysis vs. pitch generation vs. ranking).
All tool names follow a consistent pattern: for Singapore-specific tools, 'sg_' prefix with domain and action (e.g., sg_gst, sg_mrt_search), and for HDB tools, 'hdb_' prefix with action (e.g., hdb_resale_median). Lowercase with underscores throughout.
With 17 tools covering a broad range of Singapore property and financial topics, the count is appropriate. Each tool serves a specific function without unnecessary redundancy, and the set feels well-scoped for the intended domain.
The toolset covers major areas of Singapore property investment: transactions, stamp duty, affordability, rental yield, location intelligence, and salary benchmarking. Minor gaps exist (e.g., property tax, renovation costs), but the core workflows are well-supported, especially with the comprehensive sg_property_analyze tool.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Agent-first data marketplace — AI agents search, purchase, and sell datasets via MCP.
Parsed public-domain market data for AI agents, priced below DIY inference cost, paid via x402.
Pay-per-call data APIs for AI agents. USDC on Base via x402. 33 tools, no signup.
Real-time data feeds for AI agents with USDC micropayments on Base for premium tools.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenance62 real-time data tools for AI agents via MCP. Finance, crypto, FMCSA, sanctions, courts, weather, vehicles, cybersecurity. One bearer token, one bill. Free tier available.MIT
- FlicenseNot gradedqualityCmaintenancePay-per-call structured data for autonomous AI agents. x402-metered, MCP-native.-
- AlicenseCqualityBmaintenanceOne MCP install that lets your AI agents discover and pay (x402 micropayments, USDC on Base + Solana) for 66 specialized real-time intelligence APIs - finance, crypto, insurance, immigration, legal, markets and more. 68 tools, pey-per-query, no subscription.69303Apache 2.0
- AlicenseNot gradedqualityBmaintenance55+ pay-per-call tools for AI agents over MCP: live telemetry, blockchain/on-chain checks, environmental, transit, finance, and network utilities. No API key or signup — agents pay per request with x402 USDC micropayments (Base and Solana).MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vncent786/bounty-api'
If you have feedback or need assistance with the MCP directory API, please join our Discord server