> ## Documentation Index
> Fetch the complete documentation index at: https://agents.nanonets.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Sage Intacct Read Object

> Reads rows from a single Sage Intacct object by field filters.

Reads rows from a single Sage Intacct object — for example `LOCATIONENTITY` (entities/locations), `DEPARTMENT`, `GLACCOUNT`, or `CLASS`. Display name follows the registry name. Off by default.

This is a generic, read-only engine for the plain-read family: name the object, optionally list fields, optionally add structured filters. It does **not** replace the tools that carry extra logic — use `sage_intacct_get_vendor` (fuzzy matching), `sage_intacct_get_po` / `sage_intacct_get_receipts_by_po` (multi-object joins), or `sage_intacct_get_payments` (join) for those objects.

Typical use is behind a pinned configured-tool wrapper (e.g. an entity-lookup wrapper that binds `object=LOCATIONENTITY`) so the agent supplies only the lookup value, not the object.

## Authentication and enablement

Requires a workspace Sage Intacct integration. `company_id`, `user_id`, and `user_password` are injected from the integration config and are not shown as per-run inputs. Enable the tool and bind the integration.

## Inputs

* `object` (required) — the Sage Intacct object/integration name. Case-insensitive. Restricted to an allowlist: `LOCATIONENTITY`, `DEPARTMENT`, `GLACCOUNT`, `CLASS`. Any other object is refused (see limits below).
* `fields` — array of field names to return. Omit (or pass `["*"]`) for all fields. Field names accept letters, digits, and underscore only. Dotted names (e.g. `VENDOR.NAME`) are refused: Sage treats them as traversal into a related object, which would reach past the object allowlist.
* `filters` — array of `{ field, operator, value }` conditions combined with AND. `operator` is `equals` (default) or `like` (use `%` wildcards). Field names are validated (letters/digits/underscore, no dots); values are single-quote escaped internally.
* `max_results` — default 100; clamped to a maximum of 1000 (Sage's page-size ceiling).
* `entity_id` — scopes the read to a specific entity in a multi-entity company. Empty reads at the top level.

## Output

Matching records as structured rows (one `field → value` map per record). Metadata carries the returned `count`, the queried `object`, Sage's `total_count` and `num_remaining`, and a `truncated` flag. When `num_remaining` is greater than zero the result set is incomplete — raise `max_results` or narrow the filters.

## Limits and side effects

* Read-only. Never creates or modifies records.
* **Object allowlist.** Only `LOCATIONENTITY`, `DEPARTMENT`, `GLACCOUNT`, and `CLASS` may be read. This is a deliberate floor no configuration can widen, so the generic reader cannot be pointed at sensitive objects (employees, contacts, payment/bank records). Adding an object is a reviewed code change.
* Targets plain (flat) objects. Nested/relationship elements more than one level deep are not expanded — use a dedicated `get_*` tool for objects with line items or joins.
* Only `equals` and `like` operators are supported; other operators return an error.

## Expected errors

* Integration credentials missing (`company_id` / `user_id` / `user_password`).
* `object` not provided, or not on the allowlist.
* Invalid field name (in `fields` or a filter `field`).
* A filter with a value but no `field` — rejected outright rather than dropped, so a malformed filter can never silently widen the read to every row.
* Unsupported filter operator.
* Sage Intacct API error (e.g. unknown object or field) / no match.
