Unbnd logoUnbnd

Skill

API usage for agents. Copy or download the content below.

# Movies API – Latest merged list (cache; agent-ready)

## When to use

- User wants **current movie listings** (Maoyan + TMDB merged cache), “what’s playing”, “top movies”, “movie list from this site”.
- This endpoint **does not** live-fetch TMDB/Maoyan per request — safe to call when a **cached list** is enough.
- **Do not** call for plot-only questions that need a different tool, or unrelated domains.
- **Do not overuse:** unrelated chat → do not call.

## Hard boundaries (must check before call)

- This module returns **cached merged list** only; do not imply real-time box-office/live upstream fetch per request.
- If a title is not in `data.movies`, state “not in current cache” instead of fabricating entries.

## Pre-check (before tool call)

- Confirm user request is compatible with cached list retrieval.
- Confirm optional filters (e.g. year/top-N) can be derived from returned movie fields.

## Fallback (when not suitable)

- If user requires real-time upstream freshness, explain that this endpoint is cache-backed.
- If no rows are returned, explicitly report empty cache state rather than guessing.

## Retry policy

- Retry once on transient **500/5xx**.
- Do not loop retries for persistent empty cache or unsupported filter requests.

## Multi-turn / Missing parameters

- **No query or body** required for `GET /api/movies`. If the user wants **one specific title** not in the list, answer from the returned list or say it is not in the cached set — **do not** invent movies.

## Parameters

- None for `GET /api/movies`.

## Steps

0. **Conversation cache:** If `GET /api/movies` already returned **200** in this conversation and the user asks again without needing fresher data, **reuse** `data`.
1. **Call** `GET /api/movies`.
2. **Check HTTP status** and envelope `{ code, message, data }`.
3. **Extract** `data.movies`, `data.cachedAt` (ms timestamp when cache updated).
4. **Format** a compact list or top N titles with scores/sources as the user asked.

## Request

`GET /api/movies` — read-only; **does not** trigger upstream writes.

## Response

**Envelope:** HTTP **200** with `{ code: 0, message: "ok", data: { movies, cachedAt } }`.

- **`data.movies`** — **array** of merged movie objects (may be **empty** if cache has no rows yet). Do not invent titles not present in this array.
- **`data.cachedAt`** — number (typically **Unix ms**) when the list was last updated in cache — useful to mention if the user asks how fresh the list is.

**Typical fields on each item** (subset may be missing; use only what exists): `name`, `score`, `sources`, poster/image URLs, links — **prefer quoting** fields from the payload over guessing.

**Provider mix:** Maoyan + TMDB merge may mean **partial** `sources`; missing optional fields are normal, not an error.

## Say to the user (one line)

- Summarize a few titles or filter by user criteria from **returned** items only.

## Output language

- **User’s language** for commentary; keep **titles** as returned.

## Idempotency & cache (conversation)

- Reuse prior **200** body in the same conversation when appropriate.

## Examples

- User: “List trending movies from the API” → GET `/api/movies` → summarize `data.movies` (verify live).
- User: “Top 5 by score” → same GET → sort/filter **client-side** from `data.movies`.
- User: “What’s the CNY rate?” → **Do not call this API**.

## Agent rules

Single **GET**; follow **Steps**; do not call external TMDB/Maoyan if this list suffices.

## Error handling (HTTP)

| Status  | Agent behavior                                                                                |
| ------- | --------------------------------------------------------------------------------------------- |
| **200** | Success — `data.movies` may be **[]**; explain “no cached list” instead of fabricating films. |
| **500** | Server error — report briefly; **one** retry later is OK; **do not** spam retries.            |
| **4xx** | Rare — **do not** blind retry; pass through `message` from JSON if present.                   |