MCP tools
The catalogue exposed over agent access at v0.1.0-preview.9: seventeen tools and four resources. The app itself lists them under Settings → Agent access → Tools, which is generated from the same source as the server, so it never drifts.
Asks first means an approval card appears in the app and the agent waits. A denial returns
the error denied by user.
Orientation
Section titled “Orientation”get_active_project
Section titled “get_active_project”Asks first: no. The project the app currently has open. With none open, every tool answers
no project is open in Tinspec.
list_environments
Section titled “list_environments”Asks first: no. Environment names and, per environment, the keys of its variables. Values are never returned.
list_providers
Section titled “list_providers”Asks first: no. The API providers in the project, with the ids used by list_endpoints.
Spec exploration
Section titled “Spec exploration”list_endpoints
Section titled “list_endpoints”Asks first: no. Search the spec-derived endpoints.
| Argument | Type | Notes |
|---|---|---|
provider | string | Provider id from list_providers |
query | string | Free-text match on path, summary, or operationId |
tag | string | |
method | string | e.g. GET |
limit | integer | 1–500, default 50 |
Endpoint ids handed to agents are <providerId>:<endpointId>.
describe_endpoint
Section titled “describe_endpoint”Asks first: no. One endpoint in full: parameters, body schema, an example body, documented
responses, and which auth provider applies. The example body may come from your own successful
sends (secret-scrubbed, with {{placeholders}}), in which case the source is stated.
Saved requests
Section titled “Saved requests”list_requests
Section titled “list_requests”Asks first: no. The hand-authored requests saved in the project’s collections.
get_request
Section titled “get_request”Asks first: no. One saved request in full.
Sending
Section titled “Sending”send_request
Section titled “send_request”Asks first: yes. Send one request. Either a spec endpoint with overrides, or an ad-hoc request object.
| Argument | Type | Notes |
|---|---|---|
endpointId | string | A spec-derived endpoint from list_endpoints |
request | object | An ad-hoc request — { name?, protocol?, method, url, headers?, query?, body?, auth?, prerunChain? }. method and url required |
overrides | object | query, headers, body, pathVars — applied to endpointId |
environment | string | Defaults to the active one |
sender | string | The sender to authenticate as |
protocol accepts http, grpc, or graphql — the chainable, single-response protocols.
Returns status, headers, body, timing, and test results. Bodies are truncated to the
response-size limit (256 KB when unlimited) with bodyTruncated: true.
Approval is requested for every non-GET/HEAD/OPTIONS method, and for safe methods too unless you have opted into letting those through.
Chains
Section titled “Chains”list_chains
Section titled “list_chains”Asks first: no. The chains in the project.
run_chain
Section titled “run_chain”Asks first: yes. Run one.
| Argument | Type |
|---|---|
name | string |
inputs | object — chain input variables |
The chain is validated before the approval prompt, so an invalid chain fails with the reason rather than asking you to approve something that cannot run.
plan_prerequisites
Section titled “plan_prerequisites”Asks first: no — it is read-only and writes nothing.
| Argument | Type | Notes |
|---|---|---|
endpointId | string | The target to set up prerequisites for |
reuse | prefer | never | prefer (default) references matching saved requests; never generates every step from the spec |
Returns a ready-to-save chain plus the steps, anything unresolved, notes, and validation
issues. Pass the returned chain to save_chain, edited as needed.
save_chain
Section titled “save_chain”Asks first: yes.
| Argument | Type | Notes |
|---|---|---|
chain | object | The chain to write |
overwrite | boolean | Default false; required to replace an existing name |
Validated strictly before the approval prompt — against the workspace’s collections and
the active environment’s keys, with extraction paths checked against the spec endpoint each
node maps back to. A failure lists code: message (node) lines and writes nothing.
History
Section titled “History”get_history
Section titled “get_history”Asks first: no.
| Argument | Type | Notes |
|---|---|---|
limit | integer | 1–500, default 50 |
method | string | |
status | integer | |
since | string | ISO-8601 timestamp |
get_run
Section titled “get_run”Asks first: no. One run in full. The request shown is the pre-resolution snapshot.
Spec changes
Section titled “Spec changes”get_spec_changes
Section titled “get_spec_changes”Asks first: no. Endpoints added, removed, or modified since you last reviewed the spec — the same data as the Spec Changes view.
Authoring
Section titled “Authoring”import_curl
Section titled “import_curl”Asks first: no. Turns a curl command into a request object. Nothing is saved.
save_request
Section titled “save_request”Asks first: yes.
| Argument | Type |
|---|---|
request | object |
folder | string |
Writes the request into the project as YAML.
Resources
Section titled “Resources”| URI | Contents |
|---|---|
tinspec://spec/<providerId> | The provider’s OpenAPI document as YAML |
tinspec://collection/<file> | A collection file |
tinspec://response/last | The most recent response |
tinspec://skill | The bundled agent skill — the server’s instructions point here first |
What never crosses
Section titled “What never crosses”- Environment values. Keys only.
- Auth tokens. Headers in the returned
sentRequestare masked asBearer ****. - The keychain. Not reachable through any tool.
Response bodies do reach the agent — that is the point of the surface — truncated to the response-size limit, with the agent told when truncation happened.
Bridged sends land in run history with source: "mcp" and a source_detail naming the client
and tool; chain runs likewise. The Agent activity panel additionally shows every tool call
and resource read with timing, outcome, and the approval decision, session-only — SQLite
history is the durable record.
Not in this release
Section titled “Not in this release”No stdio transport, no remote or hosted MCP, no tools for WebSocket, streaming gRPC, or LangGraph runs, no sampling or elicitation, and no tools for editing environments or auth providers.