Crawler Summary

nyc-school-explorer answer-first brief

An AI-native data journalism tool for exploring NYC School Quality Report data through natural language conversation, with responsible AI guardrails and transparent methodology. NYC School Explorer An AI-native data journalism tool for exploring NYC School Quality Report data through natural language conversation, with responsible AI guardrails and transparent methodology. Features - **Natural language chat** powered by Claude for querying NYC school data - **Three-layer AI guardrails**: pre-filter, system prompt, and tool-level context to ensure responsible framing - **LLM-as-judge evaluati Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.

Freshness

Last checked 2/25/2026

Best For

nyc-school-explorer is best for general automation workflows where MCP compatibility matters.

Not Ideal For

Contract metadata is missing or unavailable for deterministic execution.

Evidence Sources Checked

editorial-content, GITHUB MCP, runtime-metrics, public facts pack

Claim this agent
Agent DossierGitHubSafety: 89/100

nyc-school-explorer

An AI-native data journalism tool for exploring NYC School Quality Report data through natural language conversation, with responsible AI guardrails and transparent methodology. NYC School Explorer An AI-native data journalism tool for exploring NYC School Quality Report data through natural language conversation, with responsible AI guardrails and transparent methodology. Features - **Natural language chat** powered by Claude for querying NYC school data - **Three-layer AI guardrails**: pre-filter, system prompt, and tool-level context to ensure responsible framing - **LLM-as-judge evaluati

MCPself-declared

Public facts

4

Change events

1

Artifacts

0

Freshness

Feb 25, 2026

Verifiededitorial-contentNo verified compatibility signals

Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.

Trust evidence available

Trust score

Unknown

Compatibility

MCP

Freshness

Feb 25, 2026

Vendor

Jkinberg

Artifacts

0

Benchmarks

0

Last release

0.1.0

Executive Summary

Key links, install path, and a quick operational read before the deeper crawl record.

Verifiededitorial-content

Summary

Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.

Setup snapshot

git clone https://github.com/jkinberg/nyc-school-explorer.git
  1. 1

    Setup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.

  2. 2

    Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Evidence Ledger

Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.

Verifiededitorial-content
Vendor (1)

Vendor

Jkinberg

profilemedium
Observed Feb 25, 2026Source linkProvenance
Compatibility (1)

Protocol compatibility

MCP

contractmedium
Observed Feb 25, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance
Integration (1)

Crawlable docs

6 indexed pages on the official domain

search_documentmedium
Observed Apr 15, 2026Source linkProvenance

Release & Crawl Timeline

Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.

Self-declaredagent-index

Artifacts Archive

Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.

Self-declaredGITHUB MCP

Extracted files

0

Examples

4

Snippets

0

Languages

typescript

Executable Examples

bash

# Install dependencies
npm install

# Seed the database (if not already done)
npx tsx scripts/seed-database.ts

# Add your API key to .env.local
echo "ANTHROPIC_API_KEY=your-key-here" > .env.local

# Run development server
npm run dev

bash

npm run test           # Watch mode
npm run test:run       # Run once (CI)
npm run test:coverage  # With coverage report

bash

npx tsx scripts/test-evaluation-rubric.ts https://your-production-url.run.app

bash

# Test locally with Docker
docker build -t nyc-school-explorer .
docker run -p 3000:3000 \
  -e ANTHROPIC_API_KEY=your-key \
  -e GEMINI_API_KEY=your-key \
  nyc-school-explorer

Docs & README

Full documentation captured from public sources, including the complete README when available.

Self-declaredGITHUB MCP

Docs source

GITHUB MCP

Editorial quality

ready

An AI-native data journalism tool for exploring NYC School Quality Report data through natural language conversation, with responsible AI guardrails and transparent methodology. NYC School Explorer An AI-native data journalism tool for exploring NYC School Quality Report data through natural language conversation, with responsible AI guardrails and transparent methodology. Features - **Natural language chat** powered by Claude for querying NYC school data - **Three-layer AI guardrails**: pre-filter, system prompt, and tool-level context to ensure responsible framing - **LLM-as-judge evaluati

Full README

NYC School Explorer

An AI-native data journalism tool for exploring NYC School Quality Report data through natural language conversation, with responsible AI guardrails and transparent methodology.

Features

  • Natural language chat powered by Claude for querying NYC school data
  • Three-layer AI guardrails: pre-filter, system prompt, and tool-level context to ensure responsible framing
  • LLM-as-judge evaluation: every response is scored on factual accuracy, context inclusion, limitation acknowledgment, responsible framing, and query relevance -- scores are shown in the chat UI
  • Evaluation logging: low-scoring responses (< 75) are auto-logged; users can flag any response with feedback via modal
  • MCP tools for school search (with natural language sorting), profiles, comparisons, correlations (19 metrics including surveys and staff data), charts, and curated lists
  • Interactive charts via Recharts for data visualization with PNG/CSV export
  • School profiles with year-over-year comparison
  • Copy and export: copy response text, export charts as PNG or CSV, copy evaluation scores

Chat Interface

  • Rich markdown rendering: tables, lists, code blocks with proper styling via react-markdown
  • Auto-linked school names: school names in responses link directly to profile pages (opens in new tab)
  • Tool visibility: collapsible cards show when Claude is searching, analyzing, or generating charts
  • Smart scrolling: no auto-scroll during streaming; floating "scroll to bottom" button when reading history
  • Contextual follow-ups: AI-generated suggestions reference specific schools, boroughs, and metrics from the conversation
  • Copy response text: copy button on each AI response to copy plain text to clipboard
  • Export charts: download charts as PNG (high-resolution) or CSV (with proper escaping)
  • Copy evaluation: copy button in evaluation dropdown to copy scores and summary

Getting Started

# Install dependencies
npm install

# Seed the database (if not already done)
npx tsx scripts/seed-database.ts

# Add your API key to .env.local
echo "ANTHROPIC_API_KEY=your-key-here" > .env.local

# Run development server
npm run dev

Open http://localhost:3000 and navigate to the Explore page to start chatting.

Running Tests

npm run test           # Watch mode
npm run test:run       # Run once (CI)
npm run test:coverage  # With coverage report

328 tests across 12 test files, running in ~1.5 seconds:

| Module | Tests | Focus | |--------|-------|-------| | AI Guardrails | 77 | Prefilter patterns, evaluation scoring | | MCP Tools | 109 | Search filtering, profile lookup, comparison, context, sorting | | Utilities | 73 | Formatting, fuzzy matching | | Database Logic | 35 | Abbreviations, correlations, categories | | UI Components | 34 | Chart export, copy functionality |

Testing the Evaluation Rubric

To test the LLM-as-judge evaluation against production:

npx tsx scripts/test-evaluation-rubric.ts https://your-production-url.run.app

This runs 12 test queries and reports on factual accuracy scores and evaluation flags. Use this after making changes to tool results, correlation metrics, or system prompt guidance.

See CLAUDE.md for detailed testing documentation.

Tech Stack

  • Framework: Next.js 16 with App Router
  • Language: TypeScript
  • Database: SQLite with better-sqlite3
  • AI: Anthropic Claude API (claude-sonnet-4-20250514 for chat), Google Gemini (gemini-3-flash-preview for evaluation)
  • Charts: Recharts
  • Markdown: react-markdown with remark-gfm
  • Styling: Tailwind CSS 4
  • Testing: Vitest with React Testing Library

Environment Variables

| Variable | Required | Default | Description | |----------|----------|---------|-------------| | ANTHROPIC_API_KEY | Yes | -- | Anthropic API key for chat | | GEMINI_API_KEY | No | -- | Google Gemini API key for LLM-as-judge evaluation | | ENABLE_EVALUATION | No | true | Set to false to disable LLM-as-judge response scoring | | RATE_LIMIT_ENABLED | No | true | Set to false to disable rate limiting | | ZAPIER_WEBHOOK_URL | No | -- | Zapier webhook URL for logging evaluations to Google Sheets |

Data Sources

  • NYC DOE School Quality Reports (2022-23, 2023-24, 2024-25) — Impact/Performance scores only available for 2023-24+
  • LCGMS + ShapePoints for school locations
  • LL16 Budget Reports (2022-23 through 2024-25)
  • LL93 Suspension Reports (2022-23 through 2024-25)
  • PTA Financial Reporting (2022-23 through 2024-25)

MCP API

The app exposes an MCP (Model Context Protocol) HTTP endpoint at /api/mcp that allows external AI agents (like Claude Desktop) to query school data programmatically.

  • Endpoint: POST /api/mcp
  • Format: JSON-RPC 2.0
  • Rate limit: 60 requests/minute per IP
  • No authentication required

See docs/mcp-api.md for full API documentation.

Evaluation Logging

The system logs AI responses for quality review:

  • Auto-logging: Responses with evaluation score < 75 are automatically logged
  • User flagging: Users can click "Flag" on any response to submit feedback via modal
  • Storage: Logs are sent to Zapier webhook (for Google Sheets) and saved locally to logs/evaluations.jsonl
  • Analysis: Run npx tsx scripts/analyze-logs.ts to analyze logged responses

See docs/evaluation-logging.md for Zapier/Google Sheets setup.

Deployment

Deployed to Google Cloud Run with automatic CI/CD via GitHub Actions.

# Test locally with Docker
docker build -t nyc-school-explorer .
docker run -p 3000:3000 \
  -e ANTHROPIC_API_KEY=your-key \
  -e GEMINI_API_KEY=your-key \
  nyc-school-explorer

Push to main to deploy automatically. See docs/deployment.md for full setup instructions.

License

Private project.

Contract & API

Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.

MissingGITHUB MCP

Contract coverage

Status

missing

Auth

None

Streaming

No

Data region

Unspecified

Protocol support

MCP: self-declared

Requires: none

Forbidden: none

Guardrails

Operational confidence: low

No positive guardrails captured.
Invocation examples
curl -s "https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/snapshot"
curl -s "https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/contract"
curl -s "https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/trust"

Reliability & Benchmarks

Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.

Missingruntime-metrics

Trust signals

Handshake

UNKNOWN

Confidence

unknown

Attempts 30d

unknown

Fallback rate

unknown

Runtime metrics

Observed P50

unknown

Observed P95

unknown

Rate limit

unknown

Estimated cost

unknown

Do not use if

Contract metadata is missing or unavailable for deterministic execution.
No benchmark suites or observed failure patterns are available.

Media & Demo

Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.

Missingno-media
No screenshots, media assets, or demo links are available.

Related Agents

Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.

Self-declaredprotocol-neighbors
GITLAB_AI_CATALOGgitlab-mcp

Rank

83

A Model Context Protocol (MCP) server for GitLab

Traction

No public download signal

Freshness

Updated 2d ago

MCP
GITLAB_PUBLIC_PROJECTSgitlab-mcp

Rank

80

A Model Context Protocol (MCP) server for GitLab

Traction

No public download signal

Freshness

Updated 2d ago

MCP
GITLAB_AI_CATALOGrmcp-openapi

Rank

74

Expose OpenAPI definition endpoints as MCP tools using the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)

Traction

No public download signal

Freshness

Updated 2d ago

MCP
GITLAB_AI_CATALOGrmcp-actix-web

Rank

72

An actix_web backend for the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)

Traction

No public download signal

Freshness

Updated 2d ago

MCP
Machine Appendix

Contract JSON

{
  "contractStatus": "missing",
  "authModes": [],
  "requires": [],
  "forbidden": [],
  "supportsMcp": false,
  "supportsA2a": false,
  "supportsStreaming": false,
  "inputSchemaRef": null,
  "outputSchemaRef": null,
  "dataRegion": null,
  "contractUpdatedAt": null,
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Invocation Guide

{
  "preferredApi": {
    "snapshotUrl": "https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/snapshot",
    "contractUrl": "https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/contract",
    "trustUrl": "https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/trust"
  },
  "curlExamples": [
    "curl -s \"https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/snapshot\"",
    "curl -s \"https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/contract\"",
    "curl -s \"https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "MCP"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "GITHUB_MCP",
      "generatedAt": "2026-04-17T02:50:08.354Z"
    }
  },
  "retryPolicy": {
    "maxAttempts": 3,
    "backoffMs": [
      500,
      1500,
      3500
    ],
    "retryableConditions": [
      "HTTP_429",
      "HTTP_503",
      "NETWORK_TIMEOUT"
    ]
  }
}

Trust JSON

{
  "status": "unavailable",
  "handshakeStatus": "UNKNOWN",
  "verificationFreshnessHours": null,
  "reputationScore": null,
  "p95LatencyMs": null,
  "successRate30d": null,
  "fallbackRate": null,
  "attempts30d": null,
  "trustUpdatedAt": null,
  "trustConfidence": "unknown",
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Capability Matrix

{
  "rows": [
    {
      "key": "MCP",
      "type": "protocol",
      "support": "unknown",
      "confidenceSource": "profile",
      "notes": "Listed on profile"
    }
  ],
  "flattenedTokens": "protocol:MCP|unknown|profile"
}

Facts JSON

[
  {
    "factKey": "docs_crawl",
    "category": "integration",
    "label": "Crawlable docs",
    "value": "6 indexed pages on the official domain",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  },
  {
    "factKey": "vendor",
    "category": "vendor",
    "label": "Vendor",
    "value": "Jkinberg",
    "href": "https://github.com/jkinberg/nyc-school-explorer",
    "sourceUrl": "https://github.com/jkinberg/nyc-school-explorer",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-02-25T03:12:53.329Z",
    "isPublic": true
  },
  {
    "factKey": "protocols",
    "category": "compatibility",
    "label": "Protocol compatibility",
    "value": "MCP",
    "href": "https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/contract",
    "sourceUrl": "https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/contract",
    "sourceType": "contract",
    "confidence": "medium",
    "observedAt": "2026-02-25T03:12:53.329Z",
    "isPublic": true
  },
  {
    "factKey": "handshake_status",
    "category": "security",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "href": "https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/trust",
    "sourceUrl": "https://xpersona.co/api/v1/agents/mcp-jkinberg-nyc-school-explorer/trust",
    "sourceType": "trust",
    "confidence": "medium",
    "observedAt": null,
    "isPublic": true
  }
]

Change Events JSON

[
  {
    "eventType": "docs_update",
    "title": "Docs refreshed: Sign in to GitHub · GitHub",
    "description": "Fresh crawlable documentation was indexed for the official domain.",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  }
]

Sponsored

Ads related to nyc-school-explorer and adjacent AI workflows.