# Farmbrite MCP by usefulapi (remote · farmbrite.usefulapi.io)

Read Farmbrite livestock, crops, tasks, inventory and orders; log records and tasks.

- Trust score: 60/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-25

## Components

- remote · `farmbrite.usefulapi.io`: 60/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-farmbrite/farmbrite.md), [page](https://verifymcp.io/servers/io-usefulapi-farmbrite/farmbrite)

## Channel facts

- Endpoint: `https://farmbrite.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.1.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-25.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 74/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 7297 tokens (~165/item across 44 items; 44 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 88/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 63% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 45 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Farmbrite MCP by usefulapi server?

Farmbrite MCP by usefulapi is a hosted endpoint at https://farmbrite.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-farmbrite 'https://farmbrite.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-farmbrite": {
      "url": "https://farmbrite.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-farmbrite": {
      "type": "http",
      "url": "https://farmbrite.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-farmbrite]
url = "https://farmbrite.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-farmbrite": {
      "type": "remote",
      "url": "https://farmbrite.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-farmbrite --url 'https://farmbrite.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-farmbrite:
    url: "https://farmbrite.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-farmbrite": {
      "Transport": "http",
      "Url": "https://farmbrite.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-farmbrite -t streamable-http -u 'https://farmbrite.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-farmbrite": {
      "type": "http",
      "url": "https://farmbrite.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-25 (score 60, 0)

- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.1.0 → 1.1.3

### 2026-10-24 (score 60)

First indexed and scored.

## MCP tools (44)

### `farmbrite_list_animals` (~313 tokens)

List animals

List livestock records (name, type, tag number, gender, breed, status, weight, group, purchase/sale data). Farmbrite returns only active-status animals unless you filter by status (Sold, Deceased, Culled, Butchered, Archived...). GET /animals.

Input parameters:

- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `name` (string): Animals whose name contains this text.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.
- `status` (string): Only animals with this status (the default list is Active-type statuses only).
- `tag_number` (string): Only the animal with this tag number.
- `type` (string): Only this animal type, e.g. Cattle, Sheep, Chicken.

### `farmbrite_get_animal` (~47 tokens)

Get animal

One animal by id, with its current location and custom fields. GET /animals/{animal_id}.

Input parameters:

- `animal_id` (string, required): Animal id (a Farmbrite id string).

### `farmbrite_list_livestock_groups` (~204 tokens)

List livestock groups

List livestock groups (id, name, type). GET /livestock_groups.

Input parameters:

- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.

### `farmbrite_get_livestock_group` (~55 tokens)

Get livestock group

One livestock group by id with its member count, filters and member animals. GET /livestock_groups/{group_id}.

Input parameters:

- `group_id` (string, required): Livestock group id (a Farmbrite id string).

### `farmbrite_list_animal_measurements` (~132 tokens)

List animal measurements

Weight, height, temperature, condition score and fecal-count records of one animal, newest data included. GET /animals/{animal_id}/measurements.

Input parameters:

- `animal_id` (string, required): Animal id (a Farmbrite id string).
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.

### `farmbrite_list_feedings` (~121 tokens)

List feedings

Feeding records (amount, cost, date, feed type, inventory used) of one animal or livestock group. GET /{animals|livestock_groups}/{id}/feedings.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `parent` (string, required): Whose feedings.
- `parent_id` (string, required): Animal or livestock group id (a Farmbrite id string).

### `farmbrite_list_grazing_summary` (~217 tokens)

List grazing summary

Grazing status per field/pasture: animals present, days rested, rest days required, last grazed. GET /grazings.

Input parameters:

- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.

### `farmbrite_list_plants` (~209 tokens)

List plant types

List plant types/varieties (days to maturity, spacing, market price, harvest unit). GET /plants.

Input parameters:

- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.

### `farmbrite_list_crops` (~260 tokens)

List crop plantings

List crop plantings (plant, field/plot, bed, quantity, planting and expected harvest dates, growth stage). GET /crops.

Input parameters:

- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `plant_id` (string): Only plantings of this plant type id (a Farmbrite id string).
- `plot_id` (string): Only plantings in this field/plot id (a Farmbrite id string).
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.

### `farmbrite_get_crop` (~41 tokens)

Get crop planting

One crop planting by id. GET /crops/{crop_id}.

Input parameters:

- `crop_id` (string, required): Crop planting id (a Farmbrite id string).

### `farmbrite_list_plots` (~208 tokens)

List fields (plots)

List fields/grow locations (title, type, size, status, grazing rest days). GET /plots.

Input parameters:

- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.

### `farmbrite_get_plot` (~44 tokens)

Get field (plot)

One field/grow location by id. GET /plots/{plot_id}.

Input parameters:

- `plot_id` (string, required): Field (plot) id (a Farmbrite id string).

### `farmbrite_list_harvests` (~124 tokens)

List harvests

Harvest records (quantity, unit, grade, price, date, inventory added) of one animal or crop planting. GET /{animals|crops}/{id}/harvests.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `parent` (string, required): Whose harvests.
- `parent_id` (string, required): Animal or crop planting id (a Farmbrite id string).

### `farmbrite_list_treatments` (~133 tokens)

List treatments

Treatment records (type, product, amount, cost, date, withdrawal date, technician) of one animal, field or crop planting. GET /{animals|plots|crops}/{id}/treatments.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `parent` (string, required): What was treated.
- `parent_id` (string, required): Animal, field (plot) or crop planting id (a Farmbrite id string).

### `farmbrite_list_notes` (~141 tokens)

List notes

Notes (description, category, date, keywords) attached to an animal, field, plant type, crop planting or inventory type. GET /{animals|plots|plants|crops|inventory_types}/{id}/notes.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `parent` (string, required): What the notes are attached to.
- `parent_id` (string, required): Id of the animal, field, plant type, crop planting or inventory type (a Farmbrite id string).

### `farmbrite_list_contacts` (~238 tokens)

List contacts

List contacts (customers, suppliers, vendors): name, company, email, phone, type, label. GET /contacts.

Input parameters:

- `email` (string): Only the contact with this exact email.
- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `name` (string): Contacts whose last name contains this text.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.

### `farmbrite_get_contact` (~41 tokens)

Get contact

One contact by id, with address. GET /contacts/{contact_id}.

Input parameters:

- `contact_id` (string, required): Contact id (a Farmbrite id string).

### `farmbrite_list_tasks` (~256 tokens)

List tasks

List tasks (title, description, status, priority, assignee, due/end time, checklist, linked animal/field/crop). GET /tasks.

Input parameters:

- `assigned_to_id` (string): Only tasks assigned to this user id (a Farmbrite id string).
- `complete` (boolean): true = only completed tasks, false = only open tasks.
- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.

### `farmbrite_get_task` (~41 tokens)

Get task

One task by id with its checklist. GET /tasks/{task_id}.

Input parameters:

- `task_id` (string, required): Task id (a Farmbrite id string).

### `farmbrite_list_activities` (~212 tokens)

List schedule activities

List calendar/schedule activities (title, start and end time, all-day flag, linked animal or field). GET /activities.

Input parameters:

- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.

### `farmbrite_list_inventory_types` (~217 tokens)

List inventory items

List inventory item types (feed, supplies, harvested products) with the quantity remaining, unit, value and low-stock alert level. GET /inventory_types.

Input parameters:

- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.

### `farmbrite_get_inventory_type` (~52 tokens)

Get inventory item

One inventory item type by id with quantity remaining and projected empty date. GET /inventory_types/{inventory_type_id}.

Input parameters:

- `inventory_type_id` (string, required): Inventory type id (a Farmbrite id string).

### `farmbrite_get_inventory_locations` (~119 tokens)

Get inventory by location

Where one inventory item is stored: warehouse and bin ids and names, capacity and quantity remaining in each. Use the ids with farmbrite_add_inventory / farmbrite_remove_inventory. GET /inventory_types/{inventory_type_id}/inventory.

Input parameters:

- `inventory_type_id` (string, required): Inventory type id (a Farmbrite id string).
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.

### `farmbrite_list_warehouses` (~218 tokens)

List storage locations

List storage locations (warehouses) for inventory: name, description, internal id. Use the ids when adding or removing inventory. GET /warehouses.

Input parameters:

- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.

### `farmbrite_list_orders` (~256 tokens)

List orders

List sales orders (status, payment status, total, dates, contact, delivery type, invoice number). GET /orders.

Input parameters:

- `contact_id` (string): Only orders of this contact id (a Farmbrite id string).
- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `payment_status` (string): Only orders with this payment status.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.
- `status` (string): Only orders with this status.

### `farmbrite_get_order` (~50 tokens)

Get order

One order by id with its line items, customer contact, delivery address and totals. GET /orders/{order_id}.

Input parameters:

- `order_id` (string, required): Order id (a Farmbrite id string).

### `farmbrite_list_transactions` (~226 tokens)

List transactions

List income and expense transactions (type, amount, date, vendor, category, linked animal/field/plant, description). GET /transactions.

Input parameters:

- `filters` (object): Extra filters as {field: value}, using a field name from the records. A plain value means equals; 'op:value' applies an operator, op being one of eq, ne, gt, gte, lt, lte, like, in, nin (e.g. {"creat…
- `limit` (integer): Results per page, 1-100 (default 25).
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `sort_by` (string): Field to sort by, e.g. created_at.
- `sort_dir` (string): Sort direction.
- `type` (string): Only expenses or only income.

### `farmbrite_get_transaction` (~38 tokens)

Get transaction

One transaction by id. GET /transactions/{transaction_id}.

Input parameters:

- `transaction_id` (string, required): Transaction id (a Farmbrite id string).

### `farmbrite_create_contact` (~130 tokens)

Create contact

WRITE: create a contact (customer, supplier, vendor). Nothing is emailed or sent to the contact. Creating twice makes two contacts. POST /contacts.

Input parameters:

- `address` (object)
- `cell` (string)
- `company` (string)
- `description` (string)
- `email` (string)
- `first_name` (string)
- `label` (string)
- `last_name` (string)
- `phone` (string)
- `type` (string): Contact type, e.g. Customer or Vendor (as defined in your Farmbrite account).

### `farmbrite_update_contact` (~107 tokens)

Update contact

WRITE: change fields of an existing contact (only the fields you pass are sent). Overwrites the previous values. PUT /contacts/{contact_id}.

Input parameters:

- `cell` (string)
- `company` (string)
- `contact_id` (string, required): Contact id (a Farmbrite id string).
- `description` (string)
- `email` (string)
- `first_name` (string)
- `last_name` (string)
- `phone` (string)

### `farmbrite_create_task` (~199 tokens)

Create task

WRITE: create a task, optionally linked to an animal, equipment, plant, location or planting. May notify the assigned Farmbrite user according to your account settings. Creating twice makes two tasks. POST /tasks.

Input parameters:

- `assigned_to_id` (string): Farmbrite user id or the user's email address to assign the task to.
- `description` (string): Task details.
- `end_time` (string): Due/end time, 'yyyy-mm-dd hh:mm'.
- `hours_spent` (number)
- `priority` (integer): Priority 1-5.
- `reference_id` (string): Id of the animal/equipment/plant/location/planting the task is about (a Farmbrite id string).
- `reference_type` (string): What the task is about (with reference_id).
- `status` (string): A task status defined in your account, e.g. 'To Do'.
- `title` (string, required)

### `farmbrite_update_task` (~171 tokens)

Update task

WRITE: change a task (only the fields you pass are sent); set complete=true to mark it done. Overwrites previous values. PUT /tasks/{task_id}.

Input parameters:

- `assigned_to_id` (string): Farmbrite user id or the user's email address to assign the task to.
- `complete` (boolean): true marks the task done.
- `description` (string): Task details.
- `end_time` (string): Due/end time, 'yyyy-mm-dd hh:mm'.
- `hours_spent` (number)
- `priority` (integer): Priority 1-5.
- `status` (string): A task status defined in your account, e.g. 'To Do'.
- `task_id` (string, required): Task id (a Farmbrite id string).
- `title` (string)

### `farmbrite_create_transaction` (~157 tokens)

Create transaction

WRITE: record an income or expense transaction in the farm's books. Creating twice records it twice. POST /transactions.

Input parameters:

- `amount` (number, required): Positive amount in the account's currency.
- `category` (string): A custom category or an IRS Schedule F key.
- `check_number` (string)
- `date` (string, required): Transaction date, yyyy-mm-dd.
- `description` (string)
- `keywords` (string)
- `ref_id` (string): Id of the related animal/equipment/plant/location (a Farmbrite id string).
- `ref_type` (string): What it relates to (with ref_id).
- `type` (string, required)
- `vendor` (string): Vendor or customer name.

### `farmbrite_create_note` (~126 tokens)

Add note

WRITE: add a note to an animal, livestock group, field, plant type, crop planting or inventory item. Notes cannot be removed with this server. POST /{parent}/{id}/notes.

Input parameters:

- `category` (string)
- `date` (string)
- `description` (string, required): The note text.
- `keywords` (string)
- `parent` (string, required): What the note is attached to.
- `parent_id` (string, required): Id of the animal, livestock group, field, plant type, crop planting or inventory type (a Farmbrite id string).

### `farmbrite_add_inventory` (~178 tokens)

Add inventory

WRITE: add stock to an inventory item in a storage location (warehouse, optionally a bin). Raises the quantity remaining; not idempotent: repeating adds again. Find ids with farmbrite_list_inventory_types, farmbrite_get_inventory_locations and farmbrite_list_warehouses. PUT /inventory_types/{id}/inventory/add.

Input parameters:

- `adjustment` (number, required): Quantity to add (positive, in the item's unit).
- `bin_id` (string): Bin id inside the warehouse (a Farmbrite id string).
- `date` (string)
- `description` (string)
- `inventory_type_id` (string, required): Inventory type id (a Farmbrite id string).
- `lot_number` (string)
- `source` (string)
- `warehouse_id` (string, required): Storage location (warehouse) id (a Farmbrite id string).

### `farmbrite_remove_inventory` (~185 tokens)

Remove inventory

WRITE: take stock out of an inventory item in a storage location (use, loss, sale). Lowers the quantity remaining; not idempotent: repeating removes again. It cannot be undone with this server except by adding stock back. PUT /inventory_types/{id}/inventory/remove.

Input parameters:

- `adjustment` (number, required): Quantity to remove (positive, in the item's unit).
- `bin_id` (string): Bin id inside the warehouse (a Farmbrite id string).
- `date` (string)
- `description` (string)
- `inventory_type_id` (string, required): Inventory type id (a Farmbrite id string).
- `lot_number` (string)
- `order_id` (string): Order id the stock was used for (a Farmbrite id string).
- `warehouse_id` (string, required): Storage location (warehouse) id (a Farmbrite id string).

### `farmbrite_create_order` (~292 tokens)

Create order

WRITE: create a sales order with line items (status defaults to Draft and payment_status to Due unless you set them; memo is internal, note is customer-facing). Farmbrite may email the customer or generate an invoice depending on the account's settings and the status chosen; the API reference does not say, so use Draft unless the user asks otherwise and only pass email when told to. Orders are entered as back-office orders (is_admin). Creating twice makes two orders. POST /orders.

Input parameters:

- `contact_id` (string): Existing contact id for the customer (a Farmbrite id string).
- `delivery_amount` (number)
- `discount_amount` (number)
- `due_date` (string)
- `email` (string)
- `first_name` (string)
- `last_name` (string)
- `memo` (string): Internal memo, not shown to the customer.
- `note` (string): A message for the CUSTOMER associated with the order (Farmbrite's customer-facing note). Only set it when the user wants the customer to read it; use memo for internal text.
- `order_date` (string)
- `order_items` (array, required): Line items.
- `payment_method` (string)
- `payment_status` (string)
- `phone` (string)
- `status` (string)
- `tax_rate` (number): Tax rate in percent.

### `farmbrite_update_order` (~85 tokens)

Update order status

WRITE: change an order's status and/or payment status (for example mark it Paid or Delivered). Farmbrite may send customer notifications on some status changes, depending on the account settings. PUT /orders/{order_id}.

Input parameters:

- `order_id` (string, required): Order id (a Farmbrite id string).
- `payment_status` (string)
- `status` (string)

### `farmbrite_create_animal` (~302 tokens)

Create animal

WRITE: add an animal (or a group when is_group=true with group_qty) to the herd. type (e.g. Cattle, Sheep) and status are required. Creating twice makes two animals. POST /animals.

Input parameters:

- `birth_date` (string)
- `breed` (string)
- `death_date` (string): Required when status is Butchered, Culled or Deceased.
- `deceased_reason` (string)
- `description` (string)
- `electronic_id` (string)
- `father_id` (string): Father animal id (a Farmbrite id string).
- `gender` (string): e.g. Female, Male.
- `group_qty` (integer): Head count when is_group is true.
- `internal_id` (string)
- `is_group` (boolean): true to add a group of identical animals.
- `keywords` (string)
- `market_price` (number)
- `mother_id` (string): Mother animal id (a Farmbrite id string).
- `name` (string)
- `purchase_date` (string)
- `purchase_price` (number)
- `purchased` (boolean)
- `sale_date` (string)
- `status` (string)
- `tag_number` (string)
- `type` (string, required): Animal type, e.g. Cattle, Sheep, Goat, Chicken or a custom type.
- `weight` (number)

### `farmbrite_update_animal` (~242 tokens)

Update animal

WRITE: change an animal's fields (only the fields you pass are sent), including its status (Sold, Deceased, Culled...). Statuses Butchered, Culled and Deceased need death_date. Overwrites previous values. PUT /animals/{animal_id}.

Input parameters:

- `animal_id` (string, required): Animal id (a Farmbrite id string).
- `birth_date` (string)
- `breed` (string)
- `death_date` (string)
- `deceased_reason` (string)
- `description` (string)
- `electronic_id` (string)
- `father_id` (string): Father animal id (a Farmbrite id string).
- `gender` (string): e.g. Female, Male.
- `internal_id` (string)
- `keywords` (string)
- `market_price` (number)
- `mother_id` (string): Mother animal id (a Farmbrite id string).
- `name` (string)
- `sale_date` (string)
- `status` (string)
- `tag_number` (string)
- `type` (string)
- `weight` (number)

### `farmbrite_add_animal_measurement` (~118 tokens)

Add animal measurement

WRITE: record a measurement for one animal (weight, height, temperature, condition score, fecal egg count). Adds a record each time. POST /animals/{animal_id}/measurements.

Input parameters:

- `animal_id` (string, required): Animal id (a Farmbrite id string).
- `condition_score` (number)
- `date` (string)
- `fec` (number): Fecal egg count.
- `height` (number)
- `temp` (number): Body temperature.
- `weight` (number)

### `farmbrite_create_feeding` (~209 tokens)

Record feeding

WRITE: record a feeding for an animal or livestock group. Either name the feed type, or give inventory_id + inventory_location_id to draw it from inventory (which lowers that inventory's quantity). Adds a record each time. POST /{animals|livestock_groups}/{id}/feedings.

Input parameters:

- `amount` (number, required): Amount fed.
- `cost` (number)
- `date` (string)
- `description` (string)
- `inventory_id` (string): Inventory type id the feed comes from (a Farmbrite id string).
- `inventory_location_id` (string): Inventory location id (from farmbrite_get_inventory_locations) (a Farmbrite id string).
- `parent` (string, required)
- `parent_id` (string, required): Animal or livestock group id (a Farmbrite id string).
- `per_head` (boolean): true if amount is per animal.
- `type` (string): Feed type, when not drawing from inventory.
- `unit` (string)

### `farmbrite_create_harvest` (~135 tokens)

Record harvest

WRITE: record a harvest (quantity and unit) for an animal or crop planting. Adds a record each time. POST /{animals|crops}/{id}/harvests.

Input parameters:

- `batch_number` (string)
- `date` (string)
- `description` (string)
- `grade` (string)
- `parent` (string, required)
- `parent_id` (string, required): Animal or crop planting id (a Farmbrite id string).
- `price` (number)
- `qty` (number, required)
- `unit` (string, required): Unit, e.g. pounds, lbs, dozen.

### `farmbrite_create_treatment` (~181 tokens)

Record treatment

WRITE: record a treatment (vaccine, dewormer, spray, fertilizer...) for an animal, livestock group, field or crop planting. Adds a record each time. POST /{animals|livestock_groups|plots|crops}/{id}/treatments.

Input parameters:

- `amount`: Amount given (a number, or text with its unit such as '5 ml').
- `cost` (number)
- `date` (string)
- `description` (string)
- `parent` (string, required)
- `parent_id` (string, required): Animal, livestock group, field (plot) or crop planting id (a Farmbrite id string).
- `product` (string)
- `retreat_date` (string)
- `technician` (string)
- `type` (string, required): Treatment type.
- `withdrawal_date` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-farmbrite/farmbrite#diagnostics

## Score history

- 2026-10-25: 60
- 2026-10-24: 60

## Common questions

### What is the Farmbrite MCP by usefulapi server?

Farmbrite MCP by usefulapi is listed in the public MCP registry as io.usefulapi/farmbrite. Read Farmbrite livestock, crops, tasks, inventory and orders; log records and tasks. This page covers its hosted endpoint (https://farmbrite.usefulapi.io/mcp).

### Is the Farmbrite MCP by usefulapi server safe to use?

Farmbrite MCP by usefulapi scores 60 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Farmbrite MCP by usefulapi server expose?

Farmbrite MCP by usefulapi exposes 44 tools: farmbrite_list_animals, farmbrite_get_animal, farmbrite_list_livestock_groups, farmbrite_get_livestock_group, farmbrite_list_animal_measurements, and 39 more. Their descriptions and schemas cost roughly 7,030 tokens of context every time the server is loaded.

### Does the Farmbrite MCP by usefulapi server require authentication?

Yes. Farmbrite MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Farmbrite MCP by usefulapi server still maintained?

Farmbrite MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://farmbrite.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/farmbrite/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-farmbrite/farmbrite.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-farmbrite/farmbrite.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-farmbrite/farmbrite
