# io.github.vncent786/bounty-api (remote · bountyapi.com)

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

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

## Components

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

## Channel facts

- Endpoint: `https://bountyapi.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.8.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, 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.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 27 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1960 tokens (~72/item across 27 items; 27 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http vncent786-bounty-api https://bountyapi.com/mcp
```

### Codex

```toml
[mcp_servers.vncent786-bounty-api]
url = "https://bountyapi.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "vncent786-bounty-api": {
      "type": "remote",
      "url": "https://bountyapi.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add vncent786-bounty-api --url https://bountyapi.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  vncent786-bounty-api:
    url: "https://bountyapi.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "vncent786-bounty-api": {
      "type": "http",
      "url": "https://bountyapi.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## 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 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 61, +2)

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

### 2026-07-30 (score 59, 0)

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

### 2026-07-29 (score 59, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 58, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 57, 0)

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

### 2026-07-26 (score 57)

First indexed and scored.

## MCP tools (27)

### `sg_stamp_duty` (~86 tokens)

Calculate Singapore property stamp duty (BSD + ABSD).
        buyer_profile: SC (citizen), SPR (PR), FR (foreigner), entity, developer.
        Returns total duty, tier breakdown, and effective rate.

Input parameters:

- `buyer_profile` (string)
- `price` (number, required)
- `property_count` (integer)
- `property_type` (string)

Output parameters:

- `result` (string)

### `sg_postal_lookup` (~47 tokens)

Look up a Singapore 6-digit postal code to find its district number,
        district name, and area classification (CCR/RCR/OCR).

Input parameters:

- `postal_code` (string, required)

Output parameters:

- `result` (string)

### `sg_address_intel` (~52 tokens)

Full address intelligence: district, planning area, CCR/RCR/OCR region,
        HDB town, approximate coordinates, and 5 nearest MRT stations with walking distance.

Input parameters:

- `postal_code` (string, required)

Output parameters:

- `result` (string)

### `sg_mrt_near` (~49 tokens)

Find nearest MRT stations to a Singapore postal code.
        Returns station name, lines, distance, and walking time.

Input parameters:

- `limit` (integer)
- `postal_code` (string, required)

Output parameters:

- `result` (string)

### `sg_mrt_search` (~38 tokens)

Search MRT stations by name. Returns all matching stations with line codes.

Input parameters:

- `limit` (integer)
- `q` (string, required)

Output parameters:

- `result` (string)

### `sg_affordability` (~105 tokens)

Calculate MAS TDSR/MSR affordability. Checks if a property is affordable
        under Singapore's mortgage regulations. Returns max loan and property price.

Input parameters:

- `borrower_age` (integer)
- `existing_monthly_debt` (number)
- `housing_loan_count` (integer)
- `loan_tenure_years` (integer)
- `loan_type` (string)
- `monthly_income` (number, required)
- `property_price` (number, required)

Output parameters:

- `result` (string)

### `sg_property_analyze` (~149 tokens)

Complete property investment analysis: stamp duty, comparables, yield,
        affordability, and location in one call. The most comprehensive SG property API.

Input parameters:

- `borrower_age` (integer)
- `buyer_profile` (string)
- `existing_monthly_debt` (number)
- `flat_type` (string)
- `loan_tenure_years` (integer)
- `monthly_income` (number)
- `monthly_rent` (number)
- `postal_code` (string)
- `property_count` (integer)
- `property_price` (number, required)
- `property_type` (string)
- `region` (string)
- `town` (string)

Output parameters:

- `result` (string)

### `sg_property_rank` (~95 tokens)

Rank candidate Singapore properties by investment value.
        Accepts properties from any source, then scores value vs comps, yield,
        affordability, and location. Region-ready: SG live, HK/AE/AU/JP planned.

Input parameters:

- `buyer_profile` (string)
- `candidates` (array, required)
- `existing_monthly_debt` (number)
- `monthly_income` (number)
- `region` (string)

Output parameters:

- `result` (string)

### `sg_property_pitch` (~173 tokens)

Generate a complete property investment pitch — the kind of one-page
        analysis a property agent presents to a client. Includes price fairness,
        stamp duty, affordability, yield, location, tenure risk, and verdict.

Input parameters:

- `buyer_notes` (string)
- `buyer_profile` (string)
- `existing_monthly_debt` (number)
- `flat_type` (string)
- `monthly_income` (number)
- `monthly_rent` (number)
- `postal_code` (string)
- `project_name` (string)
- `property_count` (integer)
- `property_price` (number, required)
- `property_type` (string)
- `sqft` (number)
- `tenure` (string)
- `top_year` (integer)
- `town` (string)

Output parameters:

- `result` (string)

### `sg_rental_yield` (~63 tokens)

Calculate rental investment metrics: gross yield, net yield, cap rate,
        price-to-rent ratio, and monthly cashflow.

Input parameters:

- `annual_expenses` (number)
- `monthly_rent` (number, required)
- `property_price` (number, required)

Output parameters:

- `result` (string)

### `sg_income_tax` (~83 tokens)

Calculate Singapore individual income tax. Resident progressive rates
        (YA 2024+): 0-22% marginal. Non-residents: 15% flat or progressive,
        whichever higher. Free.

Input parameters:

- `annual_income` (number, required)
- `deductions` (number)
- `is_resident` (boolean)
- `reliefs` (number)

Output parameters:

- `result` (string)

### `sg_gst` (~69 tokens)

Add or remove Singapore GST (9% from 1 Jan 2024).
        mode='add': calculate GST on a GST-exclusive price.
        mode='remove': extract GST component from a GST-inclusive price.
        Free.

Input parameters:

- `amount` (number, required)
- `mode` (string)

Output parameters:

- `result` (string)

### `sg_property_commission` (~90 tokens)

Estimate Singapore property agent commission.
        transaction_type: 'sale' or 'rental'. property_type: 'hdb', 'private', 'landed'.
        Rates are market norms (CEA), not legally fixed. Free.

Input parameters:

- `is_seller_landlord` (boolean)
- `price` (number)
- `property_type` (string)
- `transaction_type` (string, required)

Output parameters:

- `result` (string)

### `sg_cpf_housing` (~64 tokens)

Estimate CPF Ordinary Account accumulation for housing use.
        Shows monthly OA contribution, 3-year and 5-year projected balances.
        Free.

Input parameters:

- `age` (integer, required)
- `existing_oa_balance` (number)
- `monthly_income` (number, required)

Output parameters:

- `result` (string)

### `sg_salary_benchmark` (~61 tokens)

Benchmark salary for a Singapore role using live MyCareersFuture job postings.
        Returns median, percentile ranges, and annual equivalents from real employer-posted
        salary data. Free.

Input parameters:

- `limit` (integer)
- `role` (string, required)

Output parameters:

- `result` (string)

### `sg_property_tax` (~70 tokens)

Calculate Singapore property tax. Owner-occupier progressive 0-32%,
        non-owner-occupied 10-20%, non-residential flat 10%. Free.

Input parameters:

- `annual_value` (number, required)
- `is_owner_occupied` (boolean)
- `property_type` (string)

Output parameters:

- `result` (string)

### `sg_buy_vs_rent` (~98 tokens)

Buy-vs-rent analysis: total cost of buying vs renting over a holding period.
        Includes mortgage, stamp duty, property tax, maintenance, opportunity cost.
        Returns net cost comparison and recommendation. Free.

Input parameters:

- `down_payment_pct` (number)
- `holding_period_years` (integer)
- `monthly_rent` (number, required)
- `mortgage_rate` (number)
- `property_price` (number, required)

Output parameters:

- `result` (string)

### `sg_school_proximity` (~69 tokens)

Find primary/secondary schools near a Singapore postal code.
        Splits schools within 1km and 1-2km for Primary 1 priority analysis. Free.

Input parameters:

- `postal_code` (string, required)
- `radius_km` (number)
- `school_type` (string)

Output parameters:

- `result` (string)

### `hdb_eip_quota` (~88 tokens)

Explain HDB Ethnic Integration Policy (EIP) and SPR quota limits.
        Real-time HDB quota requires portal verification, but this returns official quota rules and transaction risk. Free.

Input parameters:

- `buyer_ethnicity` (string, required)
- `is_malaysian_spr` (boolean)
- `is_spr` (boolean)
- `town` (string, required)

Output parameters:

- `result` (string)

### `hdb_lease_decay` (~52 tokens)

Analyze HDB lease decay: remaining years, financing/CPF restrictions, risk thresholds, and value impact. Free.

Input parameters:

- `current_value` (number)
- `lease_commencement_year` (integer, required)

Output parameters:

- `result` (string)

### `ura_status` (~22 tokens)

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

Output parameters:

- `result` (string)

### `ura_transactions` (~65 tokens)

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

Input parameters:

- `batch` (integer)

Output parameters:

- `result` (string)

### `ura_rental_median` (~52 tokens)

Get median rental rates ($psf/month) for private residential projects from URA.
        Filter by project name or get all. $0.05/call.

Input parameters:

- `project_name` (string)

Output parameters:

- `result` (string)

### `ura_developer_sales` (~67 tokens)

Get developer units sold by project from URA. Units launched, sold, remaining, median price.
        Leave ref_period empty for latest, or use format like '2506' for Jun 2025. $0.05/call.

Input parameters:

- `ref_period` (string)

Output parameters:

- `result` (string)

### `ura_pipeline` (~40 tokens)

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

Output parameters:

- `result` (string)

### `hdb_resale_median` (~48 tokens)

Get HDB resale median prices by flat type for a Singapore town.
        Returns median price, count, min, max for each flat type.

Input parameters:

- `town` (string, required)

Output parameters:

- `result` (string)

### `hdb_resale_search` (~65 tokens)

Search HDB resale transactions with filters.
        Leave params empty for broad results.

Input parameters:

- `flat_type` (string)
- `limit` (integer)
- `max_price` (number)
- `min_price` (number)
- `town` (string)

Output parameters:

- `result` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/vncent786-bounty-api/bountyapi#diagnostics

## Score history

- 2026-08-03: 62
- 2026-08-02: 62
- 2026-08-01: 61
- 2026-07-31: 61
- 2026-07-30: 59
- 2026-07-29: 59
- 2026-07-28: 58
- 2026-07-27: 57
- 2026-07-26: 57

## Links

- Remote endpoint: https://bountyapi.com/mcp
- Repository: https://github.com/vncent786/bounty-api
- Website: https://bountyapi.com/
- Changelog RSS feed: https://verifymcp.io/servers/vncent786-bounty-api/bountyapi/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/vncent786-bounty-api/bountyapi/changelog.json
- HTML version of this page: https://verifymcp.io/servers/vncent786-bounty-api/bountyapi
