Official .NET SDK for RentRollAPI - rent roll extraction with built-in verification
git clone https://github.com/ekvanauk/rentrollapi-dotnetMCP Servers overview
# RentRollAPI.Client
[](https://www.nuget.org/packages/RentRollAPI.Client)
Official .NET client for [RentRollAPI](https://rentrollapi.com) — 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
```csharp
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
```csharp
byte[] xlsx = await client.ExtractToXlsxAsync(fileStream, "rent-roll.pdf");
string csv = await client.ExtractToCsvAsync(fileStream, "rent-roll.pdf");
```
### T12 / operating statements
```csharp
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
```csharp
services.AddHttpClient("rentroll", c => c.Timeout = TimeSpan.FromMinutes(5));
// ...
var client = new RentRollClient(httpClientFactory.CreateClient("rentroll"), apiKey);
```
### Error handling
```csharp
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](https://modelcontextprotocol.io) 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:
```json
{
"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](https://rentrollapi.com/app/) — no signup needed to try it.
- [API documentation](https://rentrollapi.com/docs.html)
- [Accuracy benchmark & methodology](https://rentrollapi.com/accuracy.html)
Documents are processed in memory and never retained.
What people ask about rentrollapi-dotnet
What is ekvanauk/rentrollapi-dotnet?
+
ekvanauk/rentrollapi-dotnet is mcp servers for the Claude AI ecosystem. Official .NET SDK for RentRollAPI - rent roll extraction with built-in verification It has 0 GitHub stars and was last updated today.
How do I install rentrollapi-dotnet?
+
You can install rentrollapi-dotnet by cloning the repository (https://github.com/ekvanauk/rentrollapi-dotnet) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is ekvanauk/rentrollapi-dotnet safe to use?
+
ekvanauk/rentrollapi-dotnet has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains ekvanauk/rentrollapi-dotnet?
+
ekvanauk/rentrollapi-dotnet is maintained by ekvanauk. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to rentrollapi-dotnet?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy rentrollapi-dotnet to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/ekvanauk-rentrollapi-dotnet)<a href="https://claudewave.com/repo/ekvanauk-rentrollapi-dotnet"><img src="https://claudewave.com/api/badge/ekvanauk-rentrollapi-dotnet" alt="Featured on ClaudeWave: ekvanauk/rentrollapi-dotnet" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!