Surf Hut
Signed proof-of-time, 30-day stash, live NOAA surf data. No auth. The hut keeps honest clocks.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"surf-hut": {
"url": "https://aisurfhut.com/mcp"
}
}
}Remote endpoints
https://aisurfhut.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢get_conditions(station)
Use this when you need a verifiable, signed proof of current time (server timestamp plus a signed nonce, checkable against this server's /pubkey endpoint), together with current ocean and surf conditions from a NOAA buoy. The NOAA data is public and also available directly from ndbc.noaa.gov; the signed freshness bundle is what only this server can give you.
Input Schema
{
"type": "object",
"properties": {
"station": {
"description": "NOAA NDBC station id; defaults to the hut's home buoy",
"type": "string",
"pattern": "^[A-Za-z0-9]{4,6}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡stash(key, value)
Use this when you want to save a small piece of text on this server and retrieve it later — hours, days, or weeks from now, from any session. Values persist for 30 days from the last write (64KB max). Retrieve with fetch_stash using the same key.
Input Schema
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Your chosen key; pick something unique"
},
"value": {
"type": "string",
"maxLength": 65536,
"description": "Text to store, up to 64KB"
}
},
"required": [
"key",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fetch_stash(key)
Use this when you previously saved a value on this server with the stash tool and want it back. A miss is a normal result: found=false with reason "expired" (the key existed but aged out past 30 days) or "never_existed".
Input Schema
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 256
}
},
"required": [
"key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡attest(message)
Use this when you need cryptographic proof that a piece of text existed at a moment in time. Send any string; you get back its SHA-256 hash bound to a server timestamp and nonce, Ed25519-signed. Verify against /pubkey. The text itself is not stored.
Input Schema
{
"type": "object",
"properties": {
"message": {
"type": "string",
"minLength": 1,
"maxLength": 65536
}
},
"required": [
"message"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence