npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@aaronzara/lts-mcp

v1.0.1

Published

MCP server providing Philippine License to Sell (LTS) verification data to AI agents. Built on Cloudflare Workers with Supabase. Data sourced from DHSUD.

Readme

LTS MCP Server

Cloudflare Workers TypeScript Tests License: MIT

A Model Context Protocol server that provides Philippine License to Sell (LTS) verification data to LLMs. Built on Cloudflare Workers with Supabase.

Public, read-only, no authentication required. Data sourced from the Department of Human Settlements and Urban Development (DHSUD) License to Sell registry and cross-referenced with published real estate projects on REN.PH.

Why This Exists

Philippine real estate developers are required by law to obtain a License to Sell (LTS) from DHSUD before marketing or selling condominium units, subdivision lots, and other real estate projects. Buyers can check whether a project has a valid LTS, but the official verification process involves navigating government websites and manually looking up records.

This MCP server makes that data queryable by any LLM. Ask your AI assistant "Does [project name] have a valid License to Sell?" and get an answer backed by DHSUD records.

Tools

| Tool | Description | |------|-------------| | lts_search | Search across DHSUD records and published projects by name, LTS number, developer, or city | | lts_queue | Browse the DHSUD verification queue with filters (status, region, expiry, score) | | lts_project | Get the complete LTS picture for a project (by UUID or name) | | lts_stats | System-wide statistics: queue pipeline health and project LTS counts | | lts_check | Check if a specific LTS number exists in the system | | lts_filters | Get available regions and cities for filtering |

Tool Details

lts_search is the universal entry point. It searches both the DHSUD verification queue (scraped records) and the REN.PH projects database simultaneously. Use this when you have a project name, developer name, LTS number, or city and want to find everything related.

lts_queue gives access to the raw DHSUD scrape data. Each record represents an LTS entry from DHSUD's registry, with match status indicating whether it has been linked to a project in the REN.PH database. Supports filtering by match status, region, minimum match score, text search, and expiring-soon windows.

lts_project returns the full LTS picture for a single project: all LTS records with computed fields (is_expired, days_until_expiry), a summary with counts (verified, expired, expiring soon), and the primary LTS number. Accepts either a project UUID or a project name for fuzzy lookup.

lts_stats returns two sections: queue stats from the verification pipeline (total records, pending, auto-matched, manual-matched, no-match, expired, expiring soon) and project LTS stats (total records, verified, expired, expiring within 30 days, projects with active LTS).

lts_check verifies whether a specific LTS number exists. Returns whether it was found in the DHSUD queue, in the verified project LTS table, or both, along with the full record details.

lts_filters returns distinct regions and cities available in the verification queue. Use this before calling lts_queue with region or city filters to get valid values. Optionally pass a region to get only cities within that region.

Response Format

All data responses are wrapped in a standard metadata envelope:

{
  "_meta": {
    "source": "Department of Human Settlements and Urban Development (DHSUD)",
    "source_url": "https://dhsud.gov.ph/",
    "dataset": "License to Sell (LTS) Registry",
    "last_synced": "2026-03-04"
  },
  "data": { ... }
}

Error responses (isError: true) are returned as plain text without wrapping.

Paginated Responses

Tools that return lists (lts_search, lts_queue) use a standard pagination wrapper:

| Field | Type | Description | |-------|------|-------------| | items | array | The result records | | total | number | Total matching records | | limit | number | Page size used | | offset | number | Current offset | | hasMore | boolean | Whether more results exist |

LTS Status Values

| Status | Meaning | |--------|---------| | verified | LTS confirmed valid by verification process | | unverified | LTS exists but not yet verified | | expired | LTS past its expiry date | | none | Project has no LTS on record |

Match Status Values (Queue)

| Status | Meaning | |--------|---------| | pending | DHSUD record awaiting review | | auto_matched | Automatically linked to a project | | manual_matched | Manually linked by a reviewer | | no_match | No matching project found | | skipped | Skipped during review | | new_project | Record suggests a new project not yet in the database |

Connect

Add to your MCP client configuration:

{
  "mcpServers": {
    "lts": {
      "url": "https://lts.godmode.ph/mcp"
    }
  }
}

Quick test

curl -X POST https://lts.godmode.ph/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "lts_check",
      "arguments": { "ltsNumber": "HLURB-LTS-0001-2024" }
    }
  }'

Data Sources

| Source | Description | |--------|-------------| | DHSUD LTS Registry | Scraped License to Sell records: LTS numbers, project names, developers, cities, issue/expiry dates | | REN.PH | Published real estate project database with verified LTS linkages |

The DHSUD verification queue contains scraped records from DHSUD's public registry. These records are matched against REN.PH's project database using a combination of exact LTS number matching, project name matching, and fuzzy scoring. Verified matches are stored in the project_lts table with full provenance.

Last synced: March 4, 2026.

Security

This is a public, read-only endpoint. The Supabase connection uses an anon key (not a service role key), and all data access is enforced through Row Level Security (RLS) policies:

  • projects: only published projects are visible
  • project_lts: all verified/public LTS records are visible
  • lts_verification_queue: all DHSUD public data is visible

Even if the Worker is compromised, the attacker can only read what RLS allows. No write operations are exposed.

What is a License to Sell?

Under Philippine law (PD 957 and BP 220), real estate developers must secure a License to Sell (LTS) from DHSUD before offering any subdivision lot, condominium unit, or similar real estate project for sale to the public. The LTS confirms that the project has been reviewed for compliance with zoning, land use, environmental, and development standards.

Buying from a project without a valid LTS is one of the most common risks in Philippine real estate. This MCP server makes that verification accessible to AI assistants, chatbots, and any MCP-compatible application.

Related Projects

Part of a suite of Philippine public data MCP servers:

  • PSGC MCP - Philippine Standard Geographic Code data
  • LTS MCP (this repo) - DHSUD License to Sell verification
  • PH Holidays MCP - Coming soon
  • BSP Bank Directory MCP - Coming soon

All servers are free, public, and read-only. Data pulled from official Philippine government sources.

Development

npm install
npm run cf-typegen
npm run dev

cf-typegen generates worker-configuration.d.ts (gitignored) with Cloudflare runtime types. Run it once after cloning and again after changing wrangler.jsonc.

Dev server starts at http://localhost:8787. Connect your MCP client to http://localhost:8787/mcp.

Testing

npm test            # run all tests
npm run test:watch  # watch mode

88 tests across 4 suites covering sanitization (PostgREST filter injection), utility functions, response formatting, and query logic with mock Supabase clients.

Deployment

Before first deploy, set the Supabase secrets:

npx wrangler secret put SUPABASE_URL
npx wrangler secret put SUPABASE_ANON_KEY

Then deploy:

npm run deploy

Type Generation

After changing wrangler.jsonc:

npm run cf-typegen

Contributing and Issues

Found a data discrepancy or a project with incorrect LTS status? Open an issue. DHSUD data is scraped periodically and matched against the REN.PH database. Mismatches, missing records, and edge cases in the matching pipeline are tracked through issues.

If data looks stale, open an issue and it will be refreshed ahead of the next scheduled sync.

Built by

Aaron Zara - Fractional CTO at Godmode Digital

Built REN.PH, a programmatic real estate platform with 60,000+ structured pages covering every Philippine province, city, and barangay. The LTS MCP came out of needing to make DHSUD license verification accessible to AI agents, because buyers deserve to know if a project is licensed before they sign anything.

For enterprise SLAs, custom integrations, or other PH data sources: godmode.ph

License

MIT