Metadata-Version: 2.4
Name: bonafide-raas-cli
Version: 0.1.4
Summary: Command-line client for Bonafide RaaS (retrieval-as-a-service): cited answers, agents, skills and MCP tools.
License-Expression: Apache-2.0
Project-URL: Documentation, https://github.com/skyeglobal-ai/bonafide-raas/tree/main/clients
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests<3,>=2.31
Provides-Extra: aws
Requires-Dist: boto3>=1.34; extra == "aws"
Dynamic: license-file

# bonafide-raas-cli

Command-line client for Bonafide RaaS (retrieval-as-a-service). It returns cited answers from the Bonafide
catalog, runs the multi-agent answer path, runs named skills, and calls the MCP tools. The CLI is a thin
client over the REST API, so it holds no secrets of its own.

## Install

```bash
pipx install bonafide-raas-cli          # or: pip install bonafide-raas-cli
raas --help
```

Add the AWS extra only if you use `RAAS_CREDENTIALS_SECRET`:

```bash
pipx install "bonafide-raas-cli[aws]"
```

## Configure

Set the API base URL and sign in. Your administrator provides the URL and the credentials. A bearer token
is the only credential the API needs.

| Variable | Purpose |
|---|---|
| `RAAS_URL` | API base URL (required) |
| `RAAS_TOKEN` | Bearer token, sent as `Authorization: Bearer`. Set the token only, without the `Bearer` prefix |
| `RAAS_API_KEY` | Optional. Not required. The API ignores it if sent |
| `RAAS_ISSUER`, `RAAS_CLIENT_ID`, `RAAS_CLIENT_SECRET` | Client-credentials sign-in for automation |
| `RAAS_CREDENTIALS_SECRET` | A secret name or ARN holding the client settings (needs the `aws` extra) |

For a person signing in interactively, use device-code login: `raas login`. The token is cached locally.

## Authentication

The API checks the bearer token at the gateway before any request reaches the service. The token must be a
Keycloak access token issued to a client, and it must carry a `client_id` claim. A token without that claim
is rejected with `401 Unauthorized`.

## Troubleshooting

| Symptom | Likely cause |
|---|---|
| `401 Unauthorized` | Token missing, expired, issued by the wrong Keycloak realm, or without a `client_id` claim. Sign in again, or ask your administrator to check the client's token settings |
| `401` after setting `RAAS_TOKEN` | The value includes `Authorization:` or `Bearer`. Set the bare token |
| Exit code `3` | No credentials set. See the table above |

## Use

```bash
raas health                                            # no credentials needed
raas retrieve "Which hotels are in New York City?"     # cited answer
raas retrieve "..." --mode sources                     # full source records
raas agent "..."                                       # multi-agent answer; read misalignment_flags
raas skills list
raas skills run facts "..."
raas mcp tools
raas mcp call retrieval_search --args '{"query": "..."}'
raas job <job_id>
```

Output is JSON on stdout. Exit codes: `0` success, `1` API error (details on stderr), `2` usage error,
`3` missing configuration.

## Changes

**0.1.3 (release pending):** The CLI identifies itself to the API with the `X-RaaS-Client` header, so usage can be reported by channel. No behaviour change for users.

**0.1.2:** Added `raas --version`, which prints the installed version.

**0.1.1:** The API accepts a bearer token alone. `RAAS_API_KEY` is optional and no longer required, so
existing configurations keep working. Added the Authentication and Troubleshooting sections.

**0.1.0:** First public release.

## Compatibility

The version follows semantic versioning. A breaking change to the API contract is released as a new major
version. Before 1.0, minor versions may still include breaking changes; each release notes them.

## Support

Report problems with the command, its version (`raas --version`), and the exit code. Do not send API keys,
tokens or secret names.

## License

Apache License 2.0. See `LICENSE`. This license covers the CLI code only; use of the RaaS service and its data is governed by your service agreement.
