← Back to main page
Quantora logo uantora
GitHub
Docs sections

OVERVIEW

What is Quantora?

Quantora is a fee-aware routing framework for swaps on Solana and other ecosystems. It compares multiple venues, simulates net outputs after all costs and returns the route where the user keeps the most of what they swap.

Instead of wiring each venue manually, you integrate a single SDK and gain a unified interface to Jupiter, Orca, Raydium, Meteora-style venues and your own connectors.

Core mission

Give every swap a fair route by default.

Quantora is built for bots, wallets, super-apps and routing backends that care about real execution quality, not just the headline rate shown to the user.

Why Quantora exists

Without a routing layer you typically:

  • hardcode one venue per pair or per region;
  • ignore trading fees, gas fees and price impact in comparisons;
  • cannot explain to users why a specific venue was chosen.

Quantora solves this by providing a normalized quote model and a routing engine which always chooses the maximum net output.

Getting started: installation

Install the SDK:

npm install quantora

# or

yarn add quantora

Quantora is ESM-only and targets Node 18+ or any bundler that supports ES modules.

Quick start

import Quantora from 'quantora';

const best = await Quantora.getBestRoute({
  inputMint: 'So11111111111111111111111111111111111111112',     // SOL
  outputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
  amountUi: 1,
  slippageBps: 50
});

console.log(best);

Use this pattern inside bots, web backends or internal tools to always fetch the best venue for a given swap.

Core concepts

QuoteParams

Describes what the user wants to swap.

type QuoteParams = {
  inputMint: string;
  outputMint: string;
  amountUi: number;
  slippageBps?: number;
  connectors?: Array<{
    id: string;
    fn: (params: QuoteParams) => Promise<QuoteResult | null>;
  }>;
};

QuoteResult

Normalized response from a venue.

type QuoteResult = {
  venue: string;
  inMint: string;
  outMint: string;
  inAmountUi: number;
  outAmountUi: number;
  priceImpactPct: number | null;
  raw: any;
  connectorId?: string;
};

outAmountUi is the key field used for ranking.

Routing logic

On each request Quantora:

  1. Calls all configured connectors in parallel.
  2. Normalizes their responses into QuoteResult.
  3. Filters out failed / null quotes.
  4. Sorts by outAmountUi in descending order.

The first route in this sorted list is the best route for the user from a net output perspective.

User guide: using Quantora-powered apps

Many apps will show Quantora just as a small label like “Powered by Quantora” near the swap button. You don’t have to configure anything — you use the app as usual, but every swap is checked against multiple venues in the background.

As an everyday user you mainly interact with:

  • the routing screen,
  • the fee breakdown,
  • and optional “Best route” toggle.

Using the routing screen

A typical Quantora-powered screen has three main pieces:

  1. “You pay” — the token and amount you send.
  2. “You receive” — the token and amount you get after all fees.
  3. Route details — which venue is used and why it’s the best.

If the app shows several venues, Quantora will highlight the best one. You can still choose another venue manually if you prefer a specific brand or liquidity source.

Understanding fees as a user

When a route is selected, the app can show a small panel with a breakdown similar to:

  • Service fee — fee taken by the venue or your app.
  • Network fee — blockchain transaction cost (gas).
  • Price impact / slippage — how much the price moves because of your trade size.

Quantora compares venues by the final amount you receive after all of these are applied. So “best route” always means “highest amount in your wallet”, not just “prettiest rate”.

Security & privacy for users

Quantora itself does not hold custody of funds. You still connect your wallet to the app you trust, sign transactions as usual, and your private keys never leave your wallet.

A Quantora-powered app may log anonymous routing statistics such as:

  • which venues were selected,
  • average fee savings,
  • which tokens are most popular.

These stats help teams improve routes over time, but they do not require any personal identity or seed phrase information.

SDK reference: public API

import Quantora, {
  scanVenues,
  sortRoutes,
  getBestFromList,
  getBestRoute
} from 'quantora';

scanVenues(params)

Promise<QuoteResult[]>

Runs all connectors and returns every available route.

getBestRoute(params)

Promise<QuoteResult | null>

High-level helper that returns only the best route.

sortRoutes(routes)

QuoteResult[] → QuoteResult[]

Sorts routes by outAmountUi descending.

getBestFromList(routes)

QuoteResult[] → QuoteResult | null

Extracts a single best route from an existing array.

Examples

Node basic

import Quantora from 'quantora';

const params = {
  inputMint: 'So11111111111111111111111111111111111111112',
  outputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
  amountUi: 1,
  slippageBps: 50
};

const routes = await Quantora.scanVenues(params);
const best   = Quantora.getBestFromList(routes);

console.log(routes);
console.log(best);

Using in a bot

async function handleSwapCommand({ fromMint, toMint, amount }) {
  const best = await Quantora.getBestRoute({
    inputMint: fromMint,
    outputMint: toMint,
    amountUi: amount,
    slippageBps: 75
  });

  if (!best) {
    return 'No route found right now, try again.';
  }

  return \`Best venue: \${best.venue}, you receive ~\${best.outAmountUi}\`;
}

Connectors

Connectors live under src/connectors/ and implement the same shape:

export async function getQuote(params: QuoteParams): Promise<QuoteResult | null> { ... }

Jupiter

Primary real data source for quotes.

Orca

Simulated venue based on Jupiter output and custom fee profile.

Raydium

Alternative AMM-style venue used for comparisons.

Meteora

Additional venue with different simulated slippage.

Deployment & infrastructure

Recommended setup

  • Node 18+ runtime (or Deno/Bun with ESM support).
  • Small caching layer for quotes (3–5 seconds TTL).
  • Centralized logging for connector failures.

For most bots and wallets Quantora can run in the same process as your API without extra infrastructure.

Tokenomics (draft design)

Quantora can work without a token at all. This section describes a possible token design if the project evolves into a public network.

  • Utility: pay for analytics / premium routing profiles.
  • Staking: align connectors and operators by staking to venues.
  • Rewards: share part of fee savings with integrators.

Exact parameters (supply, emissions, schedules) are intentionally not fixed yet and can be adjusted based on real usage.

Governance & decision making

If a token and DAO are introduced, governance could decide on:

  • which venues are allowed or blocked by default;
  • how fee savings are split between users, apps and protocol;
  • roadmap priorities (new chains, new connectors, new analytics).

Until then, Quantora stays a focused product with decisions made by the core contributors, keeping upgrades fast and opinionated.

Roadmap

Phase 1 — Core routing

Solid connectors, stable quote model, SDK for bots and web apps, reference UI (the demo you already built).

Phase 2 — Deep analytics

Fee savings dashboards, historical route storage, export for desks and funds, more advanced policy engine.

Phase 3 — Cross-chain + token

Multi-chain routing, optional tokenized incentives and governance if there is enough real demand.

FAQ & troubleshooting

Why do I get no routes for some pairs?

Either connectors do not support this pair yet, or minimum amount thresholds are not met. Try a different pair or bigger amount and check connector logs.

Can I force a specific venue?

Yes. You can pass a custom connectors array in QuoteParams and include only the venues you want to be queried.

Is Quantora a DEX?

No. Quantora is a routing and analytics layer. It does not hold custody of funds and does not execute swaps directly — connectors talk to venues.