Metadata-Version: 2.4
Name: gripe-mcp
Version: 0.1.0
Summary: Agent complaint box — one-tool MCP for logging bugs and improvement requests
Project-URL: Repository, https://github.com/retospect/gripe-mcp
Author-email: Reto Stamm <reto@retostamm.com>
License-Expression: LGPL-3.0-or-later
License-File: LICENSE
Keywords: agent,gripe,llm,mcp,monitoring
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.11
Requires-Dist: mcp[cli]>=1.0
Requires-Dist: platformdirs>=4.0
Provides-Extra: dev
Requires-Dist: psycopg[binary]>=3.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Provides-Extra: postgres
Requires-Dist: psycopg[binary]>=3.0; extra == 'postgres'
Description-Content-Type: text/markdown

# gripe-mcp

Agent complaint box — one-tool MCP for logging bugs and improvement requests.

## One tool: `report_issue`

Call it when you guess, hit a missing tool, find bad docs, or produce uncertain
output. Non-blocking — log and continue.

| Param | Type | Description |
|---|---|---|
| `description` | str | What went wrong or what you'd like improved (max 200 chars) |
| `severity` | `low` / `medium` / `high` | low = friction, medium = guessed, high = abandoned/wrong |
| `section` | str | Which instruction or tool caused the issue (max 80 chars) |
| `mode` | enum | `ambiguous_instruction` `missing_tool` `bad_tool_doc` `hallucination_risk` `wrong_scope` `memory_miss` `other` |

## Storage

- **Postgres**: set `GRIPE_DB_URL` env var → single `gripe_issues` table
- **JSONL fallback**: timestamped files in `.gripe-mcp/` (one per day)

## Identity

`GRIPE_AGENT_ID` and `GRIPE_TASK_ID` are set at server startup via env vars.
The agent never self-reports identity.

## System prompt block

```
## Self-Monitoring

Use `report_issue` any time you guess, hit a missing tool, or produce output
you're uncertain about. Non-blocking — log and continue, no response expected.
There is no penalty for logging; silence is the failure mode we're trying to
prevent.
```

## Run

```bash
GRIPE_AGENT_ID=precis GRIPE_TASK_ID=review-123 gripe
```
