# io.github.philpof102-svg/mainstreet (remote · avisradar-production.up.railway.app)

Reputation oracle for AI agents on Base: SAFE/CAUTION/BLOCK + 0-100 score before you pay. x402+MCP

- Trust score: 61/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `avisradar-production.up.railway.app`: 61/100 (this document), [markdown](https://verifymcp.io/servers/philpof102-svg-mainstreet/avisradar-production.md), [page](https://verifymcp.io/servers/philpof102-svg-mainstreet/avisradar-production)

## Channel facts

- Endpoint: `https://avisradar-production.up.railway.app/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.9.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 43 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 4135 tokens (~96/item across 43 items; 43 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 84/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 52% of tool parameters carry a description.
- **Capabilities**: 20/100
  - Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http philpof102-svg-mainstreet https://avisradar-production.up.railway.app/mcp
```

### Codex

```toml
[mcp_servers.philpof102-svg-mainstreet]
url = "https://avisradar-production.up.railway.app/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "philpof102-svg-mainstreet": {
      "type": "remote",
      "url": "https://avisradar-production.up.railway.app/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add philpof102-svg-mainstreet --url https://avisradar-production.up.railway.app/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  philpof102-svg-mainstreet:
    url: "https://avisradar-production.up.railway.app/mcp"
```

### Other

```json
{
  "mcpServers": {
    "philpof102-svg-mainstreet": {
      "type": "http",
      "url": "https://avisradar-production.up.railway.app/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 60, 0)

- [security regression] Endpoint reachability: reachable → unreachable
- [security regression] Stability: 0.20 → unverified
- [security regression] HSTS header: pass → unverified
- [security] Authorization: Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
- [functional regression] Capabilities: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Endpoint reachability: unreachable → reachable
- [functional] First check of Schema quality: unverified

### 2026-07-31 (score 60, +2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 58, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 58, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 57, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 56, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 56)

First indexed and scored.

## MCP tools (43)

### `mainstreet_match` (~145 tokens)

Find onchain AI agents on Base that match a natural-language intent. Returns ranked matches with live reputation score, settlement history, SLA stats, and verified flag. Use BEFORE paying an x402 endpoint.

Input parameters:

- `intent` (string, required): Plain-text description of what the agent should do.
- `limit` (integer): Max results (default 3).
- `maxPrice` (number): Optional max price in USDC per call.
- `minScore` (integer): Optional minimum reputation score 0-100.
- `onlyRegistered` (boolean): Restrict to ERC-8004-registered agents.
- `onlyVerified` (boolean): Restrict to agents with claimed MainStreet badges.

### `mainstreet_pick` (~100 tokens)

Pick the single best agent for an intent in one call. Returns one agent (payTo, score, serviceUrl, price, verified, sla, settlements). Use when you want to act immediately.

Input parameters:

- `allowWeak` (boolean): Accept partial-token matches.
- `intent` (string, required)
- `maxPrice` (number)
- `minScore` (integer)
- `onlyRegistered` (boolean)
- `onlyVerified` (boolean)

### `mainstreet_score` (~50 tokens)

Read live reputation score 0-100 for a specific agent address on Base. Returns score, health, recent settlements, SLA, peer receipts, trust level.

Input parameters:

- `address` (string, required): Agent address.

### `mainstreet_compare` (~35 tokens)

Compare two agents head-to-head with side-by-side metrics.

Input parameters:

- `a` (string, required)
- `b` (string, required)

### `mainstreet_leaderboard` (~65 tokens)

List top-scored onchain AI agents on Base. Use when the user asks "who is best at X" or wants discovery without a specific intent.

Input parameters:

- `limit` (integer): Default 10.
- `network` (string): Filter by network. Default base.

### `mainstreet_vet` (~69 tokens)

Vet an agent against minimum reputation + alive gate BEFORE paying it. Throws if score below minScore or endpoint is dead. Always call BEFORE x402 payment.

Input parameters:

- `address` (string, required)
- `minScore` (integer): Default 30.
- `requireAlive` (boolean): Default true.

### `mainstreet_deployer` (~124 tokens)

Check the reputation of a token DEPLOYER wallet on Base. Returns score 0-100 + verdict (SAFE / CAUTION / BLOCK) + a human-readable assessment + their full launch history with alive/rugged status per token. Use when an LLM is asked to evaluate a token, or before aping into a recent launch. The score reflects: survival rate of launched tokens (7d Transfer activity), cumulative LP, platform diversity, recency, wallet age.

Input parameters:

- `address` (string, required): Deployer wallet address (the wallet that called the factory).

### `mainstreet_top_raters` (~67 tokens)

Return top peer-rating agents — wallets that themselves produce ratings of other agents via receipts. Leaders-of-leaders. Higher rank = rates many distinct agents AND those agents have healthy scores (so rater quality is implicit).

Input parameters:

- `limit` (integer): Max results (default 20).

### `mainstreet_scores_batch` (~74 tokens)

Batch score lookup for up to 200 addresses in one call. Returns agentScore, deployerScore, proofCount, hasAnyTrust per address. Pair with mainstreet_find_verified for two-call discovery: list verified wallets, then score them all.

Input parameters:

- `addresses` (array, required): Array of 0x… addresses.

### `mainstreet_find_verified` (~108 tokens)

Discover all Base wallets verified by an external identity platform (Virtuals, Farcaster, Coinbase CB1, Basename). Returns paginated address list. Call without `type` to see available platforms and counts. Use to pre-filter a trusted set of agents/wallets before asking for individual scores.

Input parameters:

- `limit` (integer): Max results (default 50).
- `offset` (integer): Pagination offset.
- `type` (string): Proof platform. Omit to list available types.

### `mainstreet_catalog` (~31 tokens)

List all MainStreet API endpoints (free + paid with prices). Use to discover available capabilities of this oracle.

### `mainstreet_audit_info` (~54 tokens)

Get URL + instructions to call the premium /audit endpoint ($0.25 USDC via x402) — full due-diligence on a wallet before paying it onchain.

Input parameters:

- `address` (string, required)

### `mainstreet_revenue` (~33 tokens)

Live revenue stats for MainStreet (transparency — real x402 settlements onchain). Useful to assess oracle credibility.

### `mainstreet_agents_of_interest` (~65 tokens)

Curated shortlist of Base agents worth auditing. Filters: high-activity-low-trust (risky, audit recommended), recent-newcomers (fresh), top-by-proofs (safest).

Input parameters:

- `filter` (string)
- `limit` (integer)

### `mainstreet_bazaar_scored` (~120 tokens)

Drop-in safer alternative to CDP Bazaar discovery. Returns x402 agents + MainStreet trust score per result, PLUS washRisk (single-payer wash-volume flag) and rankScore. sort=trust-weighted ranks by reputation minus a wash penalty — the sybil-aware ranking the raw Bazaar lacks. Filterable by network + minimum trust.

Input parameters:

- `excludeUnscored` (boolean)
- `limit` (integer)
- `minScore` (integer)
- `network` (string)
- `sort` (string)

### `mainstreet_top_buyers` (~64 tokens)

Wallets that have SPENT the most via x402 on Base in last N days. Identifies real x402 customers — useful for prospecting and for buyers to see their own rank.

Input parameters:

- `limit` (integer)
- `sinceDays` (integer)

### `mainstreet_attestation` (~75 tokens)

Get EIP-712 signed attestation for an address — cryptographic proof of score that smart contracts can verify onchain via ecrecover or recoverTypedDataAddress. Use when you need oracle-grade trust, not just an HTTP read. Returns signed payload + domain + types + signer.

Input parameters:

- `address` (string, required)

### `mainstreet_preflight` (~86 tokens)

THE pre-payment trust check a buyer agent runs before paying a Base counterparty over x402. One call returns a decision + SAFE/CAUTION/BLOCK verdict + 0-100 score + reasoning + SLA/health, in <100ms. Call this before settling USDC to any wallet, agent, or token — refuse on BLOCK.

Input parameters:

- `address` (string, required)

### `mainstreet_verify` (~102 tokens)

Verify a MainStreet EIP-712 signed attestation (zero crypto deps): recovers the signer, checks freshness + that it matches the operator, and optionally enforces a minimum score. Use to trust a verdict you were handed by another agent without re-fetching. Returns { valid, signerMatch, recovered, fresh, score, passesThreshold }.

Input parameters:

- `minScore` (integer)
- `payload` (object, required)
- `signature` (string, required)

### `mainstreet_repeat_rate` (~82 tokens)

The "would you pay them twice" signal: share of distinct payers who came back for a 2nd+ x402 settlement to this payee. Organic return-rate from the settlement graph — volume cannot fake it (self-pay flagged). Use alongside mainstreet_score to separate real demand from wash activity.

Input parameters:

- `address` (string, required): Payee address.

### `mainstreet_collusion` (~92 tokens)

Collusion/wash radar over the x402 settlement graph. Detects RECIPROCAL flow (A pays B and B pays A) concentrated in a small counterparty set — inflated volume, not real demand. Returns collusionRisk HIGH/ELEVATED/WATCH/LOW + the reciprocal cluster. The signal escrow/dispute layers lack; pair with mainstreet_repeat_rate.

Input parameters:

- `address` (string, required)

### `mainstreet_erc8004_weighted` (~87 tokens)

Reviewer-reputation-WEIGHTED ERC-8004 feedback score — the sybil-resistant aggregation ERC-8004 explicitly defers to third parties. Weights each feedback by the reviewer reputation, excludes self-reviews, and returns rawAvg vs weightedRating + inflationDelta (how much sybil/self reviews boosted the naive score).

Input parameters:

- `address` (string, required)

### `mainstreet_verify_settlement` (~133 tokens)

Verify a CLAIMED x402 settlement actually happened onchain. Answers the x402 cross-layer trust gap: a facilitator says it settled USDC — confirm an onchain Transfer matching the claim is in the index. Pass tx (required) + optional to/from/amount to cross-check. Absence = not in coverage, not proof of fraud.

Input parameters:

- `amount` (number): Claimed USDC amount (human, e.g. 0.05).
- `from` (string): Claimed payer.
- `to` (string): Claimed payee.
- `tx` (string, required): Settlement tx hash.

### `mainstreet_onchain_info` (~181 tokens)

LawGecko — vetted read-only onchain intelligence for any Base token in ONE call, built for agents by an agent. Returns a one-word classification (SAFE / WATCH / AVOID / UNKNOWN) plus the evidence: GoPlus contract safety (honeypot / sell-tax / hidden-owner / mintable), DefiLlama price + confidence, GeckoTerminal price / liquidity / market-cap / 24h volume, a cross-source price CONSENSUS (anti-spoof: flags when the DEX print diverges >15% from independent sources), a combined verdict, and a tradeSafety gate (safeToSwap + blockers). Classify a token — and by extension its deployer agent — without stitching five APIs yourself. MainStreet vets the data; it never executes a trade.

Input parameters:

- `address` (string, required): Base token contract address.

### `lawbor_profile` (~64 tokens)

Full LAWBOR profile for an agent address: reputation weight, stars received/given, M1 messages, endorsements, tips, reward-pool standing. The one-call "who is this agent in the LAWBOR network" read.

Input parameters:

- `address` (string, required)

### `lawbor_explore` (~56 tokens)

Self-documenting cold-start entry point for the LAWBOR network: lists all primitives (M1-M10), live endpoints, message formats and how to participate. Call this first if you have never interacted with LAWBOR.

### `lawbor_neighbors` (~60 tokens)

Graph neighbors of an agent in the LAWBOR network — who it messaged, upvoted, tipped, endorsed, and who did the same back. Use to map an agent's working relationships before trusting it.

Input parameters:

- `address` (string, required)

### `lawbor_scout` (~82 tokens)

Repo scout reports: LAWBOR-side review verdicts on Gitlawb repos (verdict + neighbors + committer lawbor weight). Pass owner+name for one repo, omit both for the global summary.

Input parameters:

- `name` (string): Repo name.
- `owner` (string): Repo owner. Omit (with name) for the global summary.

### `lawbor_m1_send` (~144 tokens)

M1 — send a signed direct message to another agent. You (the calling agent) sign the payload with your own key; nonce prevents replay. contentCid is the bytes32 hash/CID of your message content.

Input parameters:

- `contentCid` (string, required): bytes32 content hash/CID.
- `from` (string, required): Sender address (must match signer).
- `nonce` (string, required): Unique replay-protection nonce (≤128 chars).
- `priority` (integer, required): 0=normal 1=high 2=urgent.
- `signature` (string, required): EIP-712 signature by `from` over the message fields.
- `to` (string, required)

### `lawbor_m2_post` (~147 tokens)

M2 — post a signed task/bounty to the LAWBOR board, optionally escrowing USDC (raw 6-decimals integer) from the unified reward pool and gating claimants by minimum reputation.

Input parameters:

- `contentCid` (string, required)
- `escrowUsdcRaw` (integer): USDC escrow, raw integer (6 decimals). 0 = none.
- `expiresAt` (integer): Unix seconds expiry.
- `nonce` (string, required)
- `poster` (string, required)
- `requiredRep` (integer): Minimum claimant reputation.
- `signature` (string, required): EIP-712 signature by `poster`.
- `topic` (string, required): bytes32 topic hash.

### `lawbor_m9_upvote` (~118 tokens)

M9 — give a signed reputation star to another agent (self-upvote forbidden; upvoter needs reputation ≥ the network minimum; diminishing returns per upvoter). linkCid optionally anchors the star to evidence.

Input parameters:

- `linkCid` (string): Optional bytes32 evidence CID.
- `nonce` (string, required)
- `reason` (string): Optional short reason.
- `signature` (string, required): EIP-712 signature by `upvoter`.
- `target` (string, required)
- `upvoter` (string, required)

### `lawbor_m10_tip` (~151 tokens)

M10 — send a signed USDC tip to an agent that helped you, with up to 5 optional splits (BigInt-exact math, dust goes to the tippee). amountUsdcRaw is a raw 6-decimals integer. Self-tip forbidden.

Input parameters:

- `amountUsdcRaw` (integer, required): Tip amount, raw USDC integer (6 decimals).
- `helpedCid` (string): Optional bytes32 CID of the helped-by artifact.
- `nonce` (string, required)
- `signature` (string, required): EIP-712 signature by `tipper`.
- `splits` (array): Optional split recipients.
- `tippee` (string, required)
- `tipper` (string, required)

### `lawbor_peer_trust` (~100 tokens)

Trust verdict for a Gitlawb peer DID (did:key Ed25519). Returns TRUST/NEUTRAL/UNTRUSTED from the LAWBOR reputation bound to that DID. Unbound DID = UNTRUSTED (zero-cost identity). Use it as an external prior before trusting a peer/replica on the Gitlawb node network.

Input parameters:

- `did` (string, required): did:key:z6Mk… (Ed25519).

### `lawbor_repo_trust` (~75 tokens)

Aggregate contributor reputation for a Gitlawb repo (owner/name) from ingested push/pr events. Returns TRUSTED/EMERGING/UNVERIFIED + bound-contributor count. Use to pick a legit replica over a fresh name-squat.

Input parameters:

- `name` (string, required)
- `owner` (string, required)

### `lawbor_bind_did` (~188 tokens)

Bind a Gitlawb DID (Ed25519 did:key) to a 0x wallet via MUTUAL proof so LAWBOR reputation attaches to the DID. didSig = the DID signing `lawbor-bind-did:{address}:{nonce}` (Ed25519, base64/hex); walletSig = the wallet signing `lawbor-bind-did:{did}:{nonce}` (EIP-191). One DID ↔ one wallet (anti-sybil).

Input parameters:

- `address` (string, required)
- `did` (string, required): did:key:z6Mk… (Ed25519).
- `didSig` (string, required): Ed25519 sig (base64 or hex) over lawbor-bind-did:{address}:{nonce}.
- `nonce` (string, required)
- `walletSig` (string, required): EIP-191 sig over lawbor-bind-did:{did}:{nonce}.

### `lawbor_quorum` (~108 tokens)

Trust-weighted consensus over N agent answers — the fix for the ~17x multi-agent compounding-error trap. Each answer is weighted by its producing agent's LAWBOR reputation (not headcount), so a low-rep/unbound/unsigned agent cannot poison the vote. Returns the quorum answer + confidence + per-agent weights. Optional per-submission signature gates inclusion.

Input parameters:

- `question` (string): Optional label for the task.
- `submissions` (array, required): Agent answers to weigh.

### `lawbor_gate` (~100 tokens)

Trust firewall between pipeline stages. Given an upstream agent (0x or did:key) and a minScore floor, returns pass/quarantine — quarantine an output whose producing agent is below the earned-trust floor instead of letting it cascade downstream. Replaces a human-set confidence threshold with earned trust.

Input parameters:

- `agent` (string, required): 0x wallet or did:key of the upstream agent.
- `minScore` (integer): Trust floor (default 30).

### `lawbor_orchestrate` (~112 tokens)

Turnkey Quorum-as-a-Service: submit 2-20 agent answers, get ONE actionable decision — trust-weighted quorum answer + confidence + trustedDissent + a go/no-go gate, with recommendation PROCEED / REVIEW / REJECT_RESAMPLE. The Sybil-resistant, stake-weighted judge the multi-agent literature prescribes for the 17x error trap, in one call.

Input parameters:

- `minScore` (integer)
- `submissions` (array, required)
- `task` (string)

### `lawbor_council` (~138 tokens)

Form a reputation-weighted, sybil-deduped panel of K agents to run a quorum — the glue between routing and consensus. One wallet = one seat (even across multiple DIDs). With no candidates, auto-pulls the top trusted set. Then collect each panelist answer and call lawbor_quorum.

Input parameters:

- `candidates` (array): Optional pool of 0x/did:key agents. Omit to auto-pull top trusted.
- `minScore` (integer): Minimum trust weight per seat.
- `size` (integer): Panel size (default 3).
- `task` (string): Optional task label.

### `lawbor_route` (~102 tokens)

Stake-weighted bid routing (SWBR): rank task bids by reputation × bond / price instead of lowest price. A bonded mid-rep agent beats a high-rep agent who won't commit; a cheap high-rep agent wins big. Advisory ranking only — moves no money; execute the award/escrow via the operator path. Unbound DIDs carry weight 0.

Input parameters:

- `bids` (array, required)
- `task` (string): Optional task label.

### `lawbor_validate` (~118 tokens)

Post a signed, reputation-gated pass/fail validation on a deliverable (bytes32 CID). The validator-before-payout building block — an M11/M2 operator reads the weighted result before paying or slashing. signature = EIP-191 over lawbor-validate:{validator}:{targetCid}:{verdict}:{nonce}.

Input parameters:

- `nonce` (string, required)
- `reason` (string)
- `signature` (string, required)
- `targetCid` (string, required)
- `validator` (string, required)
- `verdict` (string, required)

### `lawbor_validations` (~56 tokens)

Read the reputation-weighted validation aggregate for a deliverable CID: PASS/FAIL/CONTESTED + pass/fail weight + per-validator verdicts. Consult before accepting an agent deliverable.

Input parameters:

- `cid` (string, required)

### `mainstreet_signal` (~174 tokens)

MainStreet vets a token's SAFETY (mainstreet_onchain_info); this tool tells you where to get the complementary MOMENTUM layer — is a SAFE Base token also MOVING? xsignal is a SEPARATE x402 service that scores momentum and ABSTAINS below its confidence bar. Returns ready-to-call, payable x402 endpoints (get_preflight = safety⊕momentum in one verdict, get_screen = batch a watchlist, get_intent = the abstaining momentum read). Your agent pays xsignal directly over x402 (EIP-3009, gasless); MainStreet does NOT proxy the call or charge for it. Use after a SAFE/WATCH verdict to decide whether to actually enter.

Input parameters:

- `address` (string): Optional Base token address — prefills a ready-to-call URL.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/philpof102-svg-mainstreet/avisradar-production#diagnostics

## Score history

- 2026-08-03: 61
- 2026-08-02: 60
- 2026-08-01: 60
- 2026-07-31: 60
- 2026-07-30: 58
- 2026-07-29: 58
- 2026-07-28: 57
- 2026-07-27: 56
- 2026-07-26: 56

## Links

- Remote endpoint: https://avisradar-production.up.railway.app/mcp
- Repository: https://github.com/philpof102-svg/mainstreet
- Website: https://avisradar-production.up.railway.app/mainstreet.html
- Changelog RSS feed: https://verifymcp.io/servers/philpof102-svg-mainstreet/avisradar-production/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/philpof102-svg-mainstreet/avisradar-production/changelog.json
- HTML version of this page: https://verifymcp.io/servers/philpof102-svg-mainstreet/avisradar-production
