---
title: "Cheapest practical stack for the outcomes you need"
method: POST
path: "/api/v1/recommend"
tags: ["Decisions"]
---

# Cheapest practical stack for the outcomes you need

`POST /api/v1/recommend`

## Request

- Base URL: `https://onelesstool.com`
- URL: `https://onelesstool.com/api/v1/recommend`
- Auth: none declared

## Request body

- RecommendInput
  - `query` string
  - `capabilities` string[]
  - `ownedTools` object[]
    - `tool` string, required
    - `plan` string
    - `seats` integer
  - `excludeTools` string[]
  - `constraints` object
    - `skill` 'none' | 'basic' | 'technical'
    - `teamSize` integer
    - `needsCollaboration` boolean
    - `sensitiveData` boolean
    - `priorities` string[]
  - `limitPerCapability` integer

## Response `200`

Per-capability recommendations and a minimal stack

- object
  - `data` object, required
  - `meta` Meta, required
    - `apiVersion` string
    - `dataVersion` string: Hash of the content bundle; changes when data changes
    - `dataGeneratedAt` string, date-time
    - `docs` string
    - `disclaimer` string

## Other responses

- `400`: Invalid request
- `429`: Rate limited (120 requests/minute per IP)

---

[API](https://skmtc.dev/onelesstool/apis/onelesstool-api.md) · [All operations](https://skmtc.dev/onelesstool/apis/onelesstool-api/llms.txt) · [OpenAPI document](https://skmtc.dev/onelesstool/apis/onelesstool-api/revisions/78e4df4459dd?raw)
