MARS v2 · proc2 postgres · dbname=mars, schema mars

Data Overview & Consumer Guide

Everything you need to consume MARS v2 as a read-only client: how to connect, the 65+ tables and views grouped by purpose, and the three consumer-contract filter rules you must honor. Fresh as of 2026-07-15.

5 canonical entity types 4 deal verticals (funding · M&A · credit · real estate) ~1.42M persons · ~281K companies ~2.45M articles · ~354K Form D filings Read via argos_readonly

Connection

Read-only access via argos_readonly

Every downstream consumer connects as argos_readonly. This user has SELECT on every mars.* table and view — no writes, no schema changes. All queries hit the same primary on proc2; there is no separate replica today.

host=172.31.91.195   # proc2 VPC IP (SSH alias 'proc2')
port=5432
dbname=mars
user=argos_readonly
password=trust               # auth mode: trust (VPC-locked in pg_hba.conf)
sslmode=disable            # inside the VPC — no TLS needed

psycopg2 shorthand:
psycopg2.connect("host=172.31.91.195 dbname=mars user=argos_readonly")

Command-line:
psql -h 172.31.91.195 -U argos_readonly -d mars

From proc2 itself (if you're on the same box, which most argos code is): use host=localhost. Same user + password.

Access is VPC-scoped. pg_hba.conf allows argos_readonly only from 172.31.0.0/16. If you get no pg_hba.conf entry for host, you're outside the VPC — SSH-tunnel through proc2 or run your code on a VPC-resident host.

What NOT to use: the kee superuser is read+write and admin-only. Never bake user=kee into a downstream consumer — you'll silently accumulate the ability to write.

Consumer contract — three filters you must honor

The three rules that separate correct from polluted results

Every MCP tool and consumer view in production filters on these. Skip any of them and your query surfaces the ~2–5% of extraction garbage the substrate tolerates (in a quarantined column) but never expects to reach a user.

RuleWhat to writeWhy
1. integrity_tier WHERE integrity_tier IN ('verified','vouched') Consumer-facing rows only. 'warn' is quarantined extraction garbage — valuation-misread-as-raise, self-mergers, sentinel-name leaks, sub-$10K unit-drop bugs. Applies to funding_deals_v2, merger_deals_v2, real_estate_deals_v2, private_credit_deals_v2, form_d_filings_v2.
2. amount_usd_converted SELECT amount_usd_converted — never bare amount_usd The Grok extractor is inconsistent about FX on non-USD rows. amount_usd is provenance (what the article said, in the currency the article used). amount_usd_converted is USD-normalized via fx_rates_v2. Cross-currency comparability requires the converted column. Same applies to deal_value_usd_converted on the merger side.
3. is_placeholder WHERE NOT is_placeholder on investors_v2 Some rows are extracted generic nouns from article prose ("Family offices", "Endowments and foundations", "Insurance companies") that clustered in the investors table as if they were real firms. They're flagged, not deleted, so provenance queries still work — but consumer rankings must filter them out. Also filter persons_v2 on primary_name IS NOT NULL AND TRIM(primary_name) <> '' (36,744 EDGAR firm-name pollution rows had names NULL'd 2026-07-14).

When in doubt, look at how mars_funding_search / mars_funding_history / mars_investor_portfolio (in argos-mcp-server) build their SQL. They honor all three rules by default and expose opt-out flags.

Relationship map

The five canonical entity types plus the layer-2 deal canonicals across four verticals. Everything joins through the two hubs: companies_v2 and persons_v2.

officers · work_history · bios · form_144 deal_investors · positions · credit merger_advisors → deals education mergers (acq ↔ target) Form D · 13D/G · Form 144 (issuers) companies_v2 280,546 · the hub persons_v2 1,417,504 investors_v2 100,110 advisors_v2 5,863 institutions_v2 9,041 funding_deals_v2 78,698 merger_deals_v2 36,487 private_credit_deals_v2 90,807 real_estate_deals_v2 19,187 SEC subs. Form D · 144 · 13D/G
Entities (5 canonical) Deal-vertical canonicals Junction tables Articles & bios SEC substrate Identity / audit Reference maps Vertical-owned tags

Table catalog — grouped by purpose, with row counts + FKs

Row counts are live planner estimates (2026-07-15). Vertical-owned tags (reit credit bios insider prospects) mark tables/rows that another team writes to under their own methodology_version prefix. Consumers still read everything through argos_readonly.