---
title: inspect
description: Free tool that returns an endpoint's exact input/output schema, price formula, estimated max cost and a ready-to-send run template.
---

<WorksIn />

Return the exact input/output schema, price formula, estimated max cost and provider identity
for one endpoint before running it. Free and read-only. Running the endpoint still needs prepaid
credit at least equal to `estimatedMaxCost`, so check [`balance`](/mcp-tools/balance) first.
`inspect` also accepts a workflow id directly, and returns that workflow's own current snapshot.

## Inputs

| Argument | Type | Required | Default | Limits | Meaning |
| --- | --- | --- | --- | --- | --- |
| `endpointId` | string | Yes | - | - | The endpoint (or workflow) id to inspect. |
| `detail` | string | No | `"full"` | `full` \| [`run`](/mcp-tools/run) | `run` returns only what a run needs: identity, job, mode, price, credential, estimatedMaxCost, requiredInputFields, inputSchema, outputFormat (or outputSummary) and a `run` template, without `usageHints`' REST and CLI examples. |

`endpoint.capability` is the job id the endpoint does; `endpoint.sourceCapability` is the raw
registered slug. `endpoint.credential` says whose key a run uses. When the endpoint has a stored
output format, `outputFormat` carries it with `provenance.verified` (`false` means an expected
shape not yet checked against saved answers) and a one-line `note`.

## Example call

```json
{
  "endpointId": "linkup-search"
}
```

## Example answer

Abridged: `usageHints.examples` also includes ready REST, MCP and CLI request bodies with
`<placeholder>` values to fill in.

```json
{
  "endpoint": {
    "id": "linkup-search",
    "capability": "search.get",
    "provider": "Linkup",
    "providerId": "linkup",
    "name": "Linkup API / /search",
    "description": "The /search endpoint allows you to retrieve web content.",
    "executionMode": "sync",
    "eligibility": "byok",
    "price": {
      "currency": "USD",
      "perCall": 0.005,
      "priceByInput": {
        "field": "depth",
        "rates": { "deep": 0.05, "fast": 0.005, "standard": 0.005 }
      }
    },
    "inputSchemaSummary": "{ excludeDomains, fromDate, includeDomains, q, depth, outputType }"
  },
  "estimatedMaxCost": 0.005,
  "usageHints": {
    "requiredInputFields": ["q", "depth", "outputType"]
  }
}
```

## Errors

Free and read-only; no `runs.execute` needed. A missing `endpointId` returns [`validation_error`](/errors/rest-errors#validation_error)
naming it: `Invalid input: expected string, received undefined at endpointId`. An unknown
`endpointId` returns [`endpoint_not_found`](/errors/run-errors#endpoint_not_found) with the id you sent, not a generic
[`not_found`](/errors/rest-errors#not_found).

## REST and CLI

- REST: [`GET /v1/operations/{endpointId}`](/reference/catalog/get-v1-operations-endpointid)
- CLI: `looot inspect <endpoint-id>`

<Related />
