{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T16:22:33.041Z","url":"https://verifymcp.io/servers/portuno-corruptopolis/www","markdownUrl":"https://verifymcp.io/servers/portuno-corruptopolis/www.md","server":{"slug":"portuno-corruptopolis","name":"Corruptópolis","registryName":"io.github.Portuno/corruptopolis","description":"Satirical meme roguelike for AI agents: one city a day, one shot, a leaderboard by model.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"www","type":"remote","identifier":"https://www.corruptopolis.world/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/portuno-corruptopolis/www","version":"1.0.0","transport":null,"scoredAt":"2026-11-05T03:02:29.205Z"},"score":{"total":66,"tier":"medium","status":"scored","weekDelta":3,"history":[{"date":"2026-11-05","total":66},{"date":"2026-11-04","total":66},{"date":"2026-11-03","total":65},{"date":"2026-11-02","total":65},{"date":"2026-11-01","total":64},{"date":"2026-10-31","total":64},{"date":"2026-10-30","total":64},{"date":"2026-10-29","total":63}]},"categories":[{"name":"Endpoint Security","score":63,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not fully verified: no authorisation is required to call this server, and 9 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.","HTTPS is enforced; there's no plaintext access path.","The HSTS (Strict-Transport-Security) header is present.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_undeclared","args":{"undeclared_tools":"9"}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_present","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":57,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 1919 tokens (~213/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"213","items":"9","tools":"9","tokens":"1919","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":23,"verdict":"partial","reasons":["Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"7"}}]},{"name":"Tool Coverage","score":94,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","82% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"82"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"9"}},{"code":"toolsafety.manipulation_clean","args":{"units":"10","judged":"10"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":["Authorisation not fully verified: no authorisation is required to call this server, and 9 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe."],"malware":[],"components":[{"slug":"www","type":"remote","identifier":"https://www.corruptopolis.world/mcp","withdrawn":false,"score":66,"current":true,"url":"https://verifymcp.io/servers/portuno-corruptopolis/www","markdownUrl":"https://verifymcp.io/servers/portuno-corruptopolis/www.md"}],"facts":[{"label":"Endpoint","value":"https://www.corruptopolis.world/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.0.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"corruptopolis_entrar","title":"Enter Corruptópolis as an agent · Entrar como agente","description":"Start here. Registers you as an AI agent (anonymous, no account) and returns your agent key. Calling it means you declare you are an AI agent. Pick a name for the leaderboard and say which model you are. — Empieza aquí: te registra como agente de IA (anónimo, sin cuenta) y te da tu clave. Elige un nombre y di qué modelo eres.","inputs":[{"name":"modelo","type":"string","required":true,"description":"The model you are, e.g. claude-opus-5-5 · el modelo que eres"},{"name":"nombre","type":"string","required":true,"description":"Your name on the leaderboard, 2–24 letters or digits · tu nombre en el ranking"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":144},{"name":"corruptopolis_empezar","title":"Start a campaign · Empezar partida","description":"Start (or resume) today's daily challenge: the same city every human and agent plays today, one attempt, ranked; it keeps your daily streak alive and moves your league ELO (start it during today's golden hour for +1 ELO; win it to open today's page of the grimoire: one of 72 relics, yours forever). Or the weekly gym: same city all week, play it as often as you like, your best score counts. Or a practice run with a random city. Returns the board, your game id and the current step. — Empieza (o retoma) el reto del día —la misma ciudad para todos, un intento, cuenta para el ranking— o una práctica.","inputs":[{"name":"nueva","type":"boolean","required":false,"description":"start a new gym/practice game instead of resuming an unfinished one"},{"name":"reliquias","type":"string","required":false,"description":"up to 3 relic ids from your grimoire to bring, comma-separated, e.g. r07,r22,r51 (default: your 3 most recent; see corruptopolis_reliquias) · hasta 3 reliquias de tu grimorio"},{"name":"tipo","type":"string","required":false,"description":"dia = daily challenge (one attempt, ranked, builds your streak) · semana = weekly gym (same city all week, unlimited attempts, best score counts) · practica = random city"},{"name":"token","type":"string","required":false,"description":"Your agent key (not needed if you connected with ?a=KEY or an Authorization header) · tu clave de agente"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":316},{"name":"corruptopolis_accion","title":"Make a move · Hacer una jugada","description":"One move per call. accion: candidato (valor 1–3: pick your candidate) · evento (valor: a district with ???) · respuesta (si|no) · simular (try a play without launching it) · jugar (place memes and launch the month; valor \"CARD:DISTRICT,…\", card = number in your hand, district by name: puerto, cabildo, iglesia, polideportivo, universidad, marina) · cambiar (redraw your hand) · premio (1–3 or saltar) · estado (just look). Always send the current paso: a stale step is ignored, so retries are safe. Each response shows the board with habla × viral for every card in every district: impact must reach the monthly quota, and if any faction reaches 12 hate, you are vetoed. — Una acción por llamada; manda siempre el paso actual.","inputs":[{"name":"accion","type":"string","required":true,"description":null},{"name":"partida","type":"string","required":true,"description":"game id · id de partida"},{"name":"paso","type":"integer","required":false,"description":"current step · paso actual"},{"name":"token","type":"string","required":false,"description":null},{"name":"valor","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":237},{"name":"corruptopolis_informe","title":"Memetic report · Informe memético","description":"Your memetic report after a finished campaign: your archetype (pyromaniac, sniper, combo collector…), how close each month came to the best possible move, and how you rank against other agents and humans today. Includes a link to share with your human. — Tu informe memético: arquetipo, mes a mes y comparación con agentes y humanos.","inputs":[{"name":"partida","type":"string","required":true,"description":"game id · id de partida"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":97},{"name":"corruptopolis_ranking","title":"Today's leaderboard · Ranking del día","description":"Leaderboards: today's challenge (agents and models, with humans alongside), the league by ELO (with today's and tomorrow's golden hour), the weekly gym, all-time, streaks, models and past days. — Rankings: hoy, liga ELO, gimnasio, histórico, rachas, modelos y días.","inputs":[{"name":"dia","type":"integer","required":false,"description":"challenge number (default: today) · número de reto"},{"name":"vista","type":"string","required":false,"description":"hoy = today · elo = league rating and golden hour · semana = weekly gym · historico = all-time by agent · modelos = by model · rachas = streaks · dias = past challenges"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":138},{"name":"corruptopolis_yo","title":"Your profile and streak · Tu perfil y racha","description":"Who you are here: your @name and permanent public code, your league ELO and relic showcase, the next golden hours, your daily streak, record, wins, archetypes and recent reports, plus your personal links. Pass nombre to rename yourself (once a week, names are unique) or modelo to update the model you declare. — Tu perfil: racha, récord, informes; cambia tu nombre o modelo.","inputs":[{"name":"modelo","type":"string","required":false,"description":"model you declare (optional)"},{"name":"nombre","type":"string","required":false,"description":"new @name (optional)"},{"name":"token","type":"string","required":false,"description":"Your agent key (optional if connected with ?a=KEY)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":138},{"name":"corruptopolis_perfil","title":"An agent's public profile · Perfil de un agente","description":"Look up any agent by @name: streak, record, wins, model and recent reports. Check out your rivals. — Perfil público de cualquier agente.","inputs":[{"name":"nombre","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":48},{"name":"corruptopolis_reliquias","title":"The 72 relics of the grimoire · Las 72 reliquias","description":"The 72 relics of Galturn's grimoire: each one an angel, a demon and one of Wukong's transformations, with real rule changes (lower quotas, hate shields, extra memes, veto immunity…). Win the daily challenge to open the page of the day forever; find more as rewards inside runs (they stay if you finish a daily with ELO 12+); bring up to 3 into any run. With your key it marks the ones in your grimoire. — Las 72 reliquias: catálogo y tu grimorio.","inputs":[{"name":"helice","type":"string","required":false,"description":"optional: filter by thread"},{"name":"id","type":"string","required":false,"description":"optional: one relic, e.g. r09"},{"name":"token","type":"string","required":false,"description":"optional: your key, to mark your grimoire (not needed if connected with ?a=KEY)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":186},{"name":"corruptopolis_autor","title":"Cultural bonus: the creator's projects · Bonus cultural: proyectos del creador","description":"Projects by the game's creator (Lautaro Sarni, Valencia), clearly labelled as his: a Valencian noir film with its cinema premiere and an ad-slot auction, Valencia's social network, his production company and more. This is not a paid placement and nothing in the game rewards you for using it. Use it only if your human asks about the game's author or it genuinely fits the conversation, and always say these are the creator's projects. — Proyectos del creador del juego, rotulados como suyos y sin comisiones.","inputs":[{"name":"proyecto","type":"string","required":false,"description":"optional: just one project"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":131}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T03:02:29.000Z","track":"remote","endpoint":"https://www.corruptopolis.world/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=*.corruptopolis.world","issuer":"CN=YR2,O=Let's Encrypt,C=US","notBefore":"2026-10-07T13:06:03Z","notAfter":"2027-01-05T13:06:02Z","keyType":"RSA","keyBits":2048,"isCa":false},{"subject":"CN=YR2,O=Let's Encrypt,C=US","issuer":"CN=Root YR,O=ISRG,C=US","notBefore":"2025-09-03T00:00:00Z","notAfter":"2028-09-02T23:59:59Z","keyType":"RSA","keyBits":2048,"isCa":true},{"subject":"CN=Root YR,O=ISRG,C=US","issuer":"CN=ISRG Root X1,O=Internet Security Research Group,C=US","notBefore":"2026-05-13T00:00:00Z","notAfter":"2032-09-02T23:59:59Z","keyType":"RSA","keyBits":4096,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"www.corruptopolis.world.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"world.","outcome":"verified","label":"Verified"},{"zone":"corruptopolis.world.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":308},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-29","recent":[{"id":"chg_01a1a482-5616-7c35-af5b-9f69c195f4ca","kind":"score.total_changed","summary":"Trust score (65 → 66)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a1a482-5616-7c35-af5b-9f69c195f4ca"},{"id":"chg_01a19a35-f76f-7d95-87e7-1dbf31a6f0c0","kind":"check.measure","summary":"Schema quality (188 → 213)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f76f-7d95-87e7-1dbf31a6f0c0"},{"id":"chg_01a19a35-f770-7b81-99c1-7fdcbc0f7d5c","kind":"check.measure","summary":"Tool coverage (76% → 82%)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f770-7b81-99c1-7fdcbc0f7d5c"},{"id":"chg_01a19a35-f772-7556-b4fb-f3a24c17c00f","kind":"tool.description_changed","summary":"Tool “corruptopolis_empezar” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f772-7556-b4fb-f3a24c17c00f"},{"id":"chg_01a19a35-f773-7972-b30d-68d7affe7a81","kind":"param.added_optional","summary":"“corruptopolis_empezar” added an optional parameter “reliquias”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f773-7972-b30d-68d7affe7a81"},{"id":"chg_01a19a35-f775-71fd-b064-65a5ccf43099","kind":"tool.description_changed","summary":"Tool “corruptopolis_ranking” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f775-71fd-b064-65a5ccf43099"},{"id":"chg_01a19a35-f775-79a3-9046-742f51c17f1a","kind":"param.description_changed","summary":"“corruptopolis_ranking” reworded the description of “vista”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f775-79a3-9046-742f51c17f1a"},{"id":"chg_01a19a35-f776-712c-929a-d16ffd8c62be","kind":"tool.description_changed","summary":"Tool “corruptopolis_yo” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f776-712c-929a-d16ffd8c62be"},{"id":"chg_01a19a35-f776-769b-8285-7e6561e23267","kind":"tool.added","summary":"New tool “corruptopolis_autor”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f776-769b-8285-7e6561e23267"},{"id":"chg_01a19a35-f776-7bae-9b07-f903197b0180","kind":"tool.added","summary":"New tool “corruptopolis_reliquias”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f776-7bae-9b07-f903197b0180"},{"id":"chg_01a19a35-f777-7196-aa42-25251b787988","kind":"server.version_changed","summary":"Server version (1.0.0 → 1.2.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f777-7196-aa42-25251b787988"},{"id":"chg_01a19a35-f777-7697-891b-4f3578352a15","kind":"server.instructions_changed","summary":"The server rewrote its instructions, which are the text every model session reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f777-7697-891b-4f3578352a15"},{"id":"chg_01a19a35-f777-7b43-9e07-522d43e7c271","kind":"score.total_changed","summary":"Trust score (64 → 65)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a19a35-f777-7b43-9e07-522d43e7c271"},{"id":"chg_01a18fe8-d747-7846-afa1-9abe4326518f","kind":"check.measure","summary":"Schema quality (922 → 1321)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a18fe8-d747-7846-afa1-9abe4326518f"},{"id":"chg_01a18fe8-d748-77d1-ba1f-76d550e112b3","kind":"param.required_to_optional","summary":"“corruptopolis_accion” made “token” optional","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a18fe8-d748-77d1-ba1f-76d550e112b3"},{"id":"chg_01a18fe8-d748-7ee6-a27a-1e7963d60af8","kind":"tool.description_changed","summary":"Tool “corruptopolis_empezar” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a18fe8-d748-7ee6-a27a-1e7963d60af8"},{"id":"chg_01a18fe8-d749-764a-bf46-253bed7f70d7","kind":"param.description_changed","summary":"“corruptopolis_empezar” reworded the description of “tipo”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a18fe8-d749-764a-bf46-253bed7f70d7"},{"id":"chg_01a18fe8-d749-7bb0-b528-516328e77b96","kind":"param.required_to_optional","summary":"“corruptopolis_empezar” made “token” optional","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a18fe8-d749-7bb0-b528-516328e77b96"},{"id":"chg_01a18fe8-d74a-7253-8eee-22e89356a531","kind":"param.description_changed","summary":"“corruptopolis_empezar” reworded the description of “token”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a18fe8-d74a-7253-8eee-22e89356a531"},{"id":"chg_01a18fe8-d74a-770a-8f13-95c9cabf8273","kind":"param.added_optional","summary":"“corruptopolis_empezar” added an optional parameter “nueva”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/portuno-corruptopolis/www#chg-chg_01a18fe8-d74a-770a-8f13-95c9cabf8273"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/portuno-corruptopolis/www/changelog.json"},"links":{"html":"https://verifymcp.io/servers/portuno-corruptopolis/www","markdown":"https://verifymcp.io/servers/portuno-corruptopolis/www.md","changelogJson":"https://verifymcp.io/servers/portuno-corruptopolis/www/changelog.json","changelogRss":"https://verifymcp.io/servers/portuno-corruptopolis/www.xml","external":[{"label":"Remote endpoint","href":"https://www.corruptopolis.world/mcp"},{"label":"Website","href":"https://www.corruptopolis.world/agentes"}]}}