Attesta
Provenance-grade Portugal residential property data and signed JWS verification for AI agents.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
claude mcp add --transport http attesta 'https://api-production-d9143.up.railway.app/mcp'
{
"mcpServers": {
"attesta": {
"type": "http",
"url": "https://api-production-d9143.up.railway.app/mcp"
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Attesta
B2A platform: provenance-grade Portugal residential property data + signed JWS verification for AI agents.
Authoritative docs: attesta-architecture.md · attesta-agent-prompt.md
Quick start
make install
cp .env.example .env
make db-up # Postgres + pgvector
make migrate # apply Alembic migrations
make dev # API at :8000
| Endpoint | URL |
|---|---|
| Health | /healthz |
| REST API | /docs |
| MCP | /mcp |
| JWKS | /.well-known/jwks.json |
| Agent discovery | /llms.txt |
Pipeline (local)
make ingest # attesta-ingest --fixture (bundled JSON corpus)
make resolve # attesta-resolve
make test
Ingestion
Default: bundled fixtures in tests/fixtures/ — no external scraper credentials needed.
make ingest # same as attesta-ingest --fixture
attesta-ingest --fixture # explicit
attesta-ingest --source idealista_pt # optional: Apify actor (needs APIFY_* in .env)
attesta-ingest --source imovirtual # optional: Apify actor
Live portal collectors implement app/ingestion/base.py (BaseCollector). Apify-backed Idealista/Imovirtual collectors ship as optional plugins; add a new source by subclassing, not refactoring the pipeline. See docs/decisions/008-fixture-first-ingestion.md.
To grow production corpus: pick a collector strategy (build Apify actors, direct HTTP, licensed feed, CSV import), wire env, and schedule the ingest worker on Railway.
CI
GitHub Actions runs ruff, mypy (advisory), pytest on SQLite + Postgres.
Decisions
Architecture Decision Records: docs/decisions/
Cursor rules: .cursor/rules/
Milestone status
- [x] M0 — Skeleton, CI, docker-compose, alembic scaffold
- [x] M1 — Schema, ingestion worker, fixtures, PII tests
- [x] M2 — Resolution matcher, read API
- [x] M3 — MCP tools, metering choke point, guardrails
- [x] M4 — Verification pipeline, JWS/JWKS, evidence API, eval harness (62 claims), attestation spec
- [x] M5 — Railway 3-service config, demo + verify scripts, OpenAPI export
Verification
make eval # 62 labeled claims, 75% threshold
python scripts/verify_jws.py <jws> --local
python scripts/demo.py # E2E against local API
make openapi # writes public/openapi.json
LLM (optional, provider-agnostic via LiteLLM)
Set LLM_ENABLED=true and configure models + prompt file paths in .env (see .env.example).
Uses LiteLLM — point LLM_PARSE_MODEL / LLM_ADJUDICATE_MODEL at any supported provider (anthropic/, openai/, gemini/, azure/, groq/, etc.).
Provider API keys follow LiteLLM env conventions — set only the key(s) for your chosen provider(s).
See distribution/llm-providers.md for examples and cost estimates.
Attestation spec: public/attestation-spec.md
Market data contract (stats/comps envelopes): public/market-data-contract.md
Questions fréquentes
Qu'est-ce que Attesta ?
Provenance-grade Portugal residential property data and signed JWS verification for AI agents.
Comment installer Attesta ?
Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http attesta 'https://api-production-d9143.up.railway.app/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour Attesta ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
Attesta est-il open source ?
Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.
Qui maintient Attesta ?
Il est publié par doralboim. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.