Which card fits — before the agent pays
Declare · Enforce · Optimize
Validate checks the declaration. Rank applies it to a transaction. To integrate, read llms.txt.
Banks don't do what we do. Cards can't do what we can.
Not a bank. Not an issuer. Not a lender.
An agent approaches pay or book. It declares which cards it may use and under what limits. We check the declaration, then — for partners — rank which eligible card (if any) fits this moment. Multi-issuer. Non-custodial. The money never passes through us.
For a deeper read: a weigh station for agents that spend — not a toll, and not a fine booth. Agent runtimes are the highway; they move the work. We sit beside them with the rulebook: which cards, which limits, which categories, when a human must approve. Eligible? It rolls with the card that fits. Not eligible? A clear no, with a reason. We never touch the freight and we never touch the money.
.fafa agent card standard.Validate (free, public) checks that a portfolio declaration is well-formed. Rank (partner, keyed) recommends which card to use for a specific transaction.
Free live pilot. Run Rank on real transactions for up to 60 days. No card needed to start.
We ask for a named technical contact and your feedback while you build. After 60 days, pick a plan, or your keys go back to test-only. Plans start at $299 per month, with 10,000 ranks included.
Want to start today? A test key takes one email. It lasts 30 days, never bills, and allows 6 requests per minute. Same Rank, same response shape.
To start, email team@platinumcard.ai with your company, what your agent buys, and the person we should work with. Help guide what we build.
Public validation stores nothing and returns a verdict. POST a portfolio to check that the declaration is well-formed. Limits in the example must be numbers; this call checks that, and does not evaluate a payment.
curl -X POST https://validate.platinumcard.ai \
-H 'content-type: application/json' \
-d '{
"version": "0.1.1",
"cards": [
{
"id": "amex-plat",
"network": "amex",
"product_tier": "platinum",
"status": "active",
"constraints": {
"per_transaction_limit": 1200,
"allowed_mccs": ["3000-3299", "4511", "5812"]
}
},
{
"id": "chase-reserve",
"network": "visa",
"product_tier": "infinite",
"status": "active",
"constraints": {
"per_transaction_limit": 2000
}
}
]
}'
Returns {"valid": true, "card_count": 2, ...} or {"valid": false, "errors": [...], ...}. The response shape is unstable and versioned 0.1.1. Every response carries the disclaimer above. Declarations containing secret-like fields (card numbers, API keys, bank details) are rejected immediately, not stored.
See the full portfolio schema or read llms.txt for integration guidance.
A portfolio describes cards the way software should — as data. Tier and network are plain enumerated values, and every network is treated alike.
network: visa | mastercard | amex | discover | other product_tier: platinum | gold | infinite | signature | other
"Platinum" has been a generic industry tier descriptor since the American Express v. Visa / First USA litigation settled in 1996–97. This project uses it in exactly that sense — a product-tier value alongside gold, infinite and signature — and not as a reference to any issuer's product.