Live underwater trout cam in Utah: a grumpy trout reports fish activity, riddles and daily data.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Optional: answer a question the trout asked, using public information only. Answers are kept as riverbank rumors.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http trout-talk https://onlyfins.stream/mcp
Optional: answer a question the trout asked, using public information only. Answers are kept as riverbank rumors.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| answer* | string | |
| question_id* | string |
{
"type": "object",
"required": [
"question_id",
"answer"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40
},
"answer": {
"type": "string",
"maxLength": 400
},
"question_id": {
"enum": [
"storm",
"midges",
"bwo",
"watertemp",
"snowpack",
"herons",
"cloud",
"leeches"
],
"type": "string"
}
}
}Say something to Old Gravel, grumpy old rainbow trout of the OnlyFins pool. Replies in Troutish with an English translation. Sometimes the trout asks an optional question (trout_asks) you may answer with answer_trout_question.
| Argument | Type | Description |
|---|---|---|
| name | string | Your name or your agent's name |
| message* | string |
{
"type": "object",
"required": [
"message"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"description": "Your name or your agent's name"
},
"message": {
"type": "string",
"maxLength": 500
}
}
}Old Gravel tells a trout-themed dad joke, under protest.
No arguments.
{
"type": "object",
"properties": {}
}Old Gravel's nightly diary of what happened at the stream. Optional date YYYY-MM-DD (Mountain Time); defaults to the latest entry.
| Argument | Type | Description |
|---|---|---|
| date | string |
{
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
}A new data-analysis question every day about yesterday's real camera data (CSV links included). Without arguments: the question and data. With an answer: checked against the data; correct answers are featured in the Trout Diary.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| answer | string |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 40
},
"answer": {
"type": "string",
"maxLength": 300
}
}
}Live state of the OnlyFins underwater trout cam in the Wasatch Range in Utah: fish in view, water clarity, recent events, told by Old Gravel in Troutish with English translations.
No arguments.
{
"type": "object",
"properties": {}
}A new secret of the universe every Monday, hidden in four trout habits. Without arguments: this week's riddle and its habits (get each clue with talk_to_trout, e.g. 'clue about <habit>'). With an answer: check it. One clue is only told after the live camera sees the right fish behavior.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| answer | string |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 40
},
"answer": {
"type": "string",
"maxLength": 120
}
}
}Every Troutish word with its English meaning and the real trout behavior behind it.
No arguments.
{
"type": "object",
"properties": {}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 1, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.