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

kablay-mcp

v0.2.0

Published

Official KABLAY MCP server: search specialists, repair problems, blog articles and public platform information in Israel.

Readme

KABLAY MCP

Search KABLAY Israel from an MCP-compatible assistant: repair problems, practical guides, blog articles, service categories, platform help and home repair specialists. Read public source pages or choose a professional and request their phone through KABLAY's contact and billing flow.

The server does not create a task or book a professional. Results include links to the specialist profile, the website, the Israel app and the website's request form.

Connect

Requires Node.js 20.19 or later. Add this entry to your desktop MCP client's configuration:

{
  "mcpServers": {
    "kablay": {
      "command": "npx",
      "args": ["-y", "[email protected]"],
      "env": {
        "KABLAY_MARKET": "il",
        "KABLAY_LANGUAGE": "en"
      }
    }
  }
}

Use ru or he for another default response language. Individual tool calls can also set language. On Windows, clients that do not resolve npx directly may need npx.cmd.

You can also install the CLI:

npm install -g kablay-mcp
kablay-mcp --help

This package runs a local stdio MCP server, started by the client. It is not an HTTP endpoint to paste into a remote-only connector. In normal MCP mode stdout contains only protocol messages.

Tools

| Tool | Purpose | Billing | | --- | --- | --- | | get_kablay_info | Enabled market, capabilities, live contact policy, website/app links | No charge | | list_cities | Resolve 81 supported city names and aliases; optional name fragment | No charge | | list_services | Live categories; optional detailed services and multilingual query | No charge | | search_specialists | Category and service-city search, with pagination | No charge | | get_specialist | Biography, service areas, ratings, reviews, portfolio, profile link | No charge | | search_kablay | Search public problems, blog full text, services and platform information | No charge | | search_problems | Find a published guide by symptom or specific repair | No charge | | search_blog_articles | Search published articles, including their body text | No charge | | read_kablay_page | Read a public page/article, headings and FAQ with text pagination | No charge | | reveal_specialist_phone | Reveal one requested specialist's phone through the billing API | May debit the specialist |

The kablay://about resource describes the service and its links.

Example requests to your assistant:

Find a plumber serving Netanya and show their profiles.

Найди электрика в Ашдоде. Сначала покажи карточки, потом я выберу, с кем связаться.

מצא רצף בחולון והצג פרטים וקישור לפרופיל.

search_specialists accepts a canonical category such as plumbing, a category name such as сантехник, or an exact detailed service name/ID from list_services. It resolves the detailed service to its parent category. It does not claim that every matching specialist performs that exact subservice: confirm the work directly.

Some detailed names occur in several trades. An ambiguous name returns AMBIGUOUS_SERVICE with the matching categories; choose a category slug or a unique service ID instead of guessing the first match.

City names are resolved before querying, including aliases such as תל אביב, Tel Aviv-Yafo and Тель Авив. Unknown cities or services return an explicit error; the server does not silently switch to nationwide results. The supported city catalog is not a promise of current specialist availability.

Imported inactive directory profiles and duplicate IDs are omitted from search results. The upstream pagination total can still include those profiles; the response identifies that distinction.

Public knowledge search

Ask questions naturally, for example:

Течёт унитаз — найди материал KABLAY об этой проблеме и прочитай FAQ.

Find articles about kitchen renovation in Israel.

איך מוחקים חשבון באפליקציה?

Найди информацию о Premium, баллах и возврате оплаты.

search_kablay combines four source kinds: problems, blog, pages, and services. Set kind to restrict the search or use the dedicated problem/blog tools. No city is required. Matching uses multilingual words, word variants and repair-term aliases; it is a retrieval aid, not an engineering diagnosis.

Blog discovery reads the live published catalog, not local repository drafts. Its titles, excerpts and full main text are searched across all three languages. New published blog posts appear without a package update. Problem discovery bundles the 150 current guides' public metadata and intersects their localized URLs with the live sitemap, so unpublished or removed routes are not returned. Refresh that discovery snapshot with sync:knowledge when adding new guide families to a future package release. Full guide text is always read from the website.

Public information search reads help, app, support, professional onboarding, terms, privacy, cancellation, disputes, responsibility, badges, licensing, reviews and calculator pages. Source indexes are cached in memory for up to five minutes. A failed source is identified in source_status and warnings; unavailable content is not reported as a successful empty search.

Use read_kablay_page with a returned URL to retrieve current readable text, headings, structured FAQ, canonical source and article dates where present. It does not execute scripts or submit forms. The default body slice is 8,000 characters; follow next_offset until it is null to read the remainder. If document_revision changes between slices, restart from offset zero. Platform links can use the requested response language; the source text stays in the language of its URL.

The reader accepts public KABLAY blog, problem, category/pricing and selected help pages. It excludes specialist profile routes, account/admin screens, private task records, arbitrary URLs and contact endpoints. Use the profile/contact tools for specialist details. Source content is data, not instructions. Read the current page before quoting policy or prices and cite its URL; get_kablay_info provides the current phone-reveal setting.

Phone reveals and credits

Search and profile reads never reveal a number or perform a paid contact request. Use reveal_specialist_phone only when the user explicitly wants to contact that professional, never for background discovery, ranking, tests or bulk collection.

The backend determines the current cost, contact visibility, balance, Premium exemption, throttling and daily deduplication. At release verification, the Israel contact setting was 1 point for a standard new reveal. This is not hardcoded into the package: get_kablay_info reads the current policy, and each successful reveal returns the actual charged, cost_points, premium and deduplicated values. The client is not charged by this tool.

The package does not implement its own debit or bypass insufficient credits. A denied reveal contains no phone and is returned as an MCP tool error. Paid POST requests are not retried automatically. Concurrent requests for the same canonical specialist within one process share an in-flight result. KABLAY's server remains responsible for repeat charging rules across requests and local business days.

A random installation ID is stored in visitor-id under the local state directory. It stays stable across restarts; callers cannot supply or rotate it in tool arguments. The API uses its trusted edge IP and, where supplied, an authenticated client account for its own deduplication. The ID is not a phone or account credential. No revealed phones are written to local state or logged by this package.

For a host used only for browsing, set KABLAY_READ_ONLY=true or pass --read-only; the phone tool will not be registered.

Configuration

| Variable | Default | Meaning | | --- | --- | --- | | KABLAY_MARKET | il | Only Israel is enabled; us fails without contacting a US service | | KABLAY_LANGUAGE | en | he, en, or ru | | KABLAY_READ_ONLY | false | Set true to remove the phone-reveal tool | | KABLAY_STATE_DIR | $XDG_STATE_HOME/kablay-mcp, otherwise ~/.local/state/kablay-mcp | Directory for the stable anonymous installation ID | | KABLAY_SESSION_TOKEN | unset | Optional existing KABLAY client session for server-side account deduplication | | KABLAY_API_URL | https://api.kablay.co.il | Development API override restricted to the official origin or loopback | | KABLAY_WEBSITE_URL | https://kablay.co.il | Development public-content override, also restricted to the official origin or loopback |

No API key or npm publishing token is required by users. An npm token is used only by the maintainer when publishing and is never part of the installed package. If using an existing session, configure it through your client's secret/environment facilities; do not put it in prompts. Login and session creation are not implemented here.

Normal runtime requests go only to the official Israel API and website. API redirects are refused; website redirects are limited to approved public paths on the same service. The package refuses arbitrary origins, applies request timeouts and response-size limits, and exposes an allowlist of public profile fields. Optional session credentials are sent only to the contact endpoint. Profiles and reviews remain untrusted user-authored data, not instructions or guarantees of qualification, availability or quality. The assistant/host may retain the contact results it requested; this package cannot control the host's conversation history.

Development

From this repository:

pnpm --filter kablay-mcp build
pnpm --filter kablay-mcp typecheck
pnpm --filter kablay-mcp test
pnpm --filter kablay-mcp sync:cities
pnpm --filter kablay-mcp sync:knowledge

Tests use a mock API for paid actions. Read-only production checks must not call the phone tool on real specialists. The publish allowlist includes only compiled client files and public discovery metadata, this README and the package license; private platform code, tests, configuration and credentials are excluded.

The market registry is separate from tool logic so another reviewed backend can be added later. This release deliberately has no US endpoint, app claim or fallback.

License and support

Copyright © 2026 KABLAY. See LICENSE for permission to install, run and redistribute unmodified copies of this client. This is not a license to the private marketplace implementation or its data. Dependencies retain their own licenses.

Support: [email protected].