mcpField
A
Attesta

Attesta

Remote
github.comBusiness & Marketing0Updated 5w ago

About Attesta

Attesta is a Portugal residential property data and verification platform for AI agents, providing provenance-oriented data and signed JWS verification. It includes ingestion and record-resolution pipelines, a REST API and an MCP endpoint, with public keys available through JWKS.

Key features

  1. 01Ingest property data, including bundled fixtures
  2. 02Resolve and match property records
  3. 03Expose REST and MCP endpoints
  4. 04Create and verify JWS signatures
  5. 05Publish public keys through JWKS
  6. 06Optionally connect models via LiteLLM

Use cases

  1. 01Run a local ingestion pipeline on fixture data
  2. 02Query Portuguese residential property data through the API
  3. 03Verify JWS signatures on property data
  4. 04Evaluate claims against labeled examples

MCP support

Attesta provides an MCP endpoint at `/mcp` for MCP clients to access its property-data capabilities. It also exposes a REST API, JWKS and evidence-related endpoints.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://api-production-d9143.up.railway.app/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

Details

From the project README

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
EndpointURL
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

  • M0 — Skeleton, CI, docker-compose, alembic scaffold
  • M1 — Schema, ingestion worker, fixtures, PII tests
  • M2 — Resolution matcher, read API
  • M3 — MCP tools, metering choke point, guardrails
  • M4 — Verification pipeline, JWS/JWKS, evidence API, eval harness (62 claims), attestation spec
  • 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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.