# Agent tool definitions

`GET https://api.astroway.info/v1/agent/tools`

Tool definitions for an agent framework, generated from the live OpenAPI document, so the schema a model fills is the schema the endpoint validates. `format=openai` (default) returns `{ type, function }` objects you can spread straight into a chat completion; `format=anthropic` returns `{ name, description, input_schema }`. The objects carry nothing of ours: how to call each tool lives in a separate `executors` map keyed by tool name, because an unexpected key inside a vendor tool object is a 400 at their end. `select` chooses what to hand over: the curated starter set by default, `all` for the catalogue, `group:Vedic` for one area, `paths:/chart,/synastry` for an explicit list; `q` filters within that, `limit` caps it (default 32, max 128, which is the OpenAI ceiling). Nothing truncates silently: `totalMatched`, `totalAvailable` and a note say what was left out. No auth is embedded in a tool, so send X-Api-Key on the call itself.

Group: Agent Platform. Auth: `X-Api-Key` header. Operation ID: `agent_tools_get`.

## Parameters

| Name | In | Required | Type | Description |
|---|---|---|---|---|
| `format` | query | no | "openai" \| "anthropic" | Which vendor contract the tool objects follow. `openai` returns `{ type, function }`, `anthropic` returns `{ name, description, input_schema }`. |
| `select` | query | no | string | What to hand over: `starter` (the curated set, the default), `all`, `group:<tag>` such as `group:Vedic`, or `paths:/chart,/synastry` for an explicit list. An unknown path is named in `notes` rather than dropped. |
| `q` | query | no | string | Free-text filter applied within the selection, matched against path, summary, description and group. |
| `limit` | query | no | integer | How many tools to return. The ceiling is the OpenAI limit of 128 functions per request; models degrade well before it. Anything left out is counted in `totalMatched`. |
| `fields` | query | no | string | Comma-separated dotted paths, relative to `data`, to keep in the response. A path is applied to every element of an array, so `planets.name` means the name of each planet. Paths that match nothing come back in `_fields_unmatched`; a list where nothing matches at all is a 400, because an empty object would be a confident wrong answer. |
| `precision` | query | no | integer | Round every non-integer number in the response to this many decimal places. Integers are left alone, because an id is not a measurement. Ecliptic longitudes ship with fourteen decimals by default; 2 is about a tenth of an arcminute. |

## Responses

| Status | Meaning |
|---|---|
| 200 | Successful calculation |
| 400 | Validation error |
| 401 | Missing or invalid API key |

### Success fields, under `data`

| Field | Type | Required | Description |
|---|---|---|---|
| `format` | string | no |  |
| `select` | string | no |  |
| `tools` | object[] | no |  |
| `executors` | object | no |  |
| `executors.astroway_post_chart` | object | no |  |
| `executors.astroway_post_planets` | object | no |  |
| `executors.astroway_post_sun_times` | object | no |  |
| `executors.astroway_post_synastry` | object | no |  |
| `executors.astroway_post_composite` | object | no |  |
| `executors.astroway_post_synastry_attraction_score` | object | no |  |
| `executors.astroway_post_transits` | object | no |  |
| `executors.astroway_post_transit_calendar` | object | no |  |
| `executors.astroway_post_forecast_calendar` | object | no |  |
| `executors.astroway_post_solar_return` | object | no |  |
| `executors.astroway_post_render_wheel_western` | object | no |  |
| `executors.astroway_post_moon_phase` | object | no |  |
| `executors.astroway_post_human_design` | object | no |  |
| `executors.astroway_post_hd_penta` | object | no |  |
| `executors.astroway_post_vedic_varga_D1` | object | no |  |
| `executors.astroway_post_vedic_varga_D9` | object | no |  |
| `executors.astroway_post_vedic_panchang_full` | object | no |  |
| `executors.astroway_post_vedic_dashas_vimshottari_maha` | object | no |  |
| `executors.astroway_post_horoscope_daily` | object | no |  |
| `executors.astroway_post_numerology_pythagorean_life_path` | object | no |  |
| `executors.astroway_post_numerology_pythagorean_expression` | object | no |  |
| `executors.astroway_post_numerology_chaldean_life_path` | object | no |  |
| `executors.astroway_post_tarot_rider_waite_draw_single` | object | no |  |
| `executors.astroway_post_tarot_rider_waite_draw_three_card` | object | no |  |
| `executors.astroway_post_reports_natal` | object | no |  |
| `executors.astroway_post_ai_explain_aspect` | object | no |  |
| `count` | number | no |  |
| `totalMatched` | number | no |  |
| `totalAvailable` | number | no |  |
| `truncated` | boolean | no |  |
| `notes` | string[] | no |  |

## Example

```bash
curl -X GET https://api.astroway.info/v1/agent/tools \
  -H "X-Api-Key: aw_live_..." \
  -H "Content-Type: application/json"
```

---

Rendered from https://api.astroway.info/v1/openapi.json. HTML page: https://api.astroway.info/docs/api/operations/agent_tools_get/
