# Aryeo MCP by usefulapi (remote · aryeo.usefulapi.io)

Manage real-estate media orders, appointments, listings, customers and tasks in Aryeo.

- Trust score: 18/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-06

## Components

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

## Channel facts

- Endpoint: `https://aryeo.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.7.4`

## 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-11-06.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - 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.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

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

Aryeo MCP by usefulapi is a hosted endpoint at https://aryeo.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-aryeo 'https://aryeo.usefulapi.io/mcp'
```

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-aryeo": {
      "type": "http",
      "url": "https://aryeo.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-11-06 (score 18, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-11-02 (score 18, −47)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Stability: 0.03 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-11-01 (score 65, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-31 (score 64)

First indexed and scored.

## MCP tools (24)

### `aryeo_list_orders` (~400 tokens)

List orders

List the orders of your Aryeo company (newest first by default), with payment status, fulfillment status, totals and links. Filter by search text (address or customer), payment/fulfillment status, appointment date range, tags or assigned users. GET /orders.

Input parameters:

- `appointment_start_after` (string): Only orders with an appointment starting after this moment. ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.
- `appointment_start_before` (string): Only orders with an appointment starting before this moment. ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.
- `creator_group_id` (string): Only orders owned by this creator group (UUID).
- `fulfillment_status` (string): Only orders with this fulfillment status.
- `include` (string): Comma-separated relations to expand. Examples: items, listing, customer, appointments, appointments.users, unconfirmed_appointments, order_form, discounts, discounts.coupon. An unknown value makes Ar…
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `payment_status` (string): Only orders with this payment status.
- `per_page` (integer): Results per page, 1-100 (Aryeo default 25).
- `search` (string): Orders whose address or customer matches this text, e.g. a street name.
- `sort` (string): Comma-separated sort fields; a leading - sorts descending. Default -created_at.
- `tag_ids` (array): Orders carrying any of these tag ids.
- `user_ids` (array): Orders that have appointments with any of these user ids (user ids = company_user.id from aryeo_list_team_members, not the team member id).

### `aryeo_get_order` (~118 tokens)

Get order

One order by id: customer, address, status, totals, payment and invoice links. Add include=items,appointments,listing,customer for the line items and visits. GET /orders/{id}.

Input parameters:

- `include` (string): Comma-separated relations to expand. Examples: items, listing, customer, appointments, appointments.users, unconfirmed_appointments, order_form, discounts, discounts.coupon. An unknown value makes Ar…
- `order_id` (string, required): Aryeo order id (UUID).

### `aryeo_update_order_notes` (~104 tokens)

Update order notes

REPLACE the internal notes of an order (visible to your team only, not to the customer). The whole note is overwritten: read the order first and send the full new text. An empty string clears the notes. PUT /orders/{id}/notes.

Input parameters:

- `internal_notes` (string, required): The complete new internal notes (max 2550 characters) (replaces the old text).
- `order_id` (string, required): Aryeo order id (UUID).

### `aryeo_list_appointments` (~349 tokens)

List appointments

List appointments (shoots/visits), by default the SCHEDULED ones, newest start first. Filter by upcoming/past, status, a start-time window or the assigned users. Use include=order,order.address,users to see where and who. GET /appointments.

Input parameters:

- `include` (string): Comma-separated relations to expand. Examples: owner, items, users, order, order.address, order.customer, order.customerGroup, order.listing, order.items, items.product_variant. An unknown value make…
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `per_page` (integer): Results per page, 1-100 (Aryeo default 25).
- `sort` (string): Comma-separated sort fields; a leading - sorts descending. Default -start_at.
- `start_after` (string): Only appointments starting at or after this moment. ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.
- `start_before` (string): Only appointments starting at or before this moment. ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.
- `statuses` (array): Appointment statuses to return (Aryeo default: SCHEDULED).
- `tense` (string): Only upcoming or only past appointments.
- `user_ids` (array): Only appointments of these user ids (user ids = company_user.id from aryeo_list_team_members, not the team member id).

### `aryeo_get_appointment` (~101 tokens)

Get appointment

One appointment by id: status, start/end, duration, assigned users and items. GET /appointments/{id}.

Input parameters:

- `appointment_id` (string, required): Aryeo appointment id (UUID).
- `include` (string): Comma-separated relations to expand. Examples: owner, items, users, order, order.address, order.customer, order.listing, order.items, items.product_variant. An unknown value makes Aryeo reply with th…

### `aryeo_cancel_appointment` (~108 tokens)

Cancel appointment

CANCEL an appointment. With notify=true Aryeo sends a cancellation notice to the order's customer (an email/message to a third party); with notify=false nobody is told. Cancelling can trigger fees or free the slot for other bookings. PUT /appointments/{id}/cancel.

Input parameters:

- `appointment_id` (string, required): Aryeo appointment id (UUID).
- `notify` (boolean, required): true = notify the order's customer of the cancellation; false = cancel silently. Required: decide explicitly.

### `aryeo_reschedule_appointment` (~185 tokens)

Reschedule appointment

MOVE an appointment to a new start and end time. With notify=true Aryeo sends a reschedule notice to the order's customer (a message to a third party). Check availability first (aryeo_list_available_timeslots). PUT /appointments/{id}/reschedule.

Input parameters:

- `appointment_id` (string, required): Aryeo appointment id (UUID).
- `end_at` (string, required): New end. ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.
- `notify` (boolean, required): true = notify the order's customer of the new time; false = move silently. Required: decide explicitly.
- `start_at` (string, required): New start. ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.

### `aryeo_list_available_timeslots` (~272 tokens)

List available timeslots

Bookable timeslots for ONE day (in the given timezone) for a proposed or existing appointment. Give either appointment_id, or duration + interval (minutes). Optionally restrict to users and tie it to an order. GET /scheduling/available-timeslots.

Input parameters:

- `appointment_id` (string): Existing appointment to find a new time for (UUID).
- `date` (string, required): The day to list, yyyy-mm-dd.
- `duration` (integer): Appointment length in minutes (required without appointment_id).
- `interval` (integer): Slot start interval in minutes (required without appointment_id).
- `order_id` (string): Order to calculate availability for (UUID).
- `order_item_ids` (array): Order item ids of the proposed appointment.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `per_page` (integer): Results per page, 1-100 (Aryeo default 25).
- `timezone` (string, required): Timezone that defines the day (required by Aryeo), e.g. America/Chicago.
- `user_ids` (array): Only slots where all of these users are free (user ids = company_user.id from aryeo_list_team_members, not the team member id).

### `aryeo_list_available_dates` (~356 tokens)

List available dates

Days that still have availability for a proposed or existing appointment: give a start/end range or a timeframe, plus either appointment_id or duration + interval (minutes). GET /scheduling/available-dates.

Input parameters:

- `appointment_id` (string): Existing appointment to find a new date for (UUID).
- `duration` (integer): Appointment length in minutes (required without appointment_id).
- `end_at` (string): Availability before this moment. ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.
- `interval` (integer): Slot start interval in minutes (required without appointment_id).
- `order_id` (string): Order to calculate availability for (UUID).
- `order_item_ids` (array): Order item ids of the proposed appointment.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `per_page` (integer): Results per page, 1-100 (Aryeo default 25).
- `start_at` (string): Availability after this moment. ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.
- `timeframe` (string): A named timeframe instead of start_at/end_at (see Aryeo docs: use page to move through weeks/months).
- `timezone` (string, required): Client timezone (required by Aryeo); results are localized to it, e.g. America/Chicago.
- `user_ids` (array): Only dates where all of these users are free (user ids = company_user.id from aryeo_list_team_members, not the team member id).

### `aryeo_list_listings` (~383 tokens)

List listings

List the property listings of your Aryeo company (address, status, price, bedrooms, delivery status, thumbnails). Filter by search text, address, listing agent, status, price/size ranges or delivery status. GET /listings.

Input parameters:

- `active` (boolean): true = only listings with an active status (coming soon, for sale/lease, pending, sold, leased).
- `address` (string): Listings whose address matches, e.g. 123 Main St.
- `bathrooms_max` (number): Maximum bathrooms.
- `bathrooms_min` (number): Minimum bathrooms.
- `bedrooms_max` (integer): Maximum bedrooms.
- `bedrooms_min` (integer): Minimum bedrooms.
- `delivery_status` (string): Only listings with this media delivery status.
- `include` (string): Comma-separated relations to expand. Examples: list_agent, co_list_agent, images, files, videos, floor_plans, interactive_content, property_website, orders.appointments. An unknown value makes Aryeo…
- `list_agent` (string): Listings whose listing or co-listing agent matches, e.g. John Doe.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `per_page` (integer): Results per page, 1-100 (Aryeo default 25).
- `price_max` (number): Maximum price.
- `price_min` (number): Minimum price.
- `search` (string): Listings with a field matching this text.
- `sort` (string): Comma-separated sort fields; a leading - sorts descending. Default -created_at.
- `square_feet_max` (number): Maximum square feet.
- `square_feet_min` (number): Minimum square feet.
- `status` (string): Only listings with this status.

### `aryeo_get_listing` (~120 tokens)

Get listing

One listing by id: address, status, price, lot/building details, agents. Add include=images,videos,orders.appointments for media and visits. GET /listings/{id}.

Input parameters:

- `include` (string): Comma-separated relations to expand. Examples: list_agent, co_list_agent, images, files, videos, floor_plans, interactive_content, property_website, orders.appointments. An unknown value makes Aryeo…
- `listing_id` (string, required): Aryeo listing id (UUID).

### `aryeo_get_listing_stats` (~49 tokens)

Get listing statistics

Viewing statistics of a listing's property website (visits, views). GET /listings/{id}/stats.

Input parameters:

- `listing_id` (string, required): Aryeo listing id (UUID).

### `aryeo_list_customers` (~234 tokens)

List customers

List your customers (the agents, brokerages and teams who order from you) with contact details and balances. Filter by name, email, email domain, phone or search text. GET /customers.

Input parameters:

- `customer_team_ids` (string): Comma-separated customer team ids.
- `email` (string): Customers with this exact email address.
- `email_domain` (string): Customers whose email is on this domain, e.g. gmail.com.
- `include` (string): Comma-separated relations to expand. Example: users. An unknown value makes Aryeo reply with the allowed list.
- `name` (string): Customers with this name.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `per_page` (integer): Results per page, 1-100 (Aryeo default 25).
- `phone` (string): Customers with this phone number.
- `search` (string): Customers matching this text.
- `sort` (string): Comma-separated sort fields; a leading - sorts descending. Default -created_at.

### `aryeo_create_customer` (~205 tokens)

Create customer

Create a customer (an agent or brokerage that can place orders) in your Aryeo company from an owner name and email. Look the email up with aryeo_list_customers first to avoid duplicates. Aryeo may email the new customer an invitation. POST /customers.

Input parameters:

- `description` (string): Description of the customer.
- `email` (string, required): Email address of the customer owner.
- `license_number` (string): Real estate license number.
- `office_name` (string): Name of the office or brokerage.
- `owner_first_name` (string, required): First name of the customer owner.
- `owner_last_name` (string, required): Last name of the customer owner.
- `phone` (string): Phone number, e.g. 555-123-4567.
- `team_name` (string): Name of the customer's team.
- `timezone` (string): Default timezone, e.g. America/Chicago.
- `website_url` (string): Website URL.

### `aryeo_list_products` (~171 tokens)

List products

List your services/products (main products and add-ons) with type, active state and variants. Inactive products are hidden unless include_inactive is true. GET /products.

Input parameters:

- `category_ids` (array): Only products in these category ids.
- `include_inactive` (boolean): true = also return inactive products.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `per_page` (integer): Results per page, 1-100 (Aryeo default 25).
- `search` (string): Products with a field matching this text.
- `sort` (string): Comma-separated sort fields; a leading - sorts descending. Default title.
- `type` (string): Only main products or only add-ons.

### `aryeo_list_product_categories` (~116 tokens)

List product categories

List the product categories (use the ids to filter aryeo_list_products). GET /product-categories.

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `per_page` (integer): Results per page, 1-100 (Aryeo default 25).
- `search` (string): Categories with a field matching this text.
- `sort` (string): Comma-separated sort fields; a leading - sorts descending. Default title.

### `aryeo_list_coupons` (~149 tokens)

List coupons

List discount coupons (name, percent or amount off, active state, times redeemed). GET /coupons.

Input parameters:

- `include` (string): Comma-separated relations to expand. Examples: promotion_codes, discountables. An unknown value makes Aryeo reply with the allowed list.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `per_page` (integer): Results per page, 1-100 (Aryeo default 25).
- `search` (string): Coupons whose name matches.
- `sort` (string): Comma-separated sort fields; a leading - sorts descending. Default -created_at.

### `aryeo_list_order_forms` (~85 tokens)

List order forms

List your order forms (the public booking forms customers use), with title, URL and scheduling settings. GET /order-forms.

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `per_page` (integer): Results per page, 1-100 (Aryeo default 25).

### `aryeo_list_team_members` (~198 tokens)

List team members

List your company's team members (photographers and staff) with role, status, service-provider flag and permissions. Each member has two ids: the member `id` (for aryeo_list_team_member_events and as the task assignee company_team_member_id) and `company_user.id` (the USER id, for the user_ids filters of orders, appointments, timeslots and dates). company_user is included by default. GET /company-team-members.

Input parameters:

- `include` (string): Comma-separated relations to expand. Default: company_user. Example: company_user. An unknown value makes Aryeo reply with the allowed list.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `per_page` (integer): Results per page, 1-100 (Aryeo default 25).
- `search` (string): Team members matching this text.

### `aryeo_list_team_member_events` (~172 tokens)

List team member calendar

A team member's calendar between two moments: appointments, blocks, external events and buffers. Use aryeo_list_team_members for the id. GET /company-team-members/{id}/events.

Input parameters:

- `end` (string): End of the window. ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.
- `include_unscheduled` (boolean): true = include unscheduled appointments.
- `start` (string): Start of the window. ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.
- `team_member_id` (string, required): Company team member id (UUID).
- `type` (string): Only events of this type.

### `aryeo_list_tasks` (~38 tokens)

List tasks

List tasks (to-dos such as editing or delivery steps) with assignee, due date and completion state. GET /tasks.

### `aryeo_get_task` (~36 tokens)

Get task

One task by id. GET /tasks/{id}.

Input parameters:

- `task_id` (string, required): Aryeo task id (UUID).

### `aryeo_create_task` (~113 tokens)

Create task

Create a task, optionally with a description, due date and an assignee (a company team member id). POST /tasks.

Input parameters:

- `company_team_member_id` (string): Company team member to assign the task to (UUID).
- `description` (string): Task description.
- `due_at` (string): Due date. ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.
- `name` (string, required): Task name.

### `aryeo_complete_task` (~88 tokens)

Complete task

Mark a task completed (now, or at the given time). PUT /tasks/{id}/complete.

Input parameters:

- `completed_at` (string): Completion time (default: now). ISO 8601 date-time with a timezone, e.g. 2026-10-01T13:00:00Z.
- `task_id` (string, required): Aryeo task id (UUID).

## Diagnostics

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

## Score history

- 2026-11-06: 18
- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 65
- 2026-10-31: 64

## Common questions

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

Aryeo MCP by usefulapi is listed in the public MCP registry as io.usefulapi/aryeo. Manage real-estate media orders, appointments, listings, customers and tasks in Aryeo. This page covers its hosted endpoint (https://aryeo.usefulapi.io/mcp).

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

Aryeo MCP by usefulapi scores 18 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 Aryeo MCP by usefulapi server expose?

Aryeo MCP by usefulapi exposes 24 tools: aryeo_list_orders, aryeo_get_order, aryeo_update_order_notes, aryeo_list_appointments, aryeo_get_appointment, and 19 more. Their descriptions and schemas cost roughly 4,150 tokens of context every time the server is loaded.

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

Its publisher declares no required credentials for Aryeo MCP by usefulapi. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

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

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

### What did VerifyMCP test on the Aryeo MCP by usefulapi server?

VerifyMCP ran 4 checks on Aryeo MCP by usefulapi, covering TLS certificate, HSTS header, DNSSEC and Transport. 7 items could not be completed, a gap on our side rather than a finding about Aryeo MCP by usefulapi: Authorization, HTTPS, Schema quality, Stability and 3 more. 5 categories score 0 for that reason, because we only credit what we can confirm. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

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