PreReason

com.prereasonPublished by prereason.comOfficial publisherv0.9.1Updated Oct 29, 2026

Financial market context for AI agents, with listed companies' results: www.prereason.com/agents.md

VerifiedStreamable HTTPWeb executableFinanceData & Analytics

Overview

AI-generated overview

PreReason gives an AI assistant pre-reasoned financial market briefings — macro, rates, bonds, FX, commodities, listed companies and Bitcoin — with trends…

What you can do
  • List available briefings and metrics, and search them by question or company
  • Read a full briefing with trends, confidence scores, percentile ranks and, in deeper briefings, a regime label
  • Read a single metric with signal interpretation, 7/30/90-day trend, momentum and percentile ranking
  • Read a listed company briefing by ticker, CIK, securities code, ISIN, LEI or B3 ticker, part by part (numbers, valuation, segments, quality, guidance)
  • Track change events since the last call, and dated company filings and federal agency or Fed publications
  • Check API health, version and account tier
When to use it
Useful when a question depends on current market or macro context: Treasury yields, the Fed balance sheet, M2, auctions, oil and gas inventories, what a listed company reported, or where Bitcoin stands against stocks, volatility and the dollar. It suits assistants that should answer from prepared analysis rather than raw series.
Requirements
Either the remote endpoint or the local npm bridge, which needs Node.js 18+ and has no dependencies. Catalogue tools work without a key; get_context, get_metric, get_news and get_changes need a PreReason account and API key, supplied as PREREASON_API_KEY, an Authorization bearer header, or the X-API-Key header. The bridge can obtain a key through a browser approval link and saves it under ~/.prereason. get_changes needs a Basic or higher plan.
Before you install
The API key is a live credential (pr_live_ prefix) saved to a local credentials file; treat it as a secret. The bridge's approval link creates a key in your account only when you click Approve. Briefings are paid tiers, so some tools fail without a suitable plan. The server describes markets and states it never advises; it should not be treated as investment advice. Data is fetched from PreReason's servers and third-party sources.

Installation

In SourceWeft

  1. Open PreReason in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.prereason%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "prereason": {
      "type": "http",
      "url": "https://api.prereason.com/api/mcp"
    }
  }
}

README

Ask your AI where Treasury yields are. On its own, it reaches for a search result or a raw series and works out the rest by itself. When it prereasons, one get_context call brings back the context already worked out: the 30 year yield at 5.67% on 2026-10-07, the highest reading on the US Treasury's daily par yield curve since July 2001.

[An agent asks where Treasury yields are and what the Fed last decided; get_context with briefing macro.rates answers with the 30 year and 10 year Treasury yields and 10 year breakeven inflation, PreReason's calculation, each with its 7, 30 and 90 day changes, its percentile and its date, and the Fed funds target range with its vote, from a served answer of 2026-10-16]

Why prereason?

  • The analysis, and the data behind it. Each briefing arrives with the reading done: the trend over several windows, where a value sits in its own history, a company's rank among its peers and, where read, its own guidance.
  • Every figure dated, every source named. Your agent can say when a number is from and where it came from.
  • One call, a whole briefing. A briefing gathers the series a question needs, so the turns go to the answer rather than to lookups.
  • The markets in one place, among them rates and Treasuries, the Fed, FX, commodities, macro, listed companies across several markets, and Bitcoin.
  • It describes; it never advises. Briefings say what the data shows. They never say what to buy, sell or hold.
  • Quick to set up. One block of config for Claude, Cursor, Codex or VS Code, through the npm bridge or the remote server. The catalogue tools need no key; for the rest, the bridge gives you one link to approve in your browser and the key arrives in the running session; the remote server takes your API key as a header.

What it covers

PreReason gives an AI agent market context it can reason with. Ask what a listed company reported, where Treasury yields stand or what the Federal Reserve decided, and one call returns a briefing reasoned in advance: the figures with their dates and sources, a one line reading, trend direction over several windows, confidence scores, percentile ranks and correlations, and in the deeper briefings a regime label and a plain language narrative. Briefings span asset classes and regions, among them listed companies built from each company's own reports and filings, macro and the economic calendar, interest rates and Treasury yields, bonds, currencies, commodities and energy, and Bitcoin. The set grows as markets and asset classes are added; list_briefings and list_metrics always return the current one. Each briefing carries the figures behind its readings, every figure is dated, and every briefing names its sources. It is served over MCP (a remote server and an npm bridge) and over REST, as Markdown or JSON. An AI agent starts at https://www.prereason.com/agents.md, which says how to connect, which briefings it can read and how to answer from them.

[How it connects: your agent (Claude, Cursor, Codex, VS Code) calls list_briefings, then get_context, through the npm bridge or the remote server at api.prereason.com/api/mcp; PreReason answers with the briefing, every figure dated and every source named. With no key yet, the first briefing call shows one approve link, and the key arrives in the bridge once a person clicks Approve.]

Quick Start

Option 1: Claude Desktop, no key needed

Requires Node.js 18+, and nothing else: the bridge has no dependencies.

Add this to claude_desktop_config.json and restart Claude Desktop:

json
{  "mcpServers": {    "prereason": {      "command": "npx",      "args": ["-y", "@prereason/mcp"],      "env": { "PREREASON_CLIENT": "claude-desktop" }    }  }}

The catalogue tools work at once. To connect your account, tell Claude "connect me to PreReason", or ask for any briefing: either way Claude shows one link, https://www.prereason.com/claim/PR-XXXX-XXXX. Open it, sign in or create an account, click Approve. The key arrives in the bridge on its own, is saved to ~/.prereason/credentials.json, and is never shown; ask Claude whether PreReason is connected and it names your plan. Nothing is created in your account until you click Approve, and the link is asked for when you need it, so it never runs out while Claude sits open. If your account already holds as many API keys as it allows, the answer says so instead of looping: revoke a key under Settings on prereason.com, then ask to connect again, or set PREREASON_API_KEY to a key you already have.

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Already have a key? Add it to the env block as "PREREASON_API_KEY": "pr_live_..." and the bridge never asks.

Option 2: Direct HTTP with an API key (Claude Code, Cursor, Windsurf, Codex, Gemini CLI, VS Code, scripts)

Clients that hold their own config can call the endpoint directly, with the key as a header:

bash
# Claude Codeclaude mcp add --transport http prereason https://api.prereason.com/api/mcp --header "Authorization: Bearer YOUR_API_KEY"
json
{  "mcpServers": {    "prereason": {      "type": "http",      "url": "https://api.prereason.com/api/mcp",      "headers": { "Authorization": "Bearer YOUR_API_KEY" }    }  }}

Windsurf uses serverUrl instead of url; Gemini CLI uses httpUrl; Codex uses url plus bearer_token_env_var in config.toml. No key yet? Point the client at the endpoint without a header to browse the catalogue, then create a key on the website (below) and add the header.

Option 3: Claude.ai and Claude Desktop custom connector

  1. In Claude, open Customize, then Connectors, then "+ Add", then Add custom connector.
  2. Name it PreReason and give the address https://api.prereason.com/api/mcp.
  3. Choose Sign in now, even where Claude marks No sign-in as Detected.
  4. Click Add, then Allow on the PreReason screen. No account yet? Make one there.
  5. Then, in a new chat, ask: "What are rates, liquidity and the dollar doing today?"

Claude's Free plan allows one custom connector at a time. On a Claude Team or Enterprise plan, an owner adds connectors for the organization, then each person clicks Connect.

Get an API Key

Three ways. The hosted server never hands out a key inside a session and never asks for one.

Through this bridge. Run it with no key set: when you ask your assistant to connect PreReason, or an answer needs a key, it asks PreReason for access on your behalf and shows one approve_url, in its log and in the answer. Open it, sign in or create your account, click Approve, and the bridge saves the key, attached to your account and named Agent: <client_name>.

From code, for an agent with no browser. POST https://api.prereason.com/api/agent/claims (no auth), show the human the approve_url, then poll GET https://api.prereason.com/api/agent/claims/{claim_code} with Authorization: Bearer <claim_token> until status is approved. Docs: prereason.com/docs#agent-access.

On the website. Sign up at prereason.com/signup, then Dashboard > Settings > API Keys. Keys start with pr_live_.

MCP Tools

ToolAuthDescription
list_briefingsOpenList all pre-reasoned market briefings with tier requirements; with search, only those that match a question, and the covered companies it names, each with the entity to pass
list_metricsOpenList every available metric across the bitcoin, macro, calculated and eth categories
get_healthOpenAPI health check, version, account tier
get_contextRequiredFetch a pre-reasoned market briefing (markdown or JSON); for a company briefing, entity names the company and block reads one of its parts (see Company Briefings)
get_metricRequiredFetch a single metric with trend/signal/percentile
get_changesRequired (Basic and above)What changed since your last call: change events after a cursor, no values
get_newsRequiredDated records of what companies filed and what federal agencies and the Federal Reserve published, newest first, each with its source, its date or time and a link; it states records, not reasons

The npm bridge and the Claude Desktop extension add one tool of their own, connect_account, which the bridge answers itself and the remote server does not offer: with no key yet it returns the one link to approve, and once approved it says the account is connected and on which plan. It never shows a key and never asks for one.

Market Briefings

BriefingDescription
macro.snapshotFed balance, M2, treasury yields, dollar strength, net liquidity
macro.liquidityLiquidity indicators with momentum analysis
macro.auctionsTreasury auction demand: who bought at the latest auction of each note and bond maturity, against that maturity's own prior 12 auctions, with the auctions announced and scheduled next
macro.calendarThe scheduled dates ahead of the main US releases, the FOMC and ECB decisions, the FOMC minutes and the Treasury coupon auctions ahead (the week's, or the next one), each from its publisher's own calendar, with the latest US jobs report, CPI and weekly jobless claims as published and what each release revised
macro.ratesTreasury par yield curve at every maturity, 1M to 30Y, breakeven inflation, 5y5y forward, Germany 10Y
bonds.contextWho holds US Treasuries, in short: foreign investors' net purchases (Treasury's TIC), primary dealers' 13 week change in positions (the New York Fed) and speculators' 10 year note futures position (the CFTC), each against its own history, with the 10 year yield and three bond funds
bonds.fullWho holds US Treasuries: foreign investors, primary dealers and speculators, each against its own history, with the Fed's own Treasury holdings, debt held by the public, the largest foreign holders, what would change each reading and the next reports
fx.liquidityEUR/USD, USD/CNY and dollar strength, with net liquidity and Bitcoin correlations
commodities.goldThe gold fund (GLD) and gold's own monthly price from the World Bank, with the 10 year real rate, the dollar fund, the CFTC's COMEX gold positioning and the miners' fund, each with its measured relationship to GLD
commodities.silverThe silver fund (SLV) and silver's own monthly price from the World Bank, with the CFTC's COMEX silver positioning and the gold, dollar, copper and silver miners' funds and the 10 year real rate, each with its measured relationship to SLV
commodities.copperA copper futures fund (CPER) and copper's own monthly price from the World Bank, with the CFTC's COMEX copper positioning and the dollar and gold funds, each with its measured relationship to CPER
commodities.wheatA wheat futures fund (WEAT) and US soft red winter wheat's own monthly price from the World Bank, with the CFTC's CBOT wheat positioning, the dollar fund and the WTI spot price, each with its measured relationship to WEAT
commodities.energy-basketUS oil and gas stocks against the five year norm from EIA's weekly reports, with WTI, Brent and Henry Hub spot prices, the Brent to WTI spread and WTI realised volatility
commodities.oil-producersCrude oil beside its covered USA producers: the energy basket's state, WTI and Brent spot prices from EIA, then each integrated major, producer and refiner and two oil field service companies, with its share price, its 1, 3 and 12 month changes beside WTI and the measured 90 day correlation with WTI
commodities.gold-minersThe gold fund (GLD, a share price, not the gold price) and gold's own monthly price from the World Bank beside the covered USA gold and silver miners and royalty and streaming companies, each with its share price, its 1, 3 and 12 month changes beside GLD and the measured 90 day correlation with GLD
commodities.grains-agribusinessThe wheat futures fund (WEAT, not the wheat price) and US soft red winter wheat's own monthly price from the World Bank beside the covered USA grain merchandisers and processors, seed and crop nutrient companies, farm equipment makers and farmland REITs, each with its share price, its 1, 3 and 12 month changes beside WEAT and the measured 90 day correlation with WEAT
cross.correlationsBTC correlation matrix vs macro indicators
cross.breadthBreadth across SPY, QQQ and IWM, with Bitcoin's correlation to each
cross.regimeRegime classification (expansion, contraction, transition) with USDT dominance
cross.ai-computeAI compute and power chain: US grid demand against a year earlier, miners' AI hosting agreements from SEC filings, hosting against mining per megawatt
eth.contextWhere Ether stands: its price and global 24 hour volume from CoinGecko, its distance from the 200 day average, Lido's stETH APR, the CFTC's CME Ether positioning and OKX's funding rate
btc.quick-checkMinimal fast context: BTC + Net Liquidity + correlation
btc.contextBTC + liquidity + hash ribbon + difficulty + momentum
btc.pulsePrice, 24h change, Bitcoin dominance
btc.grid-stressEpoch pace and difficulty adjustment forecast
btc.momentum200D MA support/resistance with 7d/30d/90d momentum and percentile rankings
btc.on-chainHash rate, difficulty, transactions, active addresses
btc.miner-survivalHashprice thermometer with miner stress scoring
btc.etf-flowsSpot BTC ETF net daily flows, aggregate AUM, and per-issuer breakdown
btc.fullFull Bitcoin analysis: macro overlay, momentum, percentiles, correlations and narrative
btc.factorsMulti-factor attribution for BTC price movements
btc.energyProduction cost model with gas input pressure
btc.treasuryCorporate Bitcoin treasury intelligence from SEC filings

list_briefings always returns the current set, and prereason.com/briefings shows each one. Which plan reads which briefing is on the pricing page.

Company Briefings

equities.company reads one listed company per call, composed from its own reports (filings with its home market's regulator; for India, its own published results), each figure dated and sourced. Which plan reads which market's company briefings is on the pricing page. It describes; it never says what to do.

[An agent asks what NVIDIA reported, how it ranks among its peers and what its guidance is; get_context with briefing equities.company and entity NVDA answers with quarterly revenue, operating margin, free cash flow and the company's own revenue guidance range, each with its date, its rank or its stored history, from NVIDIA's filings on SEC EDGAR]
  • Name the company with entity: the ticker or CIK of a company filing with the SEC (NVDA), a Japanese securities code (7203), a Korean stock code (005930), an Indian company's ISIN (INE018A01030), the LEI of a company filing in the UK or of a European company (2138002P5RNKC5W2JZ46) or a Brazilian company's B3 ticker (PETR4).
  • Not sure of the code? Call list_briefings with search, for example "Toyota earnings": the answer lists the matching covered companies, each with the entity to pass.
  • Read one part with block, one of the parts below, or leave it out for the whole briefing. A part counts one call; the whole briefing counts one for each part it carries. Parts are served for today only.
get_context(briefing="equities.company", entity="7203")get_context(briefing="equities.company", entity="NVDA", block="valuation")
Part (block)What it holds
headerWho the company is, the indexes that hold it with their dates, and a line on its peers
what_changedIts recent filings
situationsFlagged conditions, each with its severity
against_guidanceThe company's own stated expectations next to what it reported (read only from results filed with the SEC on Form 8-K)
numbersIncome statement, balance sheet and cash flow history, with growth and the company's own history
segmentsBusiness, product and geography splits
valuationThe close, market capitalisation, price to earnings, book and sales, enterprise value multiples and free cash flow yield, each with its value a year ago and its own history (closes from StockAnalysis.com)
capital_structureDebt, liquidity and maturities
qualityEarnings quality and liquidity, including the accrual ratio, cash conversion, current, quick and cash ratios, working capital, asset turnover, and days sales, inventory and payables outstanding
profitabilityReturns and cash generation, including free cash flow, its margin and per share, EBITDA, return on equity, assets and invested capital, the payout ratio and the effective tax rate
newsFiled news

Example Prompts

Once connected, try prompts like:

  • "Connect me to PreReason"
  • "Show me the macro snapshot"
  • "Where are Treasury yields, and what did the Fed last decide?"
  • "What did NVIDIA report, and how does it rank among its peers?"
  • "How is Bitcoin moving with stocks and the dollar?"
  • "List available briefings"

Troubleshooting

"Server disconnected" error

  • Ensure Node.js 18+ is installed: node --version
  • Check your API key starts with pr_live_
  • Fully quit Claude Desktop (system tray > Quit) and reopen

Tools not appearing

  • Restart Claude Desktop after editing config
  • Verify JSON syntax: node -e "JSON.parse(require('fs').readFileSync('path/to/config','utf8'))"

Windows: "'C:\Program' is not recognized"

If you still see this error, ensure you're using the env block (not --header args) as shown in Quick Start above. If the issue persists, install globally and use node:

  1. Run: npm install -g @prereason/mcp
  2. Use this config (replace YOUR_USER with your Windows username):
json
{  "mcpServers": {    "prereason": {      "command": "node",      "args": [        "C:\\Users\\YOUR_USER\\AppData\\Roaming\\npm\\node_modules\\@prereason\\mcp\\bin\\cli.js"      ],      "env": {        "PREREASON_API_KEY": "YOUR_API_KEY"      }    }  }}

Auth errors on get_context / get_metric

  • list_briefings, list_metrics, and get_health work without a key
  • get_context and get_metric require a valid API key, and get_changes a key on the Basic or Pro plan
  • Get a key at prereason.com/signup

Other MCP Clients

If your client supports remote HTTP servers, use Quick Start Option 2 above. The stdio bridge package is only needed for clients that require stdio transport (e.g. Claude Desktop).

CLI Usage

bash
# No key: the bridge asks for access and prints one link to approvenpx @prereason/mcp
# Ask for access now, save the key, exit (useful before a first run)npx @prereason/mcp --login
# Forget the saved keynpx @prereason/mcp --logout
# Use a key from the environment (never asks)PREREASON_API_KEY=pr_live_... npx @prereason/mcp
# Name the app the bridge runs in, so your dashboard names the connectionPREREASON_CLIENT=claude-desktop npx @prereason/mcp
# --header (backward compatible), a custom credentials file, a custom endpointnpx @prereason/mcp --header "Authorization:Bearer YOUR_API_KEY"npx @prereason/mcp --credentials-file /path/to/credentials.jsonPREREASON_URL=https://custom.endpoint/mcp npx @prereason/mcp
npx @prereason/mcp --help

Key precedence: PREREASON_API_KEY, then --header, then the credentials file (~/.prereason/credentials.json, or PREREASON_CREDENTIALS_FILE, or --credentials-file), then the claim flow. The file holds the key and which claim issued it, never a claim token. On macOS and Linux the directory is created 0700 and the file 0600; Windows has no mode bits, so the file relies on your profile directory's permissions like every other credential store there.

Claude Desktop extension (.mcpb)

mcpb/manifest.json describes the same bridge as a single click Claude Desktop extension, key optional. To build the bundle: npm install --omit=dev, then npx @anthropic-ai/mcpb pack . from the package directory, and install the resulting .mcpb by double clicking it. Submission to the Claude directory goes through the desktop extension form and is a publisher decision.

No dependencies

The bridge ships its own transports and installs nothing. npm ls on it is one line, npx @prereason/mcp fetches one 23 KB tarball and starts, and the code a security review has to read is the code in this repository.

It used to depend on @modelcontextprotocol/sdk for two classes, a stdio transport and a Streamable HTTP client. That pulled in 91 packages and 25 MB on disk, nearly all of it the SDK server half: Express, Hono, CORS, a rate limiter, an OAuth client and a schema validator, none of which a relay ever calls. lib/stdio.js and lib/streamable-http.js replace the two classes the bridge used, keep their framing and their callbacks, and are covered by the suite under test/.

Links

Privacy Policy

See prereason.com/privacy for data handling practices.

License

MIT

Source: README.md at commit b33b023

Tools

7

list_briefings

List Briefings

List the pre-reasoned market briefings, each with its tier requirement, and the company briefing (equities.company), one listed company per call. Covers macro, rates, bonds, FX, commodities, listed companies, cross-asset and Bitcoin. Call it first to find the briefing id for a question, then read that briefing with get_context. Pass search with the question's words to get only the briefings that match, best first; when it names a company, the answer also lists the matching covered companies, each with the entity to pass to get_context. For one data series rather than a briefing, use list_metrics. Every covered company, by market, is listed at GET https://api.prereason.com/api/companies, with no key needed. No authentication required.

Parameterstiersearch

list_metrics

List Metrics

List the individual metrics, among them the Fed balance sheet, M2 supply, Treasury yields, net liquidity, the dollar, cross-asset indices (SPY, QQQ, VXX, UUP) and Bitcoin price and hash rate. Use it to find a metric's name for get_metric; for a reasoned view across several series, use list_briefings. Filter by category or by a search word. No authentication required.

Parameterssearchcategory

get_health

Health Check

Check API health status, version, and available endpoints. Use it to confirm the server answers or to read its version; it carries no market data, so use list_briefings or list_metrics to find data. No authentication required.

Parametersverbose

get_context

Get Market Briefing

Get a pre-reasoned market briefing with trends and confidence scores, plus regime classification and a rule based note on what moved with the price in the briefings that carry them, for the requested domain (macro, rates, bonds, FX, commodities, a listed company, cross-asset or Bitcoin; the same families as the server instructions). Output is written to be read directly by reasoning agents, not parsed for individual values. Find the briefing id with list_briefings first, which also gives each briefing's plan; for one data series rather than a briefing, use get_metric. Needs a PreReason account: a signed in connection or an API key.

Parametersdateblockentityformathistorybriefingrequired

get_metric

Get Metric Analysis

Get a single metric with pre-reasoned signal interpretation, trend analysis (7d/30d/90d), confidence score with factor breakdown, momentum, and percentile ranking. Name the metric; list_metrics lists them and searches them by word. Needs a PreReason account: a signed in connection or an API key. Returns analyzed context (signal, trend direction, momentum, percentile among every stored daily close), not raw values. The signal is bullish, bearish or neutral on crypto series, and above-trend, below-trend or at-trend on every other metric, where the value sits against its trend, so a high yield reads above-trend. Use it to read where a metric stands against its trend and its own history, not just its number; for a reasoned view across several series, use get_context with a briefing. Every plan reads each metric's latest reading. Pro and above read every metric in full; on other plans, a metric outside the plan returns its latest reading only.

Parametersformatmetricrequired

get_changes

Get Changes

What changed since your last call: the change events PreReason records. A live briefing's state label changing, a tracked release becoming known, and, for the companies you name, figures stored for a newer period, an event driven situation turning on, and filed news. Each event says what changed, when it happened, when PreReason knew it and where to read it next (the briefing or metric to fetch with get_context or get_metric); it carries no value. For the filed and official records themselves, by date, use get_news. Pass the next_cursor of your previous call to read only what is new; without one, the last 24 hours. Needs a PreReason account with basic access or above: a signed in connection or an API key.

Parameterslimittypescursorcompanies

get_news

Get News

Dated records of what companies filed and what federal agencies and the Federal Reserve published, newest first, each with its source, its date or time and a link. Name a company in `about` for its filings alone; `kind` narrows to filed or official records; `since` and `until`, or `as_of`, set the window. Every answer names the sources it read. It states records, not reasons. For what changed since your last call, use get_changes; this tool reads the records themselves, by date. Needs a PreReason account: a signed in connection or an API key.

Parameterskindaboutas_oflimitsinceuntil

Version history

4
  1. v0.9.1LatestOct 29, 2026
  2. v0.9.0Oct 14, 2026
  3. v0.8.0Sep 22, 2026
  4. v0.7.2Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts