Client Library

TypeScript SDK

The official SDK for the Mesocratic Compliance Engine. Fully typed. Generated from our OpenAPI spec.

@mesocrats/mce-sdk

v1.0.0

Package

@mesocrats/mce-sdk

License

MIT

TypeScript

Full types included

Node.js

>= 18.0.0

Installation

npm
bash
npm install @mesocrats/mce-sdk

Quick Start

Initialize the client
typescript
1import { MesocraticClient } from '@mesocrats/mce-sdk';
2
3const client = new MesocraticClient({
4 TOKEN: 'mce_live_your_api_key',
5});
6
7// Get your committee
8const { data: committee } = await client.committees.getCommittee();
9
10// Record a contribution
11const { data: contribution } = await client.contributions.createContribution({
12 contributor_id: 'uuid',
13 amount_cents: 25000,
14 date_received: '2026-03-06',
15 contribution_type: 'individual',
16});

Services

CommitteesService

client.committees

Manage your committee record. Create or retrieve the committee bound to your API key.

getCommittee(): Promise<{ data: Committee | null }>

createCommittee(body): Promise<{ data: Committee }>

ContributorsService

client.contributors

Create and search contributor (donor) records with automatic match_key generation.

listContributors(page?, limit?, search?): Promise<{ data: Contributor[], pagination }>

createContributor(body): Promise<{ data: Contributor }>

ContributionsService

client.contributions

Record contributions with automatic FEC limit enforcement, YTD aggregate tracking, and itemization.

listContributions(page?, limit?, startDate?, endDate?, contributorId?, itemized?): Promise<{ data: Contribution[], pagination }>

createContribution(body): Promise<{ data: Contribution & { aggregate: AggregateInfo } }>

getContribution(id): Promise<{ data: Contribution }>

DisbursementsService

client.disbursements

Track committee expenditures with FEC-compliant categorization.

listDisbursements(page?, limit?, startDate?, endDate?, category?): Promise<{ data: Disbursement[], pagination }>

createDisbursement(body): Promise<{ data: Disbursement }>

ReportsService

client.reports

Create and manage FEC filing reports with coverage period tracking.

listReports(status?, reportType?): Promise<{ data: Report[] }>

createReport(body): Promise<{ data: Report }>

ComplianceService

client.compliance

Look up FEC contribution limits for your committee type and election cycle.

getComplianceLimits(): Promise<{ data: { committee_type, cycle, limits, itemization_threshold } }>

SystemService

client.system

Health check endpoint. No authentication required.

getHealth(): Promise<{ status, version, timestamp, database }>

Typed Models

ModelDescription
CommitteeCommittee record with FEC ID, type, treasurer, and filing frequency
ContributionIndividual contribution with amount, date, itemization, and attestation flags
ContributorDonor record with name, address, employer, occupation, and match_key
DisbursementExpenditure record with payee, purpose, category, and optional receipt
ReportFEC filing report with coverage period, status, and filing deadline
AggregateInfoYear-to-date contribution aggregate for a contributor
LimitFEC contribution limits by committee type for the current cycle
PagePaginated response page wrapper
PaginationPagination metadata: page, limit, total, total_pages
ErrorAPI error response with error message string

OpenAPI Specification

Machine-readable API description conforming to OpenAPI 3.1. Use it to generate client libraries, mock servers, or import into Postman, Insomnia, or any OpenAPI-compatible tool.

Coming Soon

Python SDK

Coming Soon

pip install mesocrats-mce

Full Python client with type hints and async support. Targeting Q3 2026.

Ruby SDK

Coming Soon

gem install mesocrats-mce

Ruby gem with idiomatic API wrappers. Targeting Q4 2026.