← Directory

Jupiter

Seal for Jupiter: onchain band C. Not claimed by the project.
Transparency score · worst track · not a security audit

jup.ag · DeFi · Solana · data checked 2026-10-20 13:15 (Stockholm)

Contact route: not found

Not claimed Automated from public data

Automated score · 2026-10-20 · method v0.2.6 · How this score is made
Produced automatically from public data on 2026-10-20 (method v0.2.6). It shows how much of this project’s control structure, code and contact information could be checked from public sources. No person selected or adjusted it, and nothing a project does or pays changes it. It is not a security audit.

Beta: the method is still being calibrated, so this automated score may contain errors. Send a correction.

Transparency score, not a security audit. Scores are generated automatically from public data (Solana RPC, OtterSec build registry, GitHub, project websites). Projects are not involved unless a page is marked “Claimed”, and claiming never changes a score. Nothing here says a project is safe. How scores are made → · Corrections, right of reply & opt-out →

C
Onchain track · onchain v0.2.6
65/100 · Band C
coverage 90 % · 18 of 20 decided
2 unknown (−3 pts) · 0 not read (no points lost, lowers coverage) · 3 not built yet (excluded)

Something wrong on this page? Dispute a check or send a correction · opt-out. We re-run the check and correct the page.

What was checked: addresses & sources

Website jup.ag · GitHub jup-ag/jupiter-amm-implementation. Addresses are used only if they appear verbatim on an official project page.

Onchain track

Contract control weight 3018.8/30
  • ◐ Partial

    Upgrade authority JUP6Lk…

    Upgrade authority is CvQZZ23qYDWF2RUpxYJ8y9K4skmuvYEEjH7fK58jtipQ: Squads v3 multisig 7ZyDFzet… with threshold 4 of 7 voting member(s) (7 total) (established by re-deriving the vault address from the multisig; found in authority history tx 49y7tQt1…). Member independence not established. Address taken from official source: https://developers.jup.ag/docs/api-reference/swap/v1/program-id-to-label
    developers.jup.ag ↗Explorer ↗Explorer ↗Explorer ↗ checked 2026-10-20 sha256 dc1f5552a698… sha256 254009b9f42a…
    What would show up as met
    • If the program is final, revoke the upgrade authority. It then reads as immutable.
    • Otherwise move the authority to a multisig or a DAO. For a multisig, use a threshold of at least 2, add a time lock, and do not keep a separate config authority that can change members without a vote.
    • Publish the multisig or DAO address on your own website so the page and the on-chain account can be tied together.

    How we check: We read the program’s upgrade authority on Solana (public RPC) and recognise Squads, Serum-style multisigs and SPL Governance accounts. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ✕ Not met

    Build matches source (OtterSec registry) JUP6Lk…

    OtterSec registry answered: no build was ever submitted for this program (no submission).
    OtterSec registry ↗OtterSec registry ↗ checked 2026-10-20 sha256 d12a460cf74c… sha256 4f53cda18c2b…
    What would show up as met
    • Build the program reproducibly from your public source with the Solana verifiable-build tooling (solana-verify).
    • Submit the build to the registry so that it appears in the OtterSec registry (verify.osec.io). The check reads that registry; it does not rebuild anything itself.

    How we check: We ask the OtterSec build registry (verify.osec.io, a third party) whether the deployed program matches a build from the public source. We report what the registry says; we do not rebuild or vouch for anything ourselves. Any registry entry that matches the program’s current on-chain hash counts, not only the registry’s default entry (method 0.2.5). This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ✓ Met

    Mint authority JUPyiw…

    Revoked. Address taken from official source: https://jup.ag/
    jup.ag ↗Explorer ↗RPC call (getAccountInfo) checked 2026-10-20 sha256 b42ff8b3e596…
  • ✓ Met

    Freeze authority JUPyiw…

    Revoked. Address taken from official source: https://jup.ag/
    jup.ag ↗Explorer ↗RPC call (getAccountInfo) checked 2026-10-20 sha256 b42ff8b3e596…
Audits weight 1515/15
  • ✓ Met

    Linked audit

    Document reachable; hosted by the project (own GitHub org or domain) and names an auditor (ottersec, neodyme, sec3), but the program ID is not in the page text (PDF text not parsed). Date vs. last upgrade not checked. Quality not assessed. Counted as Met (method 0.2.4): audits by at least 2 distinct firms (cantina, neodyme, offside, ottersec, sec3) were found at official sources of the project; the program ID is not required in that case. Quality, scope and date still not assessed.
    developers.jup.ag ↗ checked 2026-10-20 sha256 0f7d11c6d915…
Code openness weight 159.4/15
  • ✓ Met

    Public repository

    jup-ag/jupiter-amm-implementation public, created 2022-11-05, 4 contributor(s) (count only).
    GitHub ↗api.github.com ↗api.github.com ↗ checked 2026-10-20 sha256 3778027b9b9b… sha256 b15b85ec4611…
  • ✕ Not met

    Licence

    SPDX: none detected.
    GitHub ↗api.github.com ↗api.github.com ↗ checked 2026-10-20 sha256 3778027b9b9b… sha256 b15b85ec4611…
    What would show up as met
    • Add a standard licence file (for example Apache-2.0 or MIT) that GitHub recognises.
    • Custom or source-available terms are shown as partial: we do not judge them.

    How we check: We read the licence field GitHub detects. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ◐ Partial

    Activity last 90 days

    Last push 2026-04-14 (189 d ago).
    GitHub ↗api.github.com ↗api.github.com ↗ checked 2026-10-20 sha256 3778027b9b9b… sha256 b15b85ec4611…
    What would show up as met
    • A push within the last 90 days reads as met, 91 to 365 days as partial. Nothing to configure: this follows normal maintenance of the public repository.

    How we check: We read the date of the last push on GitHub. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ✓ Met

    On-chain program source public

    1/1 own program ID(s) found in public source: JUP6Lk… in https://github.com/jup-ag/jupiter-amm-implementation. Repos searched (shallow clone, text search for the program ID): https://github.com/jup-ag/jupiter-amm-implementation. Does not prove the deployed binary matches (see the build check).
    GitHub ↗ checked 2026-10-20 sha256 d55eb7c01ff6…
Onchain history weight 105/10
  • ◐ Partial

    Last deploy JUP6Lk…

    Last deploy 2026-10-08 (12 d ago). Upgraded within the last 30 days.
    Explorer ↗RPC call (getAccountInfo)RPC call (getSignaturesForAddress)RPC call (getTransaction) checked 2026-10-20 sha256 dc1f5552a698… sha256 254009b9f42a…
    What would show up as met
    • Nothing to configure: a deploy more than 30 days ago reads as met, a more recent deploy as partial because the code changed recently.

    How we check: We read the last deploy time on Solana. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ○ Not built

    Program age / upgrade count JUP6Lk…

    Full history scan (first deploy, upgrades in 30 d, authority changes) needs an indexer (e.g. Helius); not available on public RPC.
    Explorer ↗RPC call (getAccountInfo)RPC call (getSignaturesForAddress)RPC call (getTransaction) checked 2026-10-20 sha256 dc1f5552a698… sha256 254009b9f42a…
Team & contact weight 15 · 1 unknown5/15
  • ✕ Not met

    Security contact (security.txt)

    No valid security.txt at /.well-known/security.txt or /security.txt (404).
    jup.ag ↗ checked 2026-10-20 sha256 d1f4f3c828d6…
    What would show up as met
    • Publish a text file at https://your-domain/.well-known/security.txt (or /security.txt) with a Contact: line, for example Contact: mailto:security@your-domain.
    • RFC 9116 also asks for an Expires: line. We look only for Contact:, but add Expires: too so the file stays correct.

    How we check: We fetch the two standard locations over HTTPS. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ? Unknown

    Bug bounty programme linked

    No bug-bounty link found on homepage (raw + rendered), sitemap or security.txt. Not checked deeper (docs sites, Immunefi search) — counted as unknown, not as missing. Also checked: Immunefi public list: no active programme matched; no on-chain security.txt in JUP6Lk….
    jup.ag ↗jup.ag ↗jup.ag ↗jup.ag ↗ checked 2026-10-20 sha256 b2acc10837db… sha256 d1f4f3c828d6…
    What would show up as met
    • Link your bug bounty (for example an Immunefi, HackerOne or Cantina page, or a /bug-bounty page of your own) from the homepage, the sitemap or your security.txt.
    • “Unknown” here means we found no link. It does not mean you have no programme.

    How we check: We look at the homepage links (also as rendered in a browser), sitemap.xml and security.txt, and at Immunefi’s public list for on-chain security.txt names. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ℹ Status only

    Claimed / not claimed

    Status only, not scored: claiming proves control of an authority, domain or GitHub organisation and never changes a score. The status is shown in the page header.
    source: calculated from the other checks checked 2026-10-20
  • ○ Not built

    Team declared (voluntary, with consent)

    Team declaration + consent flow not built — excluded.
    source: calculated from the other checks checked 2026-10-20
  • ℹ Status only

    Components declared complete by the project

    Status only, not scored (it used to be scored, which made pages that are not claimed systematically lower; removed 2026-10-15). Other programs/packages may exist that were not submitted.
    source: calculated from the other checks checked 2026-10-20
  • ✕ Not met

    Program embeds security.txt

    0/1 own program(s) embed a solana-security-txt block with contacts.
    Explorer ↗RPC call (getAccountInfo) checked 2026-10-20 sha256 4e36f973fd14…
    What would show up as met
    • Embed a security.txt block in the program with the solana-security-txt crate: name, project_url, contacts and policy. Redeploy to publish it.
    • This also tells us which programs belong to you, and which are shared programs that do not.

    How we check: We read the program account on Solana (public RPC). This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ✓ Met

    Official program address list

    JUP6Lk… published on project domain (https://developers.jup.ag/docs/api-reference/swap/v1/program-id-to-label).
    developers.jup.ag ↗ checked 2026-10-20 sha256 aab505ce076c…
Domain weight 55/5
  • ✓ Met

    HTTPS

    https://jup.ag answered HTTP 200 over TLS.
    jup.ag ↗jup.ag ↗jup.ag ↗jup.ag ↗ checked 2026-10-20 sha256 b2acc10837db… sha256 d1f4f3c828d6…
  • ✓ Met

    Security headers

    Present: HSTS, CSP, X-Content-Type-Options, X-Frame-Options. Missing: none.
    jup.ag ↗jup.ag ↗jup.ag ↗jup.ag ↗ checked 2026-10-20 sha256 b2acc10837db… sha256 d1f4f3c828d6…
  • ✓ Met

    Domain age

    Registry date unavailable (rdap.org: HTTP 404; IANA RDAP bootstrap: no RDAP server for .ag; whois: FileNotFoundError (port 43 likely blocked)). Domain demonstrably in use since at least 2021-10-13 (~1833 d), source: Wayback Machine first capture – a lower bound on age.
    web.archive.org ↗jup.ag ↗jup.ag ↗jup.ag ↗ checked 2026-10-20 sha256 b2acc10837db… sha256 d1f4f3c828d6…
  • ✓ Met

    Domain ↔ components consistency

    Linked: address JUP6Lk… published on jup.ag (https://developers.jup.ag/docs/api-reference/swap/v1/program-id-to-label); address JUPyiw… published on jup.ag (https://jup.ag/); homepage links to github.com/jup-ag; GitHub org name matches domain (weak)
    source: calculated from the other checks checked 2026-10-20

Snapshot hash of monitored fields: 161e0acd7fee01bb

AI summaries

Generated with Grok 4.7 (xAI), Claude sonnet-5-5 (Anthropic) and GPT-6.1-sol (OpenAI) via their APIs. xAI, Anthropic and OpenAI have not reviewed, approved or sponsored Recheckable. AI-generated text; models see only extracted check results, never project-supplied text or personal names. They do not affect the score. Some text on this site (summaries and reports) is AI-generated and labelled where it appears. Scores and check results come from fixed code, not from AI. Scores are produced automatically from public data and are not reviewed by hand before they are shown; cases that the automatic checks flag are held for a person.

Template summary (deterministic)

Onchain track: band C (65/100, coverage 90 %, onchain v0.2.6). Strongest: Audits, Legal documents, Domain. Weakest: Team & contact. 2 check(s) unknown (each costs 1.5 points); 0 not read (no points lost, lowers coverage); 3 not built yet (excluded).

Grok (xAI)

Placeholder — no API key configured for this model in the PoC.

Claude (Anthropic)

Placeholder — no API key configured for this model in the PoC.

GPT (OpenAI)

Placeholder — no API key configured for this model in the PoC.

Regulatory information

The project has not declared any regulated-activity types, so no rules are listed.

Law firms (free listing, alphabetical, no ranking)

  • Delphi — Stockholm, Blockchain law (self-described)
  • Gernandt & Danielsson — Stockholm, Fintech (self-described)
  • Magnusson — Stockholm, Fintech (self-described)
  • Mannheimer Swartling — Stockholm, Fintech (own practice page to be confirmed) (self-described)
  • Setterwalls — Stockholm, Fintech (self-described)
  • Vinge — Stockholm, MiCA (own practice page to be confirmed) (self-described)

Recheckable has no financial relationship with the listed firms and receives no fee per contact. Paid placements, if ever introduced, are marked “Ad” and never shown next to low scores.

Score history

Automated score at each published review, newest on the right. The line steps at the date of a review; between reviews the score is unchanged.

Score historyTransparency score by published review for Jupiter. onchain track: 2026-10-15 64/100, 2026-10-19 65/100, 2026-10-20 65/10002550751002026-10-152026-10-20

◆ 2026-10-19: the scoring method changed from v0.2.5 to v0.2.6. A score change at that point can come from the method and not from the project.

Data table
ReviewTrackScoreGradeCoverageMethod
2026-10-15onchain64/100C85 %v0.2.5
2026-10-19onchain65/100C90 %v0.2.6
2026-10-20onchain65/100C90 %v0.2.6

Check changes between reviews

  • 2026-10-19 · onchain Activity last 90 days: Met → Partial method changed GitHub ↗
  • 2026-10-19 · onchain On-chain program source public: Unknown → Met method changed GitHub ↗

History

  1. 2026-10-20 13:15
    Forced fresh run (same result; fresh evidence snapshots): onchain C (65, coverage 90 %)
  2. 2026-10-19 13:02
    Nightly re-run: onchain C (65, coverage 90 %)
  3. 2026-10-18 08:10
    Method 0.2.4: audits by 2+ distinct firms at official sources count as Met; an unreadable token mint is Not read. Re-scored from the stored checks, no new data.
  4. 2026-10-15 10:16
    Method 0.2.1: the scope declaration and claim status are status-only (never scored). Re-scored from the stored checks, no new fetch. Before: C 55 (cov 81 %); after: C 57 (cov 85 %).
  5. 2026-10-15 07:19
    Initial review (operator-run): onchain C (55, coverage 81 %)

Project's own statements and reply

No reply published. Claimed projects can add their own statements and a reply next to any check — dispute a check or reply. These statements are shown beside the automated score and never change it.
Does your team control the upgrade authority, official domain or GitHub organisation of this project? Claim this page (free, about a minute; it never changes a score).

For project owners: badge

Recheckable: onchain band C, Active

Status: Active. The badge says “no changes since review”, never “safe”.

Badges are for claimed projects. The embed code is available after the page has been claimed (free, about a minute; claiming never changes the score). Claim this page

Re-checks are rate-limited (once per 10 minutes). Restoring a grey badge requires a full review.