Skip to content

Default

Arcadia
API integration

Ship Default features without building the integration. Full Arcadia API access via Proxy and 110+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Talk to us
Arcadia

Use Cases

Why integrate with Arcadia

Common scenarios for SaaS companies building Arcadia integrations for their customers.

01

Automate Scope 2 Carbon Accounting Data Collection

ESG and carbon accounting platforms can let customers connect their utility accounts once and automatically sync 12+ months of kWh consumption and billing data. This eliminates manual PDF bill uploads and gives auditors primary-source data for emissions calculations.

02

Enable Portfolio-Wide Energy Monitoring for PropTech

Building management and CRE platforms can map customer real estate portfolios to Arcadia Sites and Meters, then pull 15-minute interval data nightly to detect anomalies, optimize HVAC, and benchmark energy spend across hundreds of locations.

03

Power Solar & Storage ROI Modeling

Solar design and renewable procurement SaaS can request a prospect's historical interval data the moment they authenticate, then model payback periods against tariffs and weather patterns — turning a 2-week proposal process into minutes.

04

Automate Utility Bill AP and Invoice Auditing

Utility bill management platforms can ingest parsed statement line items and raw PDF source files directly, automating accounts payable workflows and flagging billing errors across multi-site enterprise customers without manual data entry.

05

Offer Self-Serve Utility Account Linking

Any SaaS dealing with energy data can embed a hosted Arcadia Connect URL so end users can securely link utility accounts, handle MFA, and refresh credentials — without the SaaS ever touching raw utility logins.

What You Can Build

Ship these features with Truto + Arcadia

Concrete product features your team can ship faster by leveraging Truto’s Arcadia integration instead of building from scratch.

01

Embedded Utility Account Connect Flow

Generate a hosted Arcadia Connect URL so end users can select their utility provider, enter credentials, and complete MFA inside your app without you handling raw secrets.

02

Multi-Site Portfolio Mapping

Programmatically create Arcadia Sites for each customer location and associate utility accounts and meters to mirror your customer's real estate footprint inside your platform.

03

Automated Statement Sync with Source PDFs

Listen for newly discovered statements and pull both the parsed JSON line items and the original PDF source file to maintain an auditable system of record for every utility bill.

04

Bulk Interval Data Ingestion Pipeline

Trigger asynchronous interval or usage downloads at the meter or site level, then ingest the resulting CSV streams to power load analysis, anomaly detection, and forecasting.

05

MFA & Credential Refresh Handling

Programmatically respond to one-time passcode prompts, refresh expired sessions, and update verification methods so utility connections stay live without user intervention.

06

Payment & Balance Visibility Dashboard

Surface utility account payment history and outstanding balances inside your product so customers can track bill resolution and avoid late fees or service interruptions.

SuperAI

Arcadia AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

create_a_arcadia_oauth_2_token

Create an Arcadia access token using client credentials. Returns: access_token, token_type, expires_in. Tokens are valid for one hour. Required: client_id, client_secret, grant_type (must be "client_credentials").

list_all_arcadia_accounts_details

List detailed accounts in the Arcadia system. Returns per-account fields including id, accountNumber, status, statusDetail, provider, createdAt, lastModifiedAt, meterCount, serviceTypes, gapSummary, and more. Supports optional search and globalSearch query filters for narrowing results.

create_a_arcadia_accounts_download

Initiate an account statements download in arcadia as step 1 of a 2-step process. Prepares a CSV file containing high-level summary information for accounts, statements, and associated metadata, then returns a URL to retrieve the generated file via a subsequent GET request. Returns: url.

list_all_arcadia_details

Retrieve a detailed account record from arcadia by account ID. Returns the detailed account object with account-specific fields; consult the arcadia API documentation for the full field-level breakdown. Required: account_id.

arcadia_details_list_2

Retrieve a detailed statement record from arcadia by statement ID. Returns the detailed statement object with statement-specific fields; consult the arcadia API documentation for the full field-level breakdown. Required: statement_id.

arcadia_details_list_3

Retrieve a specific detailed version of an arcadia statement. Returns the detailed statement version object with statement-specific fields; consult the arcadia API documentation for the full field-level breakdown. Required: statement_id, version_id.

list_all_arcadia_payments

List payments for an arcadia account. A payment is a transaction made by the account holder that decreases the account balance. Returns: id, amount, currency, paymentDate, createdAt. Required: account_id.

list_all_arcadia_plug_credentials

List all Arcadia plug credentials in the system. Returns: credentialId, status, isActive, isAccessible, isCustomerActionRequired, username, provider, createdAt, lastModifiedAt, totalAccounts, accountIds, siteIds. Supports field-level filtering via search and full-text filtering via globalSearch.

create_a_arcadia_plug_credential

Create a new Arcadia plug credential for a utility provider. Returns: credentialId, status, isActive, isAccessible, username, provider, createdAt, accountIds, totalAccounts. Required: providerId, username, password.

get_single_arcadia_plug_credential_by_id

Retrieve a single Arcadia plug credential by id. Returns: credentialId, status, isActive, isAccessible, isCustomerActionRequired, username, provider, createdAt, lastModifiedAt, accountIds, siteIds, totalAccounts. Required: id.

update_a_arcadia_plug_credential_by_id

Update an existing Arcadia plug credential by id. Returns: credentialId, status, isActive, username, provider, createdAt, lastModifiedAt, accountIds, totalAccounts. Required: id. At least one body field must be provided.

arcadia_plug_credentials_list_events

List the event history for an Arcadia plug credential, such as when it was created and by whom. Returns: eventType, fieldName, createdAt. Required: credential_id.

create_a_arcadia_credentials_encoded_connect_url

Generate an encoded Arcadia Connect submission URL that prevents parameter tampering and can be shared with users to track credential submissions. Returns: url. Optionally supply correlationId to tag credentials submitted through the link and isCreatorAttributed to attribute the link creator as createdBy on those credentials. Generated URLs expire after 30 days.

list_all_arcadia_counts

Get the count of associated account, meter, and statement resources obtained by a specific credential in arcadia. Returns: accounts, meters, statements. Required: credential_id.

arcadia_counts_list_2

Get the count of associated account, meter, and statement resources obtained by a specific file in arcadia. Returns: accounts, meters, statements. Required: file_id.

update_a_arcadia_disable_resource_by_id

Disable an Arcadia credential along with its associated accounts. The credential must have no running jobs before it can be disabled. Returns: id, attributes. Required: credential_id.

create_a_arcadia_new_statement

Generate a new statement for a sandbox credential in arcadia. Triggers statement generation for the specified credential; applicable only in sandbox mode. Returns a 202 Accepted response with no body on success. Required: credential_id.

update_a_arcadia_one_time_passcode_by_id

Submit a one-time passcode for an arcadia credential's current MFA verification job after selecting a multi-factor authentication method. Returns: id, attributes (credential fields per arcadia's PublicCredentialResource schema). Required: credential_id, oneTimePasscode.

list_all_arcadia_passwords

Retrieve sensitive credential passwords for a given credential in arcadia. Returns the credential secrets object including id, password, and credential_id for the specified credential. Required: credential_id.

create_a_arcadia_refresh

Initiate an MFA session refresh for an Arcadia credential. Starts a background job that logs in to the credential so its MFA session can be refreshed; only supported for Providers that Arcadia has MFA support for. Returns an empty 202 Accepted response on success. Required: credential_id.

list_all_arcadia_refresh_urls

Generate an Arcadia Connect URL that allows a user to refresh their multi-factor authentication (MFA) session for a specified credential. The generated URL is valid for 72 hours. Returns: url. Required: credential_id.

delete_a_arcadia_resource_by_id

Delete a Credential in Arcadia along with its associated Accounts, Meters, and Statements resources; this action is permanent and cannot be recovered. Returns the deletion log including id, which can be used to poll the deletion status. Required: credential_id.

arcadia_resources_delete_2

Delete a File in Arcadia along with its associated Accounts, Meters, and Statements resources; this action is permanent and cannot be recovered. Returns the deletion log including id, which can be used to poll the deletion status. Required: file_id.

list_all_arcadia_update_urls

Generate a Connect URL in Arcadia that allows a user to update their password for a specified credential. Returns: url (the generated Connect URL, valid for 72 hours). Required: credential_id.

update_a_arcadia_verification_method_by_id

Submit the MFA verification method for a credential in arcadia, selecting how multi-factor authentication should be completed for the credential's current job. Returns the updated credential resource including id. Required: credential_id.

get_single_arcadia_plug_deletion_log_by_id

Get a deletion log entry in arcadia by id, returning the details of a specific deletion request after it has been performed. The full response shape is defined by arcadia's PublicDeletionLogResource schema; consult the upstream arcadia docs for the complete field-level breakdown. Required: id.

list_all_arcadia_plug_discovered_statements

List discovered statements in Arcadia. Returns: id, statementId, status, statementDate, periodStartDate, periodEndDate, accountIds, credentialIds, and provider details. Supports filtering via search or globalSearch.

get_single_arcadia_plug_discovered_statement_by_id

Retrieve a single discovered statement from Arcadia by id. Returns: id, statementId, status, statementDate, periodStartDate, periodEndDate, accountIds, credentialIds, invoiceNumber, hasValidAccountStatus, dataIngestionMethod, and provider details. Required: id.

list_all_arcadia_sources

Download the source file for a discovered statement in arcadia. Returns a binary PDF file stream whose content is the raw source document. Required: discovered_statement_id.

arcadia_sources_list_2

Stream a prepared download in arcadia as the second step of a 2-step process; returns accounts, meters, statements, or associated metadata as CSV or JSON when ready. Required: download_request_webhook_id (formed by appending the token from the first-step prepare-download response to the downloadId without any space).

arcadia_sources_list_3

Download the source PDF for a specific file in arcadia. Returns a binary file stream containing the raw source document. Required: file_id.

arcadia_sources_list_4

Download the source file for a specific statement in arcadia; the file is typically a structured PDF or a PDF rendering of a portion of the utility website. Returns a binary PDF file stream. Required: statement_id.

list_all_arcadia_versions

List all versions of a specific Discovered Statement in arcadia. Returns a paged collection of discovered statement versions; each record includes id. Required: discovered_statement_id.

arcadia_versions_list_2

Retrieve a specific version of a Discovered Statement in arcadia. Returns: id. Required: discovered_statement_id, discovered_statement_version_id.

arcadia_versions_list_3

List all versions of a specific Statement in arcadia. Returns a paged collection of statement version summaries; each record includes id. Required: statement_id.

get_single_arcadia_version_by_id

Retrieve a specific version of a Statement in arcadia. Returns: id. Required: statement_id, id.

create_a_arcadia_downloads_csv

Create a CSV download request in arcadia that generates a report for a specified entity type (Account and Statement Gap, Credential, File, Meter, Site, or Statement). Returns the download request resource including id, status, entityType, and downloadMethod. When downloadMethod is IN_BROWSER, use the id from the response to poll the Get DownloadRequest endpoint to retrieve the file. Required: entityType.

get_single_arcadia_plug_download_by_id

Get a specific download request in arcadia by its downloadRequestWebhookId. Returns the download request object including id. Required: id (constructed by appending the authentication token from the initial step to the downloadId with no space in between).

list_all_arcadia_plug_expected_accounts

List expected accounts in Arcadia. Returns: id, expectedAccountNumber, normalizedExpectedAccountNumber, providerId, providerName. Optionally filter results using search (by expectedAccountNumber, normalizedExpectedAccountNumber, providerId, or providerName) or globalSearch.

create_a_arcadia_plug_expected_account

Create a new expected account in Arcadia. Returns: id, expectedAccountNumber, normalizedExpectedAccountNumber, providerId, providerName. Required: expectedAccountNumber, providerId.

list_all_arcadia_plug_files

List utility statement PDF files in Arcadia that have been uploaded for OCR processing. Returns: fileId, fileName, status, statusDetails, createdAt, organizationId, transferMethod, correlationId, accountNumbers, statementId, discoveredStatementId, provider. Filter with `search` (supports accountNumbers, correlationId, status, and more) or `globalSearch` query parameters.

create_a_arcadia_plug_file

Upload one or more utility statement PDF files to Arcadia for OCR processing. Returns: fileId, fileName, status, createdAt, organizationId, transferMethod, correlationId, accountNumbers. Required: files (multipart/form-data). Maximum 75 files per upload; combined size must be under 1 GB; each file must contain a single statement.

get_single_arcadia_plug_file_by_id

Retrieve the details of a specific Arcadia file by id. Returns: fileId, fileName, status, statusDetails, createdAt, organizationId, correlationId, transferMethod, accountNumbers, normalizedAccountNumbers, statementId, discoveredStatementId, provider. Required: id.

update_a_arcadia_plug_file_by_id

Update an Arcadia file by id. Currently only the correlationId field can be updated. Returns: fileId, fileName, status, statusDetails, createdAt, organizationId, correlationId, transferMethod, accountNumbers, statementId, discoveredStatementId, provider. Required: id.

arcadia_plug_files_list_events

List the event history for an Arcadia file, such as when it was created and by whom. Returns: eventType, fieldName, createdAt for each event. Supports filtering via `search` (searchable fields: createdAt, eventType, fieldName). Required: file_id.

get_single_arcadia_intervals_meter_by_id

Get utility-provided electric interval readings for a specific meter in Arcadia. Returns time-series energy data for granular analysis (solar/storage modelling, Demand Response validation) covering up to 1 year of historical data. Returns: meterId, intervals. Required: id. Optionally filter the range with startAt and endAt; each window spans at most 1 year.

list_all_arcadia_plug_meters

List Arcadia meters retrieved from utility providers using submitted credentials. Returns: id, meterNumber, status, serviceType, providerId, siteId, accountId, createdAt. Use `search` to filter by over 50 fields including accountNumber, siteId, serviceType, and more.

create_a_arcadia_plug_meter

Create an Arcadia meter for providers supporting intervals third-party portals for indirect account access. The end user receives an email to approve provider access before Arcadia can read data. Returns: id, meterNumber, status, serviceType, providerId, siteId, accountId.

get_single_arcadia_plug_meter_by_id

Retrieve a specific Arcadia meter by id. Returns the meter record including id, meterNumber, status, serviceType, providerId, siteId, accountId, serviceAddress, and more. If the associated account is not activated, limited data is returned. Required: id.

update_a_arcadia_plug_meter_by_id

Fully replace an Arcadia meter's fields using PUT; all fields must be provided for a complete update. Supports up to 10 custom data fields (customData1–customData10) for tying meters back to records in your own system. Returns: id, meterNumber, status, serviceType, siteId, customData1. Required: id.

arcadia_plug_meters_update_2

Partially update an Arcadia meter by id using PATCH. Supports up to 10 custom data fields (customData1–customData10) for tying meters back to records in your own system. Returns: id, meterNumber, status, serviceType, siteId, customData1. Required: id.

arcadia_plug_meters_list_events

List the event history for an Arcadia meter, showing when changes occurred and who triggered them. Returns: createdAt, eventType, fieldName. Required: meter_id.

arcadia_plug_meters_partial_update

Partially update an Arcadia meter by id using PATCH. Supports up to 10 custom data fields (customData1–customData10) for tying meters back to records in your own system. Returns: id, meterNumber, status, serviceType, siteId, customData1. Required: id.

create_a_arcadia_downloads_interval

Prepare a meter intervals CSV download in arcadia. Initiates the first step of a 2-step download process: the response provides a url that can be used with a subsequent GET request to stream the generated CSV file. Returns: url. Required: meter_ids. Maximum 500 meter IDs per request.

arcadia_downloads_intervals_create_2

Prepare a site meter intervals CSV download in arcadia grouped by site. Initiates the first step of a 2-step download process: the response provides a url that can be used with a subsequent GET request to stream the generated CSV file. Returns: url. Required: site_ids. Maximum 500 meters per request.

create_a_arcadia_downloads_usage

Prepare an arcadia meter usage CSV download by submitting up to 500 meter IDs. This first step accepts the meter IDs and returns a URL to use in a subsequent GET request to stream the generated CSV file. Returns: url. Required: meter_ids. Max 500 meter IDs per request.

arcadia_downloads_usages_create_2

Prepare an arcadia sites usage CSV download by submitting up to 500 site IDs. This first step accepts the site IDs and returns a URL to use in a subsequent GET request to stream the generated CSV file. Returns: url. Required: site_ids. Max 500 site IDs per request.

get_single_arcadia_normalized_intervals_meter_by_id

Get normalized 15-minute interval data for a specific meter in Arcadia. Returns the interval data object for the meter, including meterId, startAt, endAt, and intervals (array of normalized 15-minute energy readings). Required: id. The API returns up to 1 year of data per request; use startAt and endAt to scope the range.

list_all_arcadia_plug_organizations

Retrieve the Arcadia organization details. Returns: name, accountCustomData, meterCustomData (the organization name and all account- and meter-level custom data field names configured for your org).

update_a_arcadia_plug_organization_by_id

Set organization custom data field names in Arcadia via a full PUT replacement — all fields must be provided to ensure a complete update. Returns: name, accountCustomData, meterCustomData. Supports up to 25 account-level and 10 meter-level custom data fields.

arcadia_plug_organizations_update_2

Update organization custom data field names in Arcadia. Returns: name, accountCustomData, meterCustomData. Supports up to 25 account-level and 10 meter-level custom data fields.

arcadia_plug_organizations_partial_update

Partially update organization custom data field names in Arcadia. Returns: name, accountCustomData, meterCustomData. Supports up to 25 account-level and 10 meter-level custom data fields.

list_all_arcadia_organization_events

List organization events in arcadia, returning the history of changes made to your organization's custom data fields. Returns: createdAt, createdBy, eventType, fieldName, newValue, oldValue. Supports filtering via search or globalSearch, and sorting by any event field.

list_all_arcadia_plug_sites

List all Arcadia sites available in your organization. Returns site records including id, siteName, city, state, postalCode, createdAt, accountIds, and meterIds, along with building and HVAC metadata. Optionally narrow results using search or globalSearch query parameters.

create_a_arcadia_plug_site

Create a new Arcadia site for grouping credentials, accounts, meters, and statements by location or logical grouping. Returns the created site object including id, siteName, city, state, postalCode, createdAt, accountIds, meterIds, and building/HVAC metadata.

get_single_arcadia_plug_site_by_id

Retrieve a single Arcadia site by id. Returns the full site object including id, siteName, city, state, postalCode, streetLine1, createdAt, accountIds, meterIds, and building/HVAC metadata. Required: id.

update_a_arcadia_plug_site_by_id

Fully update an Arcadia site by id using PUT. All fields must be provided to ensure a complete replacement of the existing resource. Returns the updated site object including id, siteName, city, state, postalCode, createdAt, accountIds, meterIds, and building/HVAC metadata. Required: id.

arcadia_plug_sites_update_2

Partially update an Arcadia site by id using PATCH; only the provided fields are modified. Returns the updated site object including id, siteName, city, state, postalCode, createdAt, accountIds, meterIds, and building/HVAC metadata. Required: id.

delete_a_arcadia_plug_site_by_id

Delete an Arcadia site by id. Does not delete related entities, but removes their references to the deleted site (e.g. assigned meters become unassigned). Returns a deletion log object with id that can be used to poll deletion status via the deletion log endpoint. Required: id.

arcadia_plug_sites_list_events

List the event history for a specific Arcadia site, such as when the site was created or modified. Returns event records including eventType, fieldName, and createdAt. Optionally filter by createdAt, eventType, or fieldName using the search parameter. Required: site_id.

arcadia_plug_sites_partial_update

Partially update an Arcadia site by id using PATCH; only the provided fields are modified. Returns the updated site object including id, siteName, city, state, postalCode, createdAt, accountIds, meterIds, and building/HVAC metadata. Required: id.

update_a_arcadia_meter_by_id

Add meters to an Arcadia site by associating a non-empty list of meter IDs with the specified site. Returns a paged list of meter objects including id. Required: site_id, meterIds.

delete_a_arcadia_meter_by_id

Remove meters from an Arcadia site by disassociating a non-empty list of meter IDs; the meters themselves are not deleted, only the site association is removed. Returns an empty 200 response on success. Required: site_id, meterIds.

list_all_arcadia_plug_statements

List statements in Arcadia. Returns: id, accountIds, amountDue, statementDate, periodStartDate, periodEndDate, totalCharges, outstandingBalance, type, versionId, and isLatestVersion. Does not include line item charges or usages. Supports optional search and globalSearch query parameters.

get_single_arcadia_plug_statement_by_id

Retrieve a single Arcadia statement by id. Returns: id, accountIds, amountDue, statementDate, periodStartDate, periodEndDate, totalCharges, outstandingBalance, type, versionId, isLatestVersion, providerId, dueDate, and more. Required: id.

list_all_arcadia_statements_details

List detailed statements in the Arcadia system. Returns: id, statementDate, periodStartDate, periodEndDate, totalCharges, amountDue, outstandingBalance, dueDate, invoiceNumber, type, providerId, versionId, isLatestVersion, hasValidAccountStatus, createdAt, lastModifiedAt, and related account, meter, and site identifiers. Supports field-level filtering via search and globalSearch.

create_a_arcadia_statements_download

Initiate a statement CSV download in arcadia as the first step of a two-step process — submits statement IDs to prepare the file and returns a URL for use in the subsequent download step. Returns: url. Maximum of 500 statement IDs per request; make multiple requests to download more.

list_all_arcadia_webhooks

List all webhooks in Arcadia. Returns: id, eventType, status, webhookUrl, createdAt, lastAttemptedSendAt, nextScheduledSendAt, numberOfAttempts, resource, message, createdBy, and lastModifiedBy. Webhooks are automatically deleted 30 days after their last send attempt (RTCV and MFA webhooks are deleted sooner). Supports filtering with the search query parameter.

get_single_arcadia_webhook_by_id

Retrieve a single Arcadia webhook by id. Returns: id, eventType, status, webhookUrl, message, resource, numberOfAttempts, createdAt, lastAttemptedSendAt, nextScheduledSendAt, createdBy, and lastModifiedBy. Required: id.

create_a_arcadia_resend

Resend a webhook in arcadia by asynchronously rescheduling it to be sent to the current webhook URL configured for your organization. Returns the webhook object including id and url. Required: webhook_id.

list_all_arcadia_plug_providers

List all Providers available in the Arcadia system. Returns: id, name, country, region, website, isHistorySupported, isMultiFactorAuthenticationSupported, isInstantIntervalsSupported, and nested intervals, statements, and multiFactorAuthentication support objects. Optionally filter results using search or globalSearch.

get_single_arcadia_plug_provider_by_id

Retrieve a single Arcadia Provider by id. Returns: id, name, country, region, website, isHistorySupported, isMultiFactorAuthenticationSupported, isInstantIntervalsSupported, and nested intervals, statements, and multiFactorAuthentication support objects. Required: id.

list_all_arcadia_account_details

List details for a specific account in arcadia. Returns: accountId, isStatementsProductActive. Required: account_id.

list_all_arcadia_account_payments

List payments associated with a specific arcadia account. Returns payment records including id. Required: account_id.

list_all_arcadia_credential_counts

List counts for a specific Arcadia credential, returning aggregated account totals associated with it. Returns: credential_id, accounts, active_accounts. Required: credential_id.

update_a_arcadia_credential_disable_resource_by_id

Disable resources associated with a specific Arcadia credential. Returns an empty 204 response on success. Required: credential_id.

create_a_arcadia_credential_new_statement

Create a new statement request for a credential in Arcadia, triggering retrieval of updated utility statements for that credential. Returns: type, payload (containing utilityCredentialId on submission or status on completion). Required: credential_id.

update_a_arcadia_credential_one_time_passcode_by_id

Update the one-time passcode associated with a specific Arcadia credential. Required: credential_id. Returns an empty 204 response on success.

list_all_arcadia_credential_passwords

List passwords associated with a given Arcadia credential. Returns id and attributes for each password record. Required: credential_id.

create_a_arcadia_credential_refresh

Refresh an Arcadia credential by credential ID, triggering re-validation or re-fetching of utility account data. Returns an empty 204 response on success. Required: credential_id.

list_all_arcadia_credential_refresh_urls

Get the refresh Connect URL for an existing Arcadia credential, enabling re-authentication or re-linking of the credential via the Connect flow. Returns: url. Required: credential_id.

delete_a_arcadia_credential_resource_by_id

Delete resources associated with a credential in Arcadia. Returns an empty 204 response on success. Required: credential_id.

list_all_arcadia_credential_update_urls

List the update URL for a specific arcadia credential. Returns: url. Required: credential_id.

update_a_arcadia_credential_verification_method_by_id

Update the verification method for an Arcadia credential identified by credential_id. Returns: type, payload (containing utilityCredentialId on submission, or status of LOGIN_SUCCESS or PENDING on completion). Required: credential_id.

list_all_arcadia_discovered_statement_sources

List source records associated with a discovered statement in Arcadia. Returns source objects including id and provider-specific attributes for the given statement. Required: discovered_statement_id.

list_all_arcadia_discovered_statement_versions

List all versions of a discovered statement in Arcadia. Returns: id, discovered_statement_id, version. Required: discovered_statement_id.

get_single_arcadia_discovered_statement_version_by_id

Get a single version of a discovered statement in Arcadia by id. Returns: id, discovered_statement_id, version. Required: discovered_statement_id, id.

list_all_arcadia_download_sources

Poll for the prepared CSV download source for an Arcadia download request. Returns a streamable CSV file when the download is ready (HTTP 200), or a 202 response while the file is still being prepared — continue polling until a 200 is received. Required: download_request_webhook_id.

create_a_arcadia_download_csv

Create a CSV download request for meter-level usage data across a selection of sites in Arcadia. Returns: url (extract the id segment from the url and pass it to the Stream Download endpoint to poll for or retrieve the completed file). Required: meterIds. Maximum 500 meterIds per request; submit multiple requests for larger datasets.

list_all_arcadia_file_counts

List count statistics for a specific file in arcadia, summarizing the bulk file processing results. Returns: total, errors, warnings. Required: file_id.

delete_a_arcadia_file_resource_by_id

Delete resources associated with a specific file in arcadia. Returns an empty 204 response on success. Required: file_id.

list_all_arcadia_file_sources

List source records associated with a file in arcadia. Returns the source record object with content-specific fields whose shape depends on the file type. Required: file_id.

create_a_arcadia_meter_downloads_interval

Create a download request for meter-level interval usage data in Arcadia. Returns: url (the polling URL used to stream the resulting CSV via the Stream Download endpoint). Required: meterIds. Maximum of 500 meterIds per request; submit multiple requests for larger datasets.

create_a_arcadia_meter_downloads_usage

Create a meter-level usage data download request in Arcadia for a set of meters. Returns: url (the download request URL from which you extract the ID to poll the Stream Download endpoint until the CSV is ready). Required: meterIds. Maximum of 500 meter IDs per request; make multiple requests for larger sets.

create_a_arcadia_site_downloads_interval

Create a download request for site meter usage data intervals in Arcadia. Returns: url (a link to the generated download resource, whose embedded ID can be used with the Stream Download endpoint to poll for readiness). Required: meterIds. Maximum 500 meter IDs per request; submit multiple requests for larger datasets.

create_a_arcadia_site_downloads_usage

Create a site-level usage download request in Arcadia to prepare a CSV file of meter usages across one or more sites. Returns: url (extract the ID segment from this URL to use with the Stream Download endpoint for polling; the file will also be emailed when ready). Required: siteIds.

update_a_arcadia_site_meter_by_id

Update meters associated with a specific site in arcadia. Required: site_id.

delete_a_arcadia_site_meter_by_id

Delete meters associated with a specific site in arcadia. Returns an empty 204 response on success. Required: site_id.

list_all_arcadia_statement_details

List detail line items for an Arcadia statement. Returns: id. Required: statement_id.

list_all_arcadia_statement_sources

List source records associated with a specific statement in Arcadia. Returns: id, statement_id. Required: statement_id.

list_all_arcadia_statement_version_details

List detail records for a specific version of an Arcadia statement. Returns: id. Required: statement_id, version_id.

list_all_arcadia_statement_versions

List all versions of a statement in Arcadia. Returns: id, statement_id. Required: statement_id.

get_single_arcadia_statement_version_by_id

Get a specific version of a statement in Arcadia by id. Returns: id, statement_id. Required: statement_id, id.

create_a_arcadia_webhook_resend

Trigger a resend of a webhook event in Arcadia for the specified webhook. Returns an empty 204 response on success. Required: webhook_id.

Why Truto

Why use Truto’s MCP server for Arcadia

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 500+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Arcadia in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Arcadia account

Use Truto’s frontend SDK to connect your customer’s Arcadia account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Arcadia

Truto’s Proxy API is a 1-to-1 mapping of the Arcadia API. You call us, we call Arcadia, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Arcadia’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Arcadia on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How do end users authenticate their utility accounts?

Truto exposes Arcadia's hosted Connect flow via `create_a_arcadia_credentials_encoded_connect_url`. You generate a URL, redirect your user, and Arcadia handles provider selection, credential entry, and MFA. Your platform never stores raw utility logins.

Can the integration handle utility portals that require MFA or OTP codes?

Yes. Endpoints like `update_a_arcadia_one_time_passcode_by_id`, `update_a_arcadia_verification_method_by_id`, and `create_a_arcadia_refresh` let you programmatically respond to OTP prompts and refresh sessions for utilities that force frequent re-authentication.

How do I pull granular 15-minute interval consumption data?

Use `get_single_arcadia_normalized_intervals_meter_by_id` for direct reads, or for bulk loads trigger `create_a_arcadia_downloads_interval` (or the site/meter-scoped variants) to kick off an async job. You then poll or listen for the resulting CSV/JSON download to ingest.

Can I retrieve both parsed statement data and the original PDF?

Yes. `list_all_arcadia_plug_statements` and `list_all_arcadia_statements_details` return parsed line-item billing data, while `list_all_arcadia_sources` and related source endpoints provide the raw PDF documents processed by Arcadia's OCR engine.

How do I keep my internal IDs in sync with Arcadia Sites and Meters?

When creating Sites (`create_a_arcadia_plug_site`), Meters (`create_a_arcadia_plug_meter`), or Files (`create_a_arcadia_plug_file`), you can attach metadata fields to map Arcadia IDs back to your own database records, making bi-directional lookups straightforward.

How fresh is the data, and how do I know when new statements arrive?

Arcadia syncs data on a recurring cadence per utility. You can use `list_all_arcadia_webhooks` to manage webhook subscriptions and `list_all_arcadia_plug_discovered_statements` to fetch newly discovered bills, eliminating the need for blind polling.

Arcadia

Get Arcadia integrated into your app

Our team understands what it takes to make a Arcadia integration successful. A short, crisp 30 minute call with folks who understand the problem.