Patina
Server Details
Check how many years of verifiable history a person has behind accounts they already own.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- ramakrishnanhulk20/Patina
- GitHub Stars
- 1
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool targets a distinct operation: boolean gating, full score lookup by username, privacy-preserving handle resolution, and cryptographic attestation verification. There is minor overlap between get_patina_score and resolve_identity since both return score information, but their input types and privacy behaviors are clearly differentiated.
All tool names follow a consistent verb_noun snake_case pattern: check_threshold, get_patina_score, resolve_identity, verify_attestation. The verbs clearly indicate the action and the objects are specific and distinct.
Four tools is a well-scoped set for a specialized identity/tenure verification server. Each tool covers a distinct need without redundancy, and the count feels complete rather than thin or padded.
The tool surface covers the core workflows: threshold decisions, full score retrieval, external handle lookup, and offline attestation verification. Minor gaps exist—such as no way to fetch a fresh attestation via resolve_identity—but the described limitations are intentional and clearly documented, so agents can work around them.
Available Tools
4 toolscheck_thresholdCheck a Patina trust barARead-onlyIdempotentInspect
Decide whether somebody clears a trust bar, as a plain true or false. Give a Patina username plus min_score, min_years, or both. At least one is required. Returns pass, plus a one-sentence reason written to be quoted straight back to a user. This is the right tool for gating decisions: 'has this person been verifiably around for at least five years', 'is this account above 70'. Patina scores 0-100 for how much provable history an account holder has, not for how popular or how real-time-verified they are. 80+ (Deeply worn in) means a long, multi-year record corroborated across independent platforms. 60-79 (Well established) is a solid multi-year record. 40-59 (Some real history) is genuine but shorter or thinner. 20-39 (Thin, but genuine so far) is an early account with a little history. Under 20 (Not much to go on yet) looks freshly created, or has almost nothing connected. The inputs, heaviest first: Age (30, full marks at 12 years), Continuity (25, how many separate months the person was actually present for), Corroboration (15, independent sources agreeing on the date), Vouches (12, WHEN other people connected to them rather than how many), Depth (10, things made) and Breadth (8, independent accounts). Follower counts are deliberately worth almost nothing, because they are purchasable. Patina proves TENURE: that whoever holds these accounts has a long, corroborated, verifiable history. It does NOT prove uniqueness or liveness, and it is not a proof-of-personhood check. If you need 'exactly one human, present right now', Patina is the wrong signal and you should say so. When no profile exists, pass is false and found is false: treat that as UNKNOWN rather than as a failed check, because most people have never heard of Patina and absence proves nothing about them.
Inputs: username (required), min_score, min_years.
get_patina_scoreGet Patina scoreARead-onlyIdempotentInspect
Look up a person's full Patina score by their Patina username. Patina reads the age and activity of accounts somebody already owns (YouTube, GitHub, LinkedIn, Spotify and others) through the Vana data portability protocol, and turns that into a 0-100 score plus a signed attestation. Patina scores 0-100 for how much provable history an account holder has, not for how popular or how real-time-verified they are. 80+ (Deeply worn in) means a long, multi-year record corroborated across independent platforms. 60-79 (Well established) is a solid multi-year record. 40-59 (Some real history) is genuine but shorter or thinner. 20-39 (Thin, but genuine so far) is an early account with a little history. Under 20 (Not much to go on yet) looks freshly created, or has almost nothing connected. The inputs, heaviest first: Age (30, full marks at 12 years), Continuity (25, how many separate months the person was actually present for), Corroboration (15, independent sources agreeing on the date), Vouches (12, WHEN other people connected to them rather than how many), Depth (10, things made) and Breadth (8, independent accounts). Follower counts are deliberately worth almost nothing, because they are purchasable. Patina proves TENURE: that whoever holds these accounts has a long, corroborated, verifiable history. It does NOT prove uniqueness or liveness, and it is not a proof-of-personhood check. If you need 'exactly one human, present right now', Patina is the wrong signal and you should say so. Call this when you want the whole picture: the score, the per-component breakdown, how many years of history are provable, which platforms corroborate each other, and an attestation you can verify offline. If you only need a yes or no about whether somebody clears a bar, call check_threshold instead. An unknown username comes back with found: false, which is a normal answer meaning no public Patina profile exists under that name. It is not an error, and it is not evidence against the person.
Inputs: username (required).
resolve_identityResolve a platform handle to a Patina scoreARead-onlyIdempotentInspect
Find out whether the person behind a platform handle has a Patina score, WITHOUT learning who they are. Supported sources: github, linkedin. Accepts a bare handle, an @handle, or a full profile URL. Returns only three things: whether a public Patina profile is linked to that account, its score, and its years of history. It deliberately never returns the Patina username, and never returns which other platforms that person has connected, because doing so would turn this into a cross-platform de-anonymisation tool. Do not ask it for those; it cannot provide them. Other platforms (youtube, spotify, amazon, uber) are NOT supported here, because for those Patina stores an internal platform id rather than a handle a person could type. Those platforms still count fully toward the score itself; only this lookup is limited. Instagram lookups are paused, because Patina cannot yet prove an Instagram account belongs to the person who connected it. Email addresses are refused outright. Patina scores 0-100 for how much provable history an account holder has, not for how popular or how real-time-verified they are. 80+ (Deeply worn in) means a long, multi-year record corroborated across independent platforms. 60-79 (Well established) is a solid multi-year record. 40-59 (Some real history) is genuine but shorter or thinner. 20-39 (Thin, but genuine so far) is an early account with a little history. Under 20 (Not much to go on yet) looks freshly created, or has almost nothing connected. The inputs, heaviest first: Age (30, full marks at 12 years), Continuity (25, how many separate months the person was actually present for), Corroboration (15, independent sources agreeing on the date), Vouches (12, WHEN other people connected to them rather than how many), Depth (10, things made) and Breadth (8, independent accounts). Follower counts are deliberately worth almost nothing, because they are purchasable.
Inputs: handle (required), source (required).
verify_attestationVerify a Patina attestationARead-onlyIdempotentInspect
Check whether a Patina attestation really was signed by Patina. Every Patina score ships with an EIP-191 signed message; hand this tool that message and signature and it returns the address it recovered, the address Patina publishes, and whether the two match. IMPORTANT, AND THE WHOLE POINT: you do not need this tool, and where you can, you should not use it. A signature is worth something precisely because ANYONE can check it offline, with no call to Patina, using viem's recoverMessageAddress or ethers' verifyMessage. If you ask Patina's own server whether Patina's own signature is good, you are trusting Patina again and the signature has bought you nothing. That is why this returns the recovered address rather than a bare yes: compare it yourself. Attestations also EXPIRE: the message carries an expiresAt line inside the signed bytes, and a genuine signature past that date means the score was true when issued and should be fetched again, not that anybody forged anything.
Inputs: message (required), signature (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Verify a persona's DID-signed identity and query value-based judgment — advisory only, no actions.
Look up verified people on SelfBadge and tell them apart from namesakes.
Onboard any applicant with one link: ID, credit, bank and income, court and police records.
Real-time B2B counterparty KYB, SSL, DNSSEC & DMARC/SPF trust verifier ($1 USDC).
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables identity verification by checking name, address, and date of birth against national databases.46MIT
- FlicenseNot gradedqualityBmaintenanceEnables auditing influencer brand safety and multi-year controversy history through Traackr.8-
- AlicenseNot gradedqualityBmaintenanceEnables users to generate auditable due-diligence dossiers for crypto creators by resolving identifiers, checking a curated rebrand registry, running onchain checks, and grounding cultural fingerprints and possible connections in fresh Qloo data with cited evidence.MIT
- AlicenseNot gradedqualityDmaintenanceEnriches user data by generating and providing social media profile links (Instagram, Facebook, Twitter, LinkedIn) based on user information like name and birth date.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.