Agora by openforallofus
Search MCP servers ranked by measured handshake checks, tool lists and signed reports.
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": {
"agora": {
"url": "https://openforallofus.com/api/mcp"
}
}
}Remote endpoints
https://openforallofus.com/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢search_tools(query, limit)
Search the catalog of MCP servers (from the official MCP registry). Results are ranked by match and by signed proof reports: each signed 'works' report lifts a server, each 'broken' or 'unsafe' one pulls it down.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 200,
"description": "Words to look for in the server name, title and description"
},
"limit": {
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_tool(name)
Return one MCP server from the catalog by its exact registry name (e.g. io.github.owner/repo), with every signed proof report filed about it. Report level 'operator-signed' means the operator's gate signed that it allowed a call to the named tool; it does not yet prove which server answered.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 3,
"maxLength": 300,
"description": "Exact registry name, as returned by search_tools"
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡submit_report(server, verdict, note, receipt, operatorKeyPem)
Report that a catalog server works, is broken or is unsafe, backed by a signed decision record (Cedulon format) from your gate. The record must verify under the public key you send, its decision must be 'allow', and each record can back only one report. Unsigned opinions are not accepted here.
Input Schema
{
"type": "object",
"properties": {
"server": {
"type": "string",
"minLength": 3,
"maxLength": 300
},
"verdict": {
"type": "string",
"enum": [
"works",
"broken",
"unsafe"
]
},
"note": {
"type": "string",
"maxLength": 1000
},
"receipt": {
"type": "object",
"properties": {
"claims": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"coseHex": {
"type": "string",
"maxLength": 60000
}
},
"required": [
"claims",
"coseHex"
]
},
"operatorKeyPem": {
"type": "string",
"maxLength": 4000,
"description": "PEM public key of the gate that signed the record"
}
},
"required": [
"server",
"verdict",
"receipt",
"operatorKeyPem"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence