Docs Buy $PATENT
Introduction
Getting started

Introduction

Patentpad takes any Solana coin and writes it up the way a patent office would. You paste a contract address, the desk reads the coin's public market data, files its claims with a source on every line, searches for prior art, raises objections and drafts three new coins on the same shape.

What it is

A coin is a shape: a name, a ticker, a picture, a crowd, a pool, a way of talking. Most new coins borrow a shape from a coin that already worked. Patentpad makes that borrowing explicit. It shows what the original actually has on record, what it is missing, who used the ticker first, and what a better copy would fix.

Everything runs in your browser against public DexScreener endpoints. There is no server of ours in the middle, no account and no wallet connection. The same address gives the same filing until the market data changes.

What it is not

  • Not a legal patent. Nothing here is registered anywhere, and the “office” is a page.
  • Not a launcher. Patentpad drafts derivatives and issues a certificate you can copy. It never creates a token or asks you to sign anything.
  • Not a rating. An objection says a fact is missing or unusual. It does not say what a coin is worth.

Glossary

TermMeaning on Patentpad
FilingThe full write-up of one coin: specification, claims, prior art, objections and verdict.
Application numberPP- plus six digits, derived from the contract address. Same address, same number.
SpecificationThe raw facts the desk read: name, picture, websites, socials, pools, trades.
ClaimOne sourced line in claims.json. Five of them are written as numbered patent claims.
Prior artOther Solana coins with exactly the same ticker, sorted by the date of their first pool.
Office actionThe list of objections raised against the filing, §101 to §110.
DerivativeA new coin drafted on the source's shape that answers one objection.
Letters patentThe certificate issued for a derivative after it clears the name guard.
Launch curveA coin that still trades on the curve it was launched on and has no pool of its own yet.
Getting started

Quick start

Four steps from an address to a certificate. No sign-in, nothing to install.

1. File the coin

Open the filing desk, paste a contract address into Paste a contract address_ and press File. A link works too: anything that ends in the address, such as a DexScreener or Solscan token page, is trimmed down to the address.

You can also open a filing straight from a link. The desk reads ?ca= from the address bar:

URL
https://thepatentpad.vercel.app/?ca=DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263

2. Read the claims

The rail moves through 01 Received → 02 Searched → 03 Claimed → 04 Examined. On the left is the specification as read, on the right claims.json as filed. Red tags show the source of each line. Struck-through values are unknown, not zero.

3. Check the office action

Under the claims you get every objection the data supports and a stamp: Granted, Allowed or Final rejection. See Office action for the thresholds.

4. Draft and issue

Pick one of the three derivatives, edit any field in the inspector, then press Issue letters patent. If the name sits too close to the source, the desk refuses it. Otherwise you get a certificate with a seal and a Copy the filing button.

NotePress Re-draft to get three different derivatives for the same coin. The drafts are seeded by the address and a counter, so re-drafting is repeatable.
The filing

Specification

The specification is what the desk read before it wrote anything. It is the left column of every filing.

Fields

FieldRead fromNotes
Token namebaseToken.nameTrimmed. Taken from the pool with the most liquidity.
SymbolbaseToken.symbolA leading $ is removed, so $WIF and WIF are the same ticker.
Drawing on fileinfo.imageUrlShown in greyscale, like a patent figure. Missing image raises §109.
Websitesinfo.websites[]The first one becomes the website claim.
Socialsinfo.socials[]twitter and telegram are claimed separately.
Poolsevery pairSorted by liquidity. The first four are listed, the rest counted.
Trades, 24htxns.h24Buys and sells summed across all pools.

Which pools count

Only pairs where chainId is solana and the base token is exactly the pasted address. Pairs where the coin is the quote side are ignored, so a coin is never credited with someone else's liquidity.

Sources list

Under the specification the desk lists every source it tried and whether it answered: DexScreener tokens, DexScreener search, and the X bio, which is always not read because X does not allow it from a browser.

The filing

claims.json

The right column of a filing. Numbered lines in four groups, each with a red tag that names its source.

Groups

GroupLines
// bibliographicTitle, ticker, application number, first pool, venue, market cap, liquidity, 24h volume and price change, website, X, Telegram.
// abstractOne paragraph built from the same numbers. Not a claim, so it has no number.
// claimsFive numbered claims written in patent language. See below.
// prior artThe ticker search: how many coins share the ticker, how many came first, and up to four citations.

The five claims

  1. Name and ticker. The coin as a name plus a ticker of N letters.
  2. Liquidity. Total liquidity, the number of pools and the largest venue. On a launch curve the claim says so instead.
  3. Turnover. Daily volume divided by liquidity. Above 8× the examiner reads churn, under 0.2× a quiet room, in between a working market.
  4. Presence. Website, X account and Telegram group, or the explicit claim that there are none.
  5. Direction. The share of buys in the last 24 hours of trades.

Source tags

TagMeaning
[dexscreener]Read directly from /latest/dex/tokens/<CA>.
[dexscreener search]Read from /latest/dex/search?q=<ticker>.
[derived]Calculated by the desk from read values, such as the application number or the turnover ratio.
Unknown is not zeroA missing website is filed as unknown and struck through. The desk never fills a gap with a guess.
The filing

Prior art

Before a ticker can be claimed, the desk checks who used it first.

How the search works

  1. The desk calls DexScreener search with the coin's ticker.
  2. It keeps Solana results whose ticker matches exactly, ignoring case and a leading $.
  3. It drops the coin itself and any duplicate addresses.
  4. It compares each result's first pool date with the filed coin's first pool date.

Results are sorted oldest first. Up to four are cited as cited · earlier or cited · later, with name, date and market cap.

Anticipated

If at least one coin with the same ticker pooled earlier, the filing gets objection §110 · Anticipated by prior art. Large coins get it too. Being famous does not make a ticker new.

WarningPrior art lists other people's coins exactly as DexScreener names them. Names are not filtered, and a citation is not a recommendation.
The filing

Office action

Objections are raised from the data alone. Each one has a fixed rule, a short explanation and a fix.

The ten objections

CodeObjectionRaised when
§ 101No website on fileinfo.websites is empty
§ 102No X account on fileNo social with type: "twitter"
§ 103Still on the launch curveLiquidity is 0 and the venue is a launch curve
§ 103Thin liquidityTotal liquidity under $20,000
§ 104Volume N× liquidity24h volume above 8× liquidity
§ 105A quiet market24h volume under 0.05× liquidity
§ 106Too new to prove staying powerFirst pool less than 2 days old
§ 107Down N% in a day24h price change below −30%
§ 108Sellers outnumber buyersMore than 40 trades and sells above 1.4× buys
§ 109No drawing on fileNo info.imageUrl
§ 110Anticipated by prior artA coin with the same ticker pooled earlier

Verdict

ObjectionsStampWhat it means
0Granted · no objectionsClean file. Derivatives are still drafted.
1–3Allowed · with N objectionsThe shape holds. Each derivative answers one objection.
4 or moreFinal rejectionToo many holes to grant. The shape is still drafted from, with the holes closed.
NoteThe stamp describes a coin's public record at the moment of filing. File the same address next week and the verdict can change.
Derivatives

Derivatives

Three new coins on the source's shape. Same crowd, same joke, new name, and one thing the original lacks.

How names are drafted

The desk reads the source's name and ticker for a theme and picks subjects from that theme's list. A dog coin gets otters, herons and badgers. An AI coin gets clerks, notaries and couriers. Anything else gets workshop objects. Each subject is paired with an office word:

Office wordMakesCadence
Deskone sourced noteevery day
Pressone printed sheetevery launch
Officeone stamped filingevery week
Worksone finished objectevery Sunday
Bureauone official noticeevery morning
Clubone members' listevery month
Hallone public readingevery Friday
Mintone numbered editionevery 1,000 holders

The ticker is the subject plus the first letter of the office word when the subject is five letters or shorter, otherwise the first five letters of the subject: Heron Works → HERONW, Bellows Bureau → BELLO.

What each one fixes

Derivative one answers the first objection, two the second, three the third. A coin with fewer than three objections gets improvements instead, shown as Adds: rather than Fixes:.

Seeds and re-drafting

Drafting is seeded by a hash of the contract address plus roll × 7919. Re-draft adds one to the roll. The same coin and the same roll always give the same three drafts, so a link to a filing shows everyone the same derivatives.

Editing in the inspector

Name, ticker, makes, cadence and story can all be edited. The tree updates as you type. The name guard runs again when you press Issue letters patent, so edits cannot sneak the source's name back in.

Derivatives

Name guard

A derivative can borrow the shape, never the name.

The rule

A name or ticker is refused when any of these is true, compared with both the source's name and its ticker, ignoring case:

CheckRefused whenExample against Bonk
SameIdenticalBONK
Within 2 letter editsLevenshtein distance ≤ 2Bink (1), Bonky (1), Monk (1)
Contains the sourceThe source appears inside the nameBonk Desk, SUPERBONK

Reading the matrix

On the desk the guard draws the full edit-distance table. Rows are your name, columns are the source. Each cell is the cheapest way to turn one prefix into the other with single-letter inserts, deletes and swaps. The blue path traces the cheapest route and the bottom-right cell is the final distance. Names are compared up to 14 letters.

import { guard } from "https://thepatentpad.vercel.app/lib/patentpad.js";

guard("Bink", "Bonk");
// { ok: false, distance: 1, same: false, near: true, contains: false }

guard("Heron Works", "Bonk").ok;
// true
Derivatives

Letters patent

The certificate the desk issues for a derivative that clears the guard.

What is on it

  • Number. PP- plus seven digits, a hash of the derivative's name, ticker and the source address. The same draft always gets the same number.
  • Date. Today, in UTC.
  • Grant. The derivative's name and ticker, the source it was drawn from and the condition it has to keep.
  • Record. The source ticker, the objection it answers, and how much prior art was on file.
  • Seal. Red, round, entirely decorative.

Copy the filing

Copy the filing puts a plain-text version on your clipboard, ready to paste into a post or a description:

Clipboard
Letters Patent PP-9774483
Heron Works ($HERONW)
Shape of $Bonk (DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263)
Makes: one finished object about Bonk-shaped coins, with one drawing, kept forever, every Sunday
I am the heron that read the Bonk file twice. ...
Filed at Patentpad
WarningA certificate is a draft on paper. It does not create a token, reserve a ticker or register anything on chain.
Developers

JavaScript module

The filing desk's rules, published as one ES module with no dependencies. Import it straight from the site.

Install

<script type="module">
  import { examine, derive } from "https://thepatentpad.vercel.app/lib/patentpad.js";
  const filing = await examine("DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263");
  console.log(filing.verdict, derive(filing));
</script>
# Node cannot import from https, so save a local copy first
curl -o patentpad.mjs https://thepatentpad.vercel.app/lib/patentpad.js

// file.mjs
import { examine } from "./patentpad.mjs";
const f = await examine(process.argv[2]);
console.log(f.application, f.verdict, f.objections.map(o => o.code));
# The two public endpoints the module reads
curl https://api.dexscreener.com/latest/dex/tokens/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263
curl "https://api.dexscreener.com/latest/dex/search?q=Bonk"

Exports

ExportReturnsNotes
examine(ca, opts?)Promise<Filing>Reads both endpoints and writes the filing. opts.fetch and opts.timeout (ms, default 12000) are optional.
derive(filing, roll?)Derivative[3]Synchronous. roll defaults to 0.
guard(name, source){ ok, distance, same, near, contains }The name guard for one pair.
distance(a, b)numberLevenshtein distance, case-insensitive.
matrix(a, b)number[][]The full edit-distance table the desk draws.
parseAddress(input)string | nullAccepts a bare address or a link ending in one.
isMint(v)booleanBase58, 32 to 44 characters.
lettersNo(d, filing)stringThe certificate number for a derivative.
VERSION"1.0.0"

Example: file and draft

import { examine, derive, guard, lettersNo } from "https://thepatentpad.vercel.app/lib/patentpad.js";

const filing = await examine("https://dexscreener.com/solana/7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr");
console.log(filing.application, filing.verdict);          // "PP-…", "GRANTED" | "ALLOWED" | "FINAL_REJECTION"

for (const d of derive(filing, 1)) {
  const g = guard(d.name, filing.name);
  console.log(d.ticker, d.name, g.ok ? lettersNo(d, filing) : "refused");
}
NoteThe module and the filing desk share the same rules, thresholds and seeds. A filing made in code matches the one on the page for the same address and roll.
Developers

Try it

These blocks import ../lib/patentpad.js and run it right here, against live data.

examine() + derive()

$BONK $WIF $POPCAT $FARTCOIN
Press Run. The module reads DexScreener from your browser.

guard()

Developers

Data format

The shape of the object examine() returns. Numbers are plain numbers in US dollars, times are Unix milliseconds, unknowns are null.

Filing

Filing
{
  application: "PP-630166",
  address: "DezXAZ8z…B263",
  name: "Bonk", ticker: "Bonk",
  specification: {
    image: "https://…" | null,
    websites: ["https://www.bonkcoin.com"],
    socials: [{ type: "twitter", url: "…" }],
    pools: [{ dex: "orca", pair: "…", liquidityUsd: 308302 }],
    trades24h: { buys: 19970, sells: 22316 }
  },
  claims: {
    firstPool: 1671980424000, ageDays: 1403.2, venue: "orca", pools: 30,
    marketCap: 269060000, liquidityUsd: 1230000, onCurve: false,
    volume24h: 1370000, priceChange24h: -2.94, turnover: 1.12,
    website: "…", x: "…", telegram: "…"
  },
  priorArt: { searched: true, sameTicker: 4, earlier: 0, cited: [PriorArt] },
  objections: [{ code: "§ 109", title: "…", fix: "…" }],
  verdict: "GRANTED" | "ALLOWED" | "FINAL_REJECTION",
  sources: { tokens: "dexscreener", search: "dexscreener" | null }
}

PriorArt

FieldTypeMeaning
addressstringThe other coin's contract address.
namestringAs DexScreener lists it.
firstPoolnumber | nullWhen its first pool was created.
marketCapnumber | nullMarket cap, or FDV when market cap is missing.
earlierbooleanTrue if it pooled before the filed coin.

Derivative

FieldTypeMeaning
namestringSubject plus office word, e.g. Heron Works.
tickerstringUppercase, 5–6 letters.
makesstringWhat it produces and what it keeps.
cadencestringHow often.
answersstringThe objection code it was drafted against.
fixes / addsstring | nullOne of the two is set: fixes for a real objection, adds when the source had none.
Developers

Errors and limits

What can go wrong, what the desk says, and what the module throws.

Error codes

CodeThe desk saysCause
BAD_ADDRESSThat does not look like a Solana contract address.Not base58, or not 32–44 characters after trimming a link.
NOT_TRADINGNo market lists this address yet.DexScreener has no Solana pair with this coin as the base token.
REGISTER_DOWNThe register did not answer.The tokens request failed, was rate limited or took longer than the timeout.

The module throws a FilingError with .code set to one of the above. A failed search does not throw: the filing is written with priorArt.searched = false and the desk shows the search as no answer.

try {
  await examine("hello");
} catch (e) {
  console.log(e.code);    // "BAD_ADDRESS"
}

Limits

  • Rate limits. DexScreener limits how many public requests one visitor can make per minute. Each filing makes two. If you file many coins in a row, wait a minute when REGISTER_DOWN appears.
  • Search depth. DexScreener search returns a limited page of results, so very common tickers can have more prior art than the desk can see.
  • Peak price. Not available from these endpoints, so the filing never claims an all-time high.
  • X bios. Never read. X does not allow it from a browser.
Token and more

$PATENT

The filing desk's own coin. It is listed here so nobody has to search for it, and searching for it would raise §110 anyway.

Contract address

Soon

What it has to do with the desk

Nothing on the desk is gated by the coin. Every filing, derivative and certificate works the same with or without it. $PATENT is the shape this office filed for itself.

NoteThe only real address is the one shown above and on the front page. Any other $PATENT is prior art.
Token and more

FAQ

No. It is written like one because a patent is the most precise way anyone has found to describe what a thing is and who had it first. Nothing is registered anywhere.

Do I need a wallet?

No. The desk never asks to connect a wallet and never asks you to sign anything.

Where does the data go?

Nowhere. Your browser asks DexScreener directly. Patentpad has no server that sees the address you paste.

Why did my coin get the same derivatives as yesterday?

Drafts are seeded by the address, so they are stable by design. Press Re-draft for another set.

My coin just launched and the desk says nothing is listed.

DexScreener lists a coin once it has a pair it can see. Give it a few minutes after launch and file again.

A number on the filing looks wrong.

The desk copies what DexScreener reports at that moment and sums it across pools. If DexScreener changes, the filing changes. The red tag tells you exactly where to check.

Token and more

Changelog

1.0.0 · 2026-10-24

  • Documentation and the public module lib/patentpad.js, with the same rules as the desk.
  • Coins still on a launch curve are filed as such instead of as zero liquidity.
  • A leading $ in a ticker is ignored when filing and when searching prior art.
  • Coins with no objections get derivatives that add something instead of fixing a problem they do not have.

0.9.0 · 2026-10-24

  • The filing desk opens: specification, claims.json, prior art, office action, derivatives, letters patent and the name guard.