fabrica-mcp: Instructions file for Codex

AGENTS.md

fabrica-mcp AGENTS.md is an instructions file for Codex, OpenCode from fabrica-land/fabrica-mcp. It costs 6,203 tokens per session, scanned A, original, MIT.

Project instructions for a server that lets AI agents read property data from Fabrica. Fabrica records beneficial ownership of real property as ERC-1155 NFTs, a type of Ethereum token.

In plain words
What is it for?
Use it when developing or maintaining the Fabrica server and its read-only property-data tools.
Why use it?
It gives a coding agent the project structure, technology choices, data sources, and rules it must follow when changing this server.

Instructions file for CodexOpenCode

Written for Codex and OpenCode: the file is AGENTS.md. Also seen: positional $N argument.

This is fabrica-land/fabrica-mcp's own configuration. It tells Codex and OpenCode how to work on fabrica-mcp itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything fabrica-mcp configures →

Reuse

Borrowing it

Nothing to install: this file belongs to fabrica-land/fabrica-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/fabrica-land/fabrica-mcp/main/AGENTS.md
Clone the repo
git clone --depth 1 https://github.com/fabrica-land/fabrica-mcp

Made for: Codex, OpenCode.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for fabrica-mcp AGENTS.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/fabrica-land/fabrica-mcp/agents-md/github.svg)](https://agentmods.dev/instructions/fabrica-land/fabrica-mcp/agents-md)
Your own site
<a href="https://agentmods.dev/instructions/fabrica-land/fabrica-mcp/agents-md"><img src="https://agentmods.dev/badge/instructions/fabrica-land/fabrica-mcp/agents-md/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for fabrica-mcp AGENTS.md

Your own site · 80×15
<a href="https://agentmods.dev/instructions/fabrica-land/fabrica-mcp/agents-md"><img src="https://agentmods.dev/badge/instructions/fabrica-land/fabrica-mcp/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 6,203 This file is loaded in full into every session.
When invoked 6,203 The same file — it is already loaded in full.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.06203 $0.06203
Opus 5.5 $0.02481 $0.02481
Sonnet 5.5 $0.01241 $0.01241
Haiku 4.5 $0.00620 $0.00620

Measured 4d ago against content hash 0f1c4a815a43, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

fabrica-mcp AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

AGENTS.md · 298 lines

How it starts

The opening of the file, as written. The whole thing — 298 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Fabrica MCP Server

An MCP server giving AI agents read-only access to tokenized real property data on the Fabrica protocol.

What is Fabrica?

Fabrica tokenizes real property (land) as ERC-1155 NFTs on Ethereum. A legal trust holds title at the county level, and the token represents the beneficial interest in that trust: owning the token means owning the beneficial interest in the trust that holds the property.


Project Structure

src/
  config.ts           # Network config, contract addresses, legal notices
  server.ts           # createServer(): registers every tool
  prompts.ts          # MCP prompts (due_diligence, work_parcel_list, wallet_review, how_to_add_land)
  index.ts            # stdio entrypoint (local installs)
  http.ts             # stateless Streamable HTTP handler (hosted)
  usage-log.ts        # one structured log line per request, no arguments or IPs (docs/usage/)
  vercel.ts           # Vercel function entry, bundled by scripts/build-vercel.mjs
  auth/
    config.ts         # Connect Fabrica (OAuth resource server): FABRICA_OAUTH flag, issuer per network, the /mcp/account resource
    token.ts          # access-token checks (ES256 JWT, issuer, audience, expiry, at+jwt) against the issuer's JWKS; never logged
  ui/property-card.ts # registers the property card MCP App resource (ui://fabrica/property-card)
  ui/generated/       # gitignored: HTML built from /ui by scripts/build-ui.mjs
server.json, server.testnet.json # MCP Registry entries (land.fabrica/mcp, land.fabrica/mcp-testnet); npm run registry:publish
skills/fabrica/SKILL.md # Agent Skills file, served at /skill.md by scripts/build-vercel.mjs; keep it in step with the tools
ui/
  property-card/      # the MCP App view (index.html template + app.ts), bundled with the
                      # MCP Apps SDK into one self-contained HTML string (no CDN scripts).
                      # view.ts: layout from the host context (compact under 480 px or on a
                      # phone, regular otherwise), hover, safe areas, fact lines; unit tested
  fonts/              # Open Sauce Two (OFL) subset, served at /fonts by the hosted server
  tools/
    properties.ts     # search_land, get_land_property, get_land_boundary
    lending.ts        # get_fabrica_lending_market
    loan-book.ts      # get_fabrica_loan_book (distribution of the loan records; no auction proceeds or per-loan liquidation rows)
    portfolio.ts      # get_land_portfolio
    protocol.ts       # get_fabrica_stats
    scoring.ts        # explain_property_checks
    borrowing.ts      # estimate_land_borrowing
    valuation.ts      # get_land_valuation (GraphQL GetValuation + REST /valuation/v1)
    activity.ts       # get_land_activity
    marketplace.ts    # get_land_order_book
    images.ts         # get_land_map_image, get_land_portfolio_map_image
    documents.ts      # get_land_trust_documents
    tax.ts            # get_land_tax_status (also the taxes line on get_land_property)
    knowledge.ts      # ask_fabrica
    parcels.ts        # find_us_parcel (Regrid type-ahead via the API, /go on-ramp link, per-client limit)
    coverage.ts       # check_county_coverage (static on-ramp rules table in src/data/onramp-coverage.json, built by scripts/build-coverage.mjs)
    support.ts        # contact_fabrica_support (help center link, support email, prefilled mailto; nothing sent)
    sign-requests.ts  # make_land_offer, list_land_for_sale, accept_land_offer, buy_land, cancel_land_order (prepare a sign request), get_sign_request
    loans.ts          # borrow_against_land, repay_loan_against_land (sign requests), get_loan_against_land (GetLoanContext, never cached)
    transactions.ts   # get_transaction_status (JSON-RPC reads only)
    account.ts        # get_my_account, get_my_properties (signed-in endpoint /mcp/account only, the connected user's own token)
    attention.ts      # what_needs_attention (signed-in endpoint only; ranks items from the other personal reads plus fees and checks on up to 20 live properties)
    my-loans.ts       # get_my_loans (signed-in endpoint only, portfolio:read; loans with live payoff, pool deposits valued at tick prices)
    offers.ts         # get_my_offers (signed-in endpoint only, portfolio:read; public order data for the account's wallets)
    onramps.ts        # get_my_properties_being_added, get_adding_status (signed-in endpoint only, onramp:read)
    own-wallet.ts     # On the signed-in endpoint, fills wallet arguments from the account (omitted or "me"; portfolio:read); public reads otherwise unchanged
    inputs.ts         # zod pieces shared by the tools' input schemas (property reference, image size)
  knowledge/
    index.ts          # typed, validated loader for generated/index.json (committed)
    search.ts         # BM25 retrieval with Fabrica synonyms and compound-term normalization
    facts.ts          # wording red lines the tests check the top passages against
    documents.ts      # whole documents reassembled from the index, for resources
  resources/
    knowledge.ts      # fabrica://docs, fabrica://help, fabrica://legal, fabrica://property/{tokenId}/trust-agreement, fabrica://network
  # scripts/build-knowledge.mjs builds the index; scripts/knowledge-diff.mjs and
  # .github/workflows/refresh-knowledge.yml open the daily refresh pull request
  clients/
    graphql.ts        # Fabrica GraphQL API client (primary data source)
    account.ts        # personal reads with the connected user's token (never cached, never on anonymous calls)
    rpc.ts            # Ethereum JSON-RPC reads (transaction, receipt, block number) for get_transaction_status
    generated/        # operations.ts: one result type per gql document, from scripts/codegen.mjs (committed; npm run codegen)
    subgraph.ts       # Lending pool subgraph client (dynamic pool discovery)
    cache.ts          # Short-TTL read cache with in-flight de-duplication (TtlCache)
    budgets.ts        # Read budgets (loan page budget, MAX_LOANS)
  data/
    us-counties.ts    # Regrid county paths to FIPS and name (copied from soil-app's /go table)
  sign-requests/
    store.ts          # SignRequestStore: Vercel KV / Upstash REST (or an in-process map locally), HMAC-checked records, 15-minute expiry
    http.ts           # GET /sign-requests/{id} and POST /sign-requests/{id}/result for the Soil sign page
  vercel-sign-requests.ts # Vercel function entry for /sign-requests
  well-known.ts       # /.well-known/mcp.json, /.well-known/mcp/server-card.json, /.well-known/ai-catalog.json (card read from a live in-process server)
  vercel-well-known.ts # Vercel function entry for /.well-known
  lifecycle.ts        # propertyStage(): unclaimed, being_added, replaced, live, removal_in_progress, removed, retired
  fees.ts             # fees assessed on a token, by currency address
  types/
    index.ts          # Names for the generated operation types (TokenListItem, TokenDetail, WalletModel...) plus the REST and subgraph shapes
  __tests__/          # vitest test suite

Read the full file on GitHub · 298 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago Changed · +1 lines · +96 tokens per session 0f1c4a815a43
  2. 5d ago Changed · +15 lines · +787 tokens per session d3345780eacc
  3. 6d ago Changed · +6 lines · +213 tokens per session c07fdfd8fb75
  4. 9d ago Changed · +47 tokens per session 3ff3dd0ad6dc
  5. 12d ago Changed · +45 lines · +1,860 tokens per session ce6ea231bdfa
  6. 13d ago First seen · 231 lines · 3,200 tokens per session scan A ad47afdd4b8f

Subscribe to this mod's changes

fabrica-mcp AGENTS.md is an instructions file published in the GitHub repository fabrica-land/fabrica-mcp (0 stars, last pushed 2d ago), licensed MIT. It adds 6,203 tokens to every session, about $0.0248 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-16.

Related

Other instructions, from other repositories

vscode buildNext.instructions.md

Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).

microsoft/vscode · 9,715 tokens

next.js AGENTS.md

AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.

vercel/next.js · 7,461 tokens

vscode oss-third-party-notices.instructions.md

Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, cache eligibility and rollout and applying the notice (cutover).

microsoft/vscode · 5,262 tokens

langchain AGENTS.md

AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.

langchain-ai/langchain · 4,680 tokens

vscode copilot-instructions.md

Copilot instructions for microsoft/vscode, covering vs code copilot instructions, project overview, root folders, core architecture (src/ folder) and built-in extensions (extensions/ folder).

microsoft/vscode · 2,750 tokens

deno copilot-instructions.md

Copilot instructions for denoland/deno, covering deno development guide for github copilot, network access, high level overview, key directories and key files to understand first.

denoland/deno · 3,077 tokens