Skip to main content
Glama

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

  1. 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.

  2. 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/dashboard

Deploy: 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

apis/

FastAPI routers (dashboard API, dashboard page, social search)

public/

Dashboard frontend (vanilla JS/CSS)

social_scraper/

Connectors, broker, discovery pipeline, monitoring, storage, LLM client

tests/

Full suite

docs/legacy/

Superseded strategy docs — do not implement from these

Available Tools

17 tools
hdb_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)

ParametersJSON Schema
NameRequiredDescriptionDefault
townYesTown name (e.g. 'ANG MO KIO', 'BISHAN', 'TAMPINES'). Use uppercase.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
postal_codeYesSingapore postal code (6 digits), e.g. 238582

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
loan_typeNohdb=HDB loan, bank_hdb=bank loan for HDB, bank_private=bank loan for private propertybank_private
borrower_ageNoAge of youngest borrower
monthly_incomeYesGross monthly income in SGD (all borrowers combined)
property_priceYesProperty purchase price in SGD
loan_tenure_yearsNoLoan tenure in years (max 30 HDB, 35 private)
housing_loan_countNoNumber of outstanding housing loans including this one
existing_monthly_debtNoTotal existing monthly debt obligations (car loans, credit cards, other mortgages)

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
ageYesCurrent age (16-65)
monthly_incomeYesGross monthly income in SGD
existing_oa_balanceNoExisting CPF OA balance

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo'add' (add GST) or 'remove' (extract GST from inclusive price)add
amountYesAmount in SGD

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
reliefsNoTotal personal reliefs (earned income, spouse, child)
deductionsNoTotal deductions (CPF, expenses, donations)
is_residentNoTax residency status
annual_incomeYesGross annual income in SGD

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 5, max 20)
postal_codeYesSingapore postal code (6 digits)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_postal_lookupAInspect

Look up Singapore postal code to find the district number, district name, and area names. Covers all 28 postal districts. (FREE)

ParametersJSON Schema
NameRequiredDescriptionDefault
postal_codeYesSingapore postal code (6 digits), e.g. 238801

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
townNoHDB town (e.g. 'TAMPINES'). Required for HDB analysis.
regionNoRegion/country code. SG supported now; HK/AE/AU/JP planned.SG
flat_typeNoHDB flat type (e.g. '4 ROOM')
postal_codeNoPostal code for location intelligence (optional)
borrower_ageNoAge of youngest borrower
monthly_rentNoExpected monthly rent in SGD (optional, for yield analysis)
buyer_profileNoSC
property_typeNohdb
monthly_incomeNoGross monthly income for affordability check (optional)
property_countNoNumber of properties owned including this one
property_priceYesProperty price / asking price in SGD
loan_tenure_yearsNoLoan tenure in years
existing_monthly_debtNoExisting monthly debt obligations

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesSale price or monthly rent in SGD
property_typeNohdb
transaction_typeYesType of property transaction
is_seller_landlordNotrue = seller/landlord side, false = buyer/tenant side

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
sqftNoFloor area in square feet
townNoHDB town (e.g. 'TAMPINES') or area name
tenureNoFreehold, 99-year, 999-year, etc.
top_yearNoYear of Temporary Occupation Permit (TOP)
flat_typeNoHDB flat type (e.g. '4 ROOM') or unit type
buyer_notesNoAny specific concerns or goals
postal_codeNoPostal code for location intelligence
monthly_rentNoExpected monthly rent (optional)
project_nameNoCondo/project name (for private property)
buyer_profileNoSC
property_typeNohdb, private, condo, landedhdb
monthly_incomeNoGross monthly income
property_countNo
property_priceYesAsking price in SGD
existing_monthly_debtNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNoRegion/country code. SG supported now; HK/AE/AU/JP planned.SG
candidatesYesList of candidate properties to evaluate
buyer_profileNoSC
monthly_incomeNoGross monthly income for affordability (optional)
existing_monthly_debtNoExisting monthly debt obligations

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
monthly_rentYesExpected monthly rental income in SGD
property_priceYesProperty purchase price in SGD
annual_expensesNoOther annual expenses (optional)
maintenance_monthlyNoMonthly maintenance cost (optional)
management_fee_monthlyNoMonthly property management fee (optional)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesJob title or keyword (e.g. 'equity analyst', 'software engineer', 'project manager')
limitNoMax job listings to scan

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesProperty purchase price in SGD, e.g. 1500000
buyer_profileNoSC
property_typeNoresidential
property_countNoNumber of residential properties owned including this one

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 17 tool updatesv1.0.0
    • First observedhdb_resale_median
    • First observedhdb_resale_search
    • First observedsg_address_intel
    • First observedsg_affordability
    • First observedsg_cpf_housing
    • First observedsg_gst
    • First observedsg_income_tax
    • First observedsg_mrt_near
    • First observedsg_mrt_search
    • First observedsg_postal_lookup
    • First observedsg_property_analyze
    • First observedsg_property_commission
    • First observedsg_property_pitch
    • First observedsg_property_rank
    • First observedsg_rental_yield
    • First observedsg_salary_benchmark
    • First observedsg_stamp_duty

TDQS

A3.9/5.0
Disambiguation4/5

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).

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessUnresponsive

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    62 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
  • A
    license
    C
    quality
    B
    maintenance
    One 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.
    69
    30
    3
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    55+ 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

Latest Blog Posts

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