---
title: "Which stored-credential operations this build accepts"
method: GET
path: "/v1/http/credential-operations"
tags: ["Web"]
---

# Which stored-credential operations this build accepts

`GET /v1/http/credential-operations`

## Request

- Base URL: `http://localhost:9998`
- URL: `http://localhost:9998/v1/http/credential-operations`
- Auth: HTTP bearer

Receiver-capability descriptor. A client asks this before sending a
selector, because a ToolPiper without the strict route answers 404 and
the client must then refuse locally rather than downgrade to an
unauthenticated raw request.

`selectorContract` is matched EXACTLY (`role-operation-1`); it is not a
version to compare and there is no floor to raise. An unknown marker
means unsupported, the same direction a 404 does.

Free on purpose: a 402 here would be indistinguishable from unsupported
and would push a caller toward the downgrade this mode exists to ban.
Advertisement is a routing agreement, never authority — the POST
re-validates the whole shape independently.

## Response `200`

The exact operation ids and selector contract this build accepts

- CredentialOperationsResponse
  - `selectorContract` 'role-operation-1', required: Exact marker. Any other value, including a later-looking one, means unsupported.
  - `operations` string[], required: Every operation id this build accepts, sorted. An id absent here is refused by the POST too.

---

[API](https://skmtc.dev/modelpiper/apis/toolpiper-api.md) · [All operations](https://skmtc.dev/modelpiper/apis/toolpiper-api/llms.txt) · [OpenAPI document](https://skmtc.dev/modelpiper/apis/toolpiper-api/revisions/6722bf56385c?raw)
