mayanet-verify
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mayanet-verifyverify volunteer verify-operator-001"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mayanet Verify MCP
Stdio MCP that checks a volunteer against Colombian public sources (Croma) and stores a Pass / Alert / Fail report in an isolated Neon schema verify. It never reads or alters intake (public.volunteers).
License: MIT. LinkedIn is URL-normalize only — no profile fetch.
Quick path
npm install(Node 20+).Put a verify-scoped Postgres URL and a Croma key in
.env(copy.env.example).Apply schema once:
psql "$DATABASE_URL" -f sql/001_verify_schema.sqlPoint Cursor at this repo (stdio block below) and reload MCP.
Call
verify_volunteerwithvolunteer_id: "verify-operator-001"after the document is bound.
Expected: a JSON report with overall_status and per-check statuses. Seed fixture is Example Operator / CC 1000000000 / id verify-operator-001.
Related MCP server: checkyourself
Explain
Topic | Decision |
Who uses it | Any MCP client (Cursor, Claude). No GUI in this repo. |
Data plane | Schema |
Colombia | Croma REST ( |
Store/normalize a URL. | |
Orchestrator |
|
Out of scope: UI, WhatsApp/email, numeric scores, biometrics, LinkedIn scraping, Registraduría, bulk-copy of intake rows.
Stand up
Requirements
Node.js 20+
DATABASE_URL— Postgres role that can DMLverifyonlyCROMA_API_KEY— org bearer (croma_live_…)psqlonce, to apply SQL
DATABASE_URL=<verify-scoped-postgres-url>
CROMA_API_KEY=<croma-api-key>Do not commit .env. Runtime never runs DDL.
Schema (once)
psql "$DATABASE_URL" -f sql/001_verify_schema.sqlCreates verify.volunteers, verify.verification_requests, verify.verification_reports, and seeds verify-operator-001. Re-apply is safe (ON CONFLICT (document_number) DO NOTHING).
Rollback: DROP SCHEMA verify CASCADE. Never ALTER public.volunteers.
Cursor (stdio)
npm install, then user ~/.cursor/mcp.json or project .cursor/mcp.json:
{
"mcpServers": {
"mayanet-verify": {
"command": "npx",
"args": ["tsx", "src/index.ts"],
"cwd": "/absolute/path/to/mallanet-verify",
"env": {
"DATABASE_URL": "<verify-scoped-postgres-url>",
"CROMA_API_KEY": "<croma-api-key>"
}
}
}
}Missing env aborts before tools register. Reload MCP after edits.
Smoke (stdin close exits 0 if env is set):
printf '' | DATABASE_URL="<verify-scoped-postgres-url>" CROMA_API_KEY="<croma-api-key>" npx tsx src/index.tsOperate
First verify (seed)
The SQL seed is already bound (document_number = 1000000000). After MCP is live:
list_pending_volunteers{ "limit": 20, "status_filter": "pending" }— expectverify-operator-001until a report exists.get_volunteer{ "volunteer_id": "verify-operator-001" }— confirm the row.verify_volunteer{ "volunteer_id": "verify-operator-001" }— Croma + persist.
To bind a different person (never commit a real cédula):
{
"volunteer_id": "verify-operator-001",
"document_type": "CC",
"document_number": "<document-number>",
"linkedin_url": "https://www.linkedin.com/in/example"
}That is request_verification_data. Then verify_volunteer again. Without document_number the orchestrator throws identity unbound. Unknown id throws volunteer not found.
Tools
Tool | Required | Optional | Role |
| — |
| Rows in |
|
| — | One row |
|
|
| Bind identity; never logged |
| — |
| Croma only; RUES if NIT/employer |
|
|
| Normalize URL; |
|
| — | Croma + persist (same persist path as orchestrator) |
|
| — | Request row + persist report |
Report shape
{
"volunteer_id": "verify-operator-001",
"name": "Example Operator",
"overall_status": "Pass",
"checks": {
"judicial": "Pass",
"criminal_records": "Pass",
"procuraduria": "Pass",
"rues": "N/A",
"linkedin_consistency": "Alert"
},
"findings": [],
"linkedin_summary": { "headline": "", "experience": [], "education": [] },
"timestamp": "2026-08-16T00:00:00.000Z"
}Heuristics
Check | Pass | Alert | Fail |
Policía / Procuraduría |
| upstream error |
|
Rama Judicial | no cases | any cases or error (name search; never auto-Fail) | — |
RUES | found and employer matches | not found, mismatch, or error | — |
RUES skipped | — | — |
|
— | always, until consented OAuth | — |
Overall: any Fail → Fail; else any Alert → Alert; else Pass. N/A is ignored. One source failing does not abort the others.
Limits and failures
Croma default quota is 100 requests/day/org. One
verify_volunteeris several calls.Policía can take ~55s (202 poll in-process). Host MCP timeouts may fire first.
Logs may include
volunteer_idand document type. They must never includedocument_number.
Tests
npm testNo live Croma in CI. Isolation tests assert the SQL never touches public.
Checklist
.envset, not committedsql/001_verify_schema.sqlapplied to a verify-scoped databaseCursor MCP reloaded; tools visible
get_volunteerreturnsverify-operator-001verify_volunteerreturnsoverall_status+checksnpm testis green
This server cannot be deployed
Maintenance
Related MCP Connectors
A paid remote MCP for Skybridge, built to return verdicts, receipts, usage logs, and audit-ready JSO
A paid remote MCP for CLI tool MCP, built to return verdicts, receipts, usage logs, and audit-ready
A paid remote MCP for Equibles, built to return verdicts, receipts, usage logs, and audit-ready JSON
A paid remote MCP for ZeroID, built to return verdicts, receipts, usage logs, and audit-ready JSON.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for sanctions screening and PEP checks via OpenSanctions API. Search entities, match against 320+ sanctions lists, and run compound compliance investigations with AI agents.630 npmMIT
- AlicenseAqualityAmaintenanceLocal-first production-readiness MCP server for AI-built apps. It runs read-only checks, produces an evidence-based readiness score, and guides fixes before launch.115Apache 2.0
- FlicenseNot gradedqualityDmaintenanceMCP server for scanning AI systems and code for demographic, occupational, and geographic biases. Enables CI integration and AI agent-driven bias detection.-
- FlicenseNot gradedqualityCmaintenanceMCP server for Peruvian government data, enabling search and anomaly detection in public procurement (OSCE) and legislative tracking (Congress), plus semantic search over both domains.-