Back to Browse

Rentrollapi Dotnet MCP Server

Developer ToolsLow Risk10.0MCP RegistryRemote
Free

Server data from the Official MCP Registry

Extract verified structured data from CRE rent rolls (PDF, Excel, CSV, scans) with built-in checks

About

Extract verified structured data from CRE rent rolls (PDF, Excel, CSV, scans) with built-in checks

Remote endpoints: streamable-http: https://rentrollapi.com/mcp

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.

1 tool verified · Open access · No issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

How to Connect

Remote Plugin

No local installation needed. Your AI client connects to the remote endpoint directly.

Add this to your MCP configuration to connect:

{
  "mcpServers": {
    "io-github-ekvanauk-rentrollapi": {
      "url": "https://rentrollapi.com/mcp"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

RentRollAPI.Client

NuGet

Official .NET client for RentRollAPI — convert commercial real estate rent rolls (PDF, Excel, CSV, scans) into structured, verified data with one call.

Every extraction includes a deterministic verification report: totals recomputed from extracted units are reconciled against the totals stated on the document, unit counts are cross-checked, and any uncertain field is flagged with a confidence score — never silently guessed.

Install

dotnet add package RentRollAPI.Client

Quick start

using RentRollApi.Client;

using var client = new RentRollClient("rr_live_your_key");

var result = await client.ExtractAsync("rent-roll.pdf");

Console.WriteLine($"{result.PropertyName?.Value}: {result.Units.Count} units");
Console.WriteLine($"Confidence: {result.Verification.DocumentConfidence:P0}, all checks passed: {result.Verification.AllChecksPassed}");

foreach (var unit in result.Units)
    Console.WriteLine($"  {unit.UnitNumber?.Value,-8} {unit.TenantName?.Value,-24} {unit.MonthlyRent?.Value,10:C}");

foreach (var check in result.Verification.Checks)
    Console.WriteLine($"  [{check.Result}] {check.Name}: {check.Detail}");

Excel / CSV output

byte[] xlsx = await client.ExtractToXlsxAsync(fileStream, "rent-roll.pdf");
string csv  = await client.ExtractToCsvAsync(fileStream, "rent-roll.pdf");

T12 / operating statements

var t12 = await client.ExtractOperatingStatementAsync("t12.pdf");

Console.WriteLine($"{t12.PropertyName?.Value} — {t12.Months.Count} months, {t12.LineItems.Count} line items");
foreach (var item in t12.LineItems)
    Console.WriteLine($"  [{item.Kind,-8}] {item.Label?.Value,-30} {item.Total?.Value,12:C} ({item.Category})");

// Deterministic checks: row totals vs monthly values, EGI, Total OpEx, and NOI reconciliation.
Console.WriteLine($"All checks passed: {t12.Verification.AllChecksPassed}");

ExtractOperatingStatementToXlsxAsync / ExtractOperatingStatementToCsvAsync return file output, mirroring the rent-roll methods.

With IHttpClientFactory

services.AddHttpClient("rentroll", c => c.Timeout = TimeSpan.FromMinutes(5));
// ...
var client = new RentRollClient(httpClientFactory.CreateClient("rentroll"), apiKey);

Error handling

try
{
    var result = await client.ExtractAsync("statement.pdf");
}
catch (RentRollApiException ex) when (ex.StatusCode == HttpStatusCode.UnprocessableEntity)
{
    // 422: corrupt, password-protected, or not a supported document
    Console.WriteLine(ex.Message);
}
catch (RentRollApiException ex) when ((int)ex.StatusCode == 429)
{
    // Monthly quota exceeded and no prepaid credits remain
}

MCP server (AI assistants)

RentRollAPI also runs a hosted Model Context Protocol server — no install required. Point any MCP-capable client (Claude, Cursor, VS Code Copilot, ...) at the streamable-HTTP endpoint and it gains an extract_rent_roll tool:

{
  "mcpServers": {
    "rentrollapi": {
      "type": "http",
      "url": "https://rentrollapi.com/mcp",
      "headers": { "X-Api-Key": "rr_live_your_key" }
    }
  }
}

Omit the header to use the free 3-docs/day demo allowance.

Getting an API key

Plans start at $49/month (50 documents) with a free 3-docs/day demo at rentrollapi.com/app — no signup needed to try it.

Documents are processed in memory and never retained.

Reviews

No reviews yet

Be the first to review this server!