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

rentec-direct-mcp

v0.2.0

Published

Model Context Protocol (MCP) server for the Rentec Direct API v3. Gives AI agents read and (confirmed) write access to your Rentec Direct property-management data.

Readme

Rentec Direct MCP Server

CI License: MIT

A Model Context Protocol (MCP) server that gives AI agents structured, local-first access to your Rentec Direct property-management data via the official Rentec Direct API v3.

It exposes 20 tools across properties, tenants, leads, owners, vendors, leases, transactions, accounting, work orders, messaging, files, and contact lookup — so an assistant like Claude can answer questions such as "Which properties are vacant?", "What's this tenant's balance?", or "List open work orders over $500" — and, with explicit confirmation, create vendors, leads, work orders, expenses, and more.

📚 Full documentation: https://thethirdswitch.github.io/Rentec-Direct-MCP-Server/


Why local-first?

Your Rentec Direct API key unlocks sensitive financial and tenant data. This server is designed to run on your own machine, next to the AI client that uses it:

  • The API key is read from an environment variable in your client config — it is never committed, never sent anywhere except secure.rentecdirect.com.
  • File contents are exchanged through your local filesystem, not streamed through the model.
  • Every write requires a second, explicit confirmation step (details below).

You do not need to host anything publicly. See Hosting & Distribution.


Quick start

1. Get an API key

In Rentec Direct: Settings → Utilities → API Keys. Create a key and grant only the scopes you need (e.g. read:properties, write:work_orders). Read scopes enable the GET-based tools; write scopes enable the write tools.

The API is a Rentec Labs feature and is rate-limited to 60 requests/minute.

2a. Run with npx (no clone)

Add this to your MCP client config (e.g. Claude Desktop's claude_desktop_config.json):

{
  "mcpServers": {
    "rentec-direct": {
      "command": "npx",
      "args": ["-y", "rentec-direct-mcp"],
      "env": {
        "RENTEC_API_KEY": "your-api-key-here"
      }
    }
  }
}

Restart your client. That's it.

2b. Run from a local build (self-hosted)

git clone https://github.com/TheThirdSwitch/Rentec-Direct-MCP-Server.git
cd Rentec-Direct-MCP-Server
npm install
npm run build

Then point your client at the built entry point:

{
  "mcpServers": {
    "rentec-direct": {
      "command": "node",
      "args": ["/absolute/path/to/Rentec-Direct-MCP-Server/dist/cli.js"],
      "env": {
        "RENTEC_API_KEY": "your-api-key-here"
      }
    }
  }
}

3. Verify your key

# Validates the key and prints a ready-to-paste config snippet.
RENTEC_API_KEY=your-key npx rentec-direct-mcp ping
# or, interactively (key is not echoed or stored):
npx rentec-direct-mcp login

Configuration

All configuration is via environment variables, supplied in your client's env block.

| Variable | Required | Default | Description | | --- | --- | --- | --- | | RENTEC_API_KEY | yes | — | Your Rentec Direct API key. | | RENTEC_API_BASE_URL | no | https://secure.rentecdirect.com/api/v3 | Override the API base URL. | | RENTEC_READ_ONLY | no | false | Set true to disable all write tools entirely. | | RENTEC_TOOLS | no | (all) | Comma-separated tool groups and/or profiles to load. Shrinks the always-on tool surface. See below. | | RENTEC_LOG_LEVEL | no | info | error | warn | info | debug (logs go to stderr). |

For local development you may copy .env.example to .env, but never commit a real key.

Loading a subset of tools (RENTEC_TOOLS)

By default all tool groups load. To reduce the context footprint (and improve the assistant's tool-selection accuracy), set RENTEC_TOOLS to a comma-separated list of groups and/or profiles — the union is loaded. An unknown value fails fast at startup with the list of valid names.

  • Groups: properties, tenants, leads, owners, vendors, leases, transactions, accounting, workorders, messaging, files, lookup, context.
  • Profiles: all (default) · core (properties, tenants, owners, leases, transactions, workorders, lookup, context — the day-to-day read/operate set).
// e.g. a tenant-and-maintenance assistant
"env": { "RENTEC_API_KEY": "…", "RENTEC_TOOLS": "properties,tenants,workorders,context" }

RENTEC_TOOLS composes with RENTEC_READ_ONLY: groups pick the domains, read-only drops the write tools within them. Run rentec-direct-mcp list-tools to see every group and its tools.


Writes & confirmation

Seven tools mutate data: rentec_create_vendor, rentec_create_lead, rentec_create_expense, rentec_create_work_order, rentec_add_work_order_note, rentec_record_message, and rentec_upload_file.

Each write is a two-step operation:

  1. The agent calls the tool with its arguments. The server validates the input, returns a human-readable preview of exactly what will happen, and makes no change.
  2. Only when the tool is called again with "confirm": true does the server send the request to Rentec Direct.

This is in addition to whatever approval prompt your MCP host already shows. To remove write capability altogether, set RENTEC_READ_ONLY=true. See Writes & Confirmation.


CLI commands

rentec-direct-mcp serve        # start the MCP server over stdio (default)
rentec-direct-mcp login        # validate a key, print a config snippet (no storage)
rentec-direct-mcp ping         # validate RENTEC_API_KEY against /ping
rentec-direct-mcp list-tools   # list every tool and flag the writes
rentec-direct-mcp --version
rentec-direct-mcp --help

Tools at a glance

Most reads are one tool per resource: omit id to list, provide id to fetch a single record. Writes stay separate so each keeps its own confirmation preview.

| Area | Tools | | --- | --- | | Properties | rentec_properties | | Tenants | rentec_tenants | | Leads | rentec_leads, rentec_create_lead | | Owners | rentec_owners | | Vendors | rentec_vendors, rentec_create_vendor | | Leases | rentec_leases | | Transactions | rentec_transactions, rentec_create_expense | | Accounting | rentec_accounting (resource: accounts | products | banks) | | Work Orders | rentec_work_orders, rentec_create_work_order, rentec_add_work_order_note | | Messaging | rentec_messages, rentec_record_message | | Files | rentec_files, rentec_upload_file | | Lookup | rentec_lookup (scope: all | tenant | owner | vendor | prospect) | | Context (bundles) | rentec_get_tenant_context |

v0.2.0 renamed the read tools. The old rentec_list_* / rentec_get_* pairs are consolidated into single id-optional tools (e.g. rentec_list_tenants + rentec_get_tenantrentec_tenants), the five rentec_lookup_* tools collapsed into rentec_lookup, the six accounting tools into rentec_accounting, and rentec_ping moved to the CLI only. No data is lost — everything is still reachable. Update any hard-coded tool names. See the Tool Reference.

Full parameter tables: Tool Reference.

Resources & prompts

Beyond tools, the server also exposes a small set of MCP resources and prompts for clients that support them (e.g. Claude Desktop):

  • Resource rentec://reference/enums — a read-only document of enum codes and their meanings (Work Order statuses, payment types, account types) plus the age/date filter syntax. Reading it lets an agent use exact codes the first time instead of guessing.
  • Prompts — named workflows that drive a reliable read-only sequence: delinquency_review, owner_statement_summary, vacancy_report, and maintenance_triage.

Development

npm install
npm run build          # compile TypeScript -> dist/
npm test               # run the Vitest suite
npm run lint           # ESLint
npm run typecheck      # tsc --noEmit
npm run docs:tools     # regenerate docs/tools.md from the code

Architecture, conventions, and how to add or update a tool when the API changes are documented in CLAUDE.md and the Architecture guide.


Hosting & distribution

This server is intended to be run locally by each user — there is no shared server to operate, and that is the recommended model because every user supplies their own key.

Three supported ways to get it:

  1. npx rentec-direct-mcp — zero install, always current (once published to npm).
  2. Clone + npm run build — full control, runs entirely from your checkout.
  3. GitHub Release — download a pinned, versioned tarball from Releases and run node dist/cli.js.

A remote/multi-tenant deployment is intentionally not provided: it would require brokering many users' API keys, which contradicts the local-first security model.


Keeping up with the API

The upstream spec lives at https://secure.rentecdirect.com/api/v3/docs/openapi.yaml. The verbatim document is Rentec Direct's IP and is not committed here; the repo tracks only a derived openapi-specs/fingerprint.json (version, sha256, and a structural operation index). A scheduled GitHub workflow fetches the live spec, diffs its fingerprint against the committed one, and opens an issue when it changes. A set of Claude Skills then helps detect the specific changes and apply them to the server and docs. See Maintaining the Server.


Disclaimer

This is an unofficial, community project and is not affiliated with or endorsed by Rentec Direct. Use of the Rentec Direct API is subject to Rentec Direct's terms. Licensed under MIT.