# io.github.vncent786/bounty-api (npm · bountyapi-mcp)

Singapore property & financial data APIs for AI agents. 27 MCP tools. x402 micropayments.

- Trust score: 65/100 (medium)
- Change this week: +20
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `bountyapi.com`: 62/100, [markdown](https://verifymcp.io/servers/vncent786-bounty-api/bountyapi.md), [page](https://verifymcp.io/servers/vncent786-bounty-api/bountyapi)
- npm · `bountyapi-mcp`: 65/100 (this document), [markdown](https://verifymcp.io/servers/vncent786-bounty-api/bountyapi-mcp.md), [page](https://verifymcp.io/servers/vncent786-bounty-api/bountyapi-mcp)

## Channel facts

- Registry: `npm`
- Package: `bountyapi-mcp`
- Version: `1.8.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (113 of 117), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (113 of 117), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 22 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 75/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3031 tokens (~112/item across 27 items; 27 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 90% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add vncent786-bounty-api -- npx -y bountyapi-mcp
```

### Codex

```bash
codex mcp add vncent786-bounty-api -- npx -y bountyapi-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "vncent786-bounty-api": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "bountyapi-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add vncent786-bounty-api --command npx --arg -y --arg bountyapi-mcp
```

### Hermes

```yaml
mcp_servers:
  vncent786-bounty-api:
    command: "npx"
    args: ["-y", "bountyapi-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "vncent786-bounty-api": {
      "command": "npx",
      "args": [
        "-y",
        "bountyapi-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 65, +45)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: MIT

### 2026-07-31 (score 20, −7)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 27, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 45)

First indexed and scored.

## MCP tools (27)

### `sg_stamp_duty` (~123 tokens)

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)

Input parameters:

- `buyer_profile` (string)
- `price` (number, required): Property purchase price in SGD, e.g. 1500000
- `property_count` (integer): Number of residential properties owned including this one
- `property_type` (string)

### `sg_postal_lookup` (~59 tokens)

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

Input parameters:

- `postal_code` (string, required): Singapore postal code (6 digits), e.g. 238801

### `sg_address_intel` (~95 tokens)

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)

Input parameters:

- `postal_code` (string, required): Singapore postal code (6 digits), e.g. 238582

### `sg_mrt_near` (~76 tokens)

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)

Input parameters:

- `limit` (integer): Max results (default 5, max 20)
- `postal_code` (string, required): Singapore postal code (6 digits)

### `sg_mrt_search` (~82 tokens)

Search MRT stations by name. Returns station name, MRT line codes, and coordinates. Covers all 140+ stations across 6 MRT lines. (FREE)

Input parameters:

- `limit` (integer): Max results (default 10)
- `q` (string, required): Station name to search (partial match), e.g. 'Bishan' or 'Tamp'

### `sg_affordability` (~225 tokens)

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)

Input parameters:

- `borrower_age` (integer): Age of youngest borrower
- `existing_monthly_debt` (number): Total existing monthly debt obligations (car loans, credit cards, other mortgages)
- `housing_loan_count` (integer): Number of outstanding housing loans including this one
- `loan_tenure_years` (integer): Loan tenure in years (max 30 HDB, 35 private)
- `loan_type` (string): hdb=HDB loan, bank_hdb=bank loan for HDB, bank_private=bank loan for private property
- `monthly_income` (number, required): Gross monthly income in SGD (all borrowers combined)
- `property_price` (number, required): Property purchase price in SGD

### `sg_rental_yield` (~128 tokens)

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)

Input parameters:

- `annual_expenses` (number): Other annual expenses (optional)
- `maintenance_monthly` (number): Monthly maintenance cost (optional)
- `management_fee_monthly` (number): Monthly property management fee (optional)
- `monthly_rent` (number, required): Expected monthly rental income in SGD
- `property_price` (number, required): Property purchase price in SGD

### `hdb_resale_median` (~89 tokens)

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)

Input parameters:

- `town` (string, required): Town name (e.g. 'ANG MO KIO', 'BISHAN', 'TAMPINES'). Use uppercase.

### `hdb_resale_search` (~124 tokens)

Search HDB resale transactions with filters. Returns individual transaction records with flat type, storey, area, and price. (PAID — auto-pay if wallet configured)

Input parameters:

- `flat_type` (string): Filter by flat type, e.g. '4 ROOM' (optional)
- `limit` (integer): Max results (default 20, max 100)
- `max_price` (number): Maximum price in SGD (optional)
- `min_price` (number): Minimum price in SGD (optional)
- `town` (string): Filter by town (optional)

### `sg_property_analyze` (~314 tokens)

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)

Input parameters:

- `borrower_age` (integer): Age of youngest borrower
- `buyer_profile` (string)
- `existing_monthly_debt` (number): Existing monthly debt obligations
- `flat_type` (string): HDB flat type (e.g. '4 ROOM')
- `loan_tenure_years` (integer): Loan tenure in years
- `monthly_income` (number): Gross monthly income for affordability check (optional)
- `monthly_rent` (number): Expected monthly rent in SGD (optional, for yield analysis)
- `postal_code` (string): Postal code for location intelligence (optional)
- `property_count` (integer): Number of properties owned including this one
- `property_price` (number, required): Property price / asking price in SGD
- `property_type` (string)
- `region` (string): Region/country code. SG supported now; HK/AE/AU/JP planned.
- `town` (string): HDB town (e.g. 'TAMPINES'). Required for HDB analysis.

### `sg_property_rank` (~185 tokens)

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)

Input parameters:

- `buyer_profile` (string)
- `candidates` (array, required): List of candidate properties to evaluate
- `existing_monthly_debt` (number): Existing monthly debt obligations
- `monthly_income` (number): Gross monthly income for affordability (optional)
- `region` (string): Region/country code. SG supported now; HK/AE/AU/JP planned.

### `sg_property_pitch` (~309 tokens)

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)

Input parameters:

- `buyer_notes` (string): Any specific concerns or goals
- `buyer_profile` (string)
- `existing_monthly_debt` (number)
- `flat_type` (string): HDB flat type (e.g. '4 ROOM') or unit type
- `monthly_income` (number): Gross monthly income
- `monthly_rent` (number): Expected monthly rent (optional)
- `postal_code` (string): Postal code for location intelligence
- `project_name` (string): Condo/project name (for private property)
- `property_count` (integer)
- `property_price` (number, required): Asking price in SGD
- `property_type` (string): hdb, private, condo, landed
- `sqft` (number): Floor area in square feet
- `tenure` (string): Freehold, 99-year, 999-year, etc.
- `top_year` (integer): Year of Temporary Occupation Permit (TOP)
- `town` (string): HDB town (e.g. 'TAMPINES') or area name

### `sg_income_tax` (~112 tokens)

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

Input parameters:

- `annual_income` (number, required): Gross annual income in SGD
- `deductions` (number): Total deductions (CPF, expenses, donations)
- `is_resident` (boolean): Tax residency status
- `reliefs` (number): Total personal reliefs (earned income, spouse, child)

### `sg_gst` (~83 tokens)

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

Input parameters:

- `amount` (number, required): Amount in SGD
- `mode` (string): 'add' (add GST) or 'remove' (extract GST from inclusive price)

### `sg_property_commission` (~100 tokens)

Estimate Singapore property agent commission for sale or rental transactions. HDB, private, landed. Rates are market norms (CEA), not legally fixed. FREE

Input parameters:

- `is_seller_landlord` (boolean): true = seller/landlord side, false = buyer/tenant side
- `price` (number, required): Sale price or monthly rent in SGD
- `property_type` (string)
- `transaction_type` (string, required): Type of property transaction

### `sg_cpf_housing` (~90 tokens)

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

Input parameters:

- `age` (integer, required): Current age (16-65)
- `existing_oa_balance` (number): Existing CPF OA balance
- `monthly_income` (number, required): Gross monthly income in SGD

### `sg_salary_benchmark` (~95 tokens)

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

Input parameters:

- `limit` (integer): Max job listings to scan
- `role` (string, required): Job title or keyword (e.g. 'equity analyst', 'software engineer', 'project manager')

### `sg_property_tax` (~92 tokens)

Calculate Singapore property tax. Owner-occupier residential: progressive 0-32%. Non-owner-occupied: 10-20%. Non-residential: flat 10%. Based on IRAS Annual Value. FREE

Input parameters:

- `annual_value` (number, required): Annual Value of the property in SGD
- `is_owner_occupied` (boolean): Whether owner lives in the property
- `property_type` (string)

### `sg_buy_vs_rent` (~126 tokens)

Buy-vs-rent analysis for Singapore property. Compares total cost of buying (mortgage, stamp duty, property tax, maintenance) vs renting (rent + opportunity cost of down payment invested). Returns net cost comparison and recommendation. FREE

Input parameters:

- `down_payment_pct` (number): Down payment percentage
- `holding_period_years` (integer): How long you plan to hold
- `monthly_rent` (number, required): Monthly rent for comparable property
- `mortgage_rate` (number): Mortgage interest rate %
- `property_price` (number, required): Property purchase price in SGD

### `sg_school_proximity` (~86 tokens)

Find Singapore primary/secondary schools within 1km and 2km of a postal code. Useful for Primary 1 distance-priority and property valuation. FREE

Input parameters:

- `postal_code` (string, required): Singapore 6-digit postal code
- `radius_km` (number): Search radius in km (0.5-5)
- `school_type` (string): Optional filter

### `hdb_eip_quota` (~126 tokens)

Explain HDB Ethnic Integration Policy (EIP) and SPR quota limits for a buyer. Includes quota percentages and transaction-risk guidance. Real-time block availability still requires HDB portal verification. FREE

Input parameters:

- `buyer_ethnicity` (string, required): Malay, Chinese, Indian, or Others
- `is_malaysian_spr` (boolean): Whether buyer is Malaysian SPR (exempt from SPR quota)
- `is_spr` (boolean): Whether buyer is an SPR
- `town` (string, required): HDB town, e.g. 'ANG MO KIO'

### `hdb_lease_decay` (~75 tokens)

Analyze HDB lease decay: remaining lease, financing/CPF restrictions, risk thresholds, SERS caveat, and optional value impact. FREE

Input parameters:

- `current_value` (number): Optional current value in SGD for value-impact estimate
- `lease_commencement_year` (integer, required): HDB 99-year lease commencement year

### `ura_status` (~22 tokens)

Check if URA private property data is connected and available. FREE

### `ura_transactions` (~66 tokens)

Get private residential property transactions (caveat data) from URA. Returns project, price, PSF, area, tenure, date, sale type. Batch 1 is most recent. $0.05/call

Input parameters:

- `batch` (integer): Batch number (paginated)

### `ura_rental_median` (~55 tokens)

Get median rental rates ($psf/month) for private residential projects from URA. Optional project name filter. $0.05/call

Input parameters:

- `project_name` (string): Optional project/condo name filter

### `ura_developer_sales` (~60 tokens)

Get developer units sold by project from URA. Units launched, sold, remaining, median price. $0.05/call

Input parameters:

- `ref_period` (string): Format 'YYMM', e.g. '2506'. Empty for latest.

### `ura_pipeline` (~34 tokens)

Get future private residential supply pipeline from URA. Upcoming projects, units planned, expected completion. $0.05/call

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/vncent786-bounty-api/bountyapi-mcp#diagnostics

## Score history

- 2026-08-03: 65
- 2026-08-02: 65
- 2026-08-01: 20
- 2026-07-31: 20
- 2026-07-30: 27
- 2026-07-28: 45
- 2026-07-27: 45

## Links

- npm package: https://www.npmjs.com/package/bountyapi-mcp
- Socket report: https://socket.dev/npm/package/bountyapi-mcp
- Repository: https://github.com/vncent786/bounty-api
- Website: https://bountyapi.com/
- Changelog RSS feed: https://verifymcp.io/servers/vncent786-bounty-api/bountyapi-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/vncent786-bounty-api/bountyapi-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/vncent786-bounty-api/bountyapi-mcp
