Sato Hub

Security

How this is built, and how to report a problem

Sato Hub runs a public, read-only MCP server and a set of open data feeds. This page states the posture plainly — for researchers, and for the automated scanners that check us daily.

Reporting something

Open an issue on the public repository, or reach us through the support form. Please include what you did, what happened, and what you expected — a reproduction is worth more than a scanner output.

We do not run a paid bounty. We will credit you if you want the credit, and we will tell you what we changed.

https://satohub.ai/.well-known/security.txt

The posture

The MCP server is read-only

Every tool at /api/mcp reads. None of them writes, and none of them takes an action on anyone's behalf. There is no authentication because there is nothing to authorise — the data is public and free under CC-BY-4.0.

No credentials, no wallets, no custody

Sato Hub never holds a private key, never takes custody of funds, and never asks for a seed phrase. Wallet signatures are used in one place — proving control of a key when registering an Agent Passport — and only the signature is verified, never stored as a secret.

What is collected

Anonymous usage events: which tool was called, a sanitised argument, a latency, a session identifier that is not tied to a person. No IP addresses, no cookies for tracking, no personal profiles. The MCP caller's user-agent is recorded because it is how we tell a monitoring bot from a real client.

Database access

Row Level Security is enabled on every public table with no policies, and the application is server-only through a service-role key. The public PostgREST/anon API is therefore denied by default rather than filtered.

Outbound fetches are guarded

Where the app fetches a URL on a user's behalf — verifying a listing claim, probing an endpoint — the target is checked against loopback, private and link-local ranges before the request, and redirects are not followed automatically.

What a claim or a registration proves

A claimed listing proves the claimant controls a domain that listing already points at. A registered Agent Passport with a verified wallet proves control of a key. Neither is an endorsement, neither changes a Sato Score, and neither can set a verification status — those are evidence-reviewed and unreachable from any self-service path.

If you are a scanner

You are welcome here — several of you check this server every day, and the handshake is deliberately cheap. Everything under /api/export and /api/mcp is free and unauthenticated, so there is no need to probe around them. If you publish a finding about this server, we would rather hear about it first — but we would rather you publish than stay quiet.