CryptoPulse MCP
An MCP server providing pay-per-call crypto market intelligence for AI agents. It exposes tools for retrieving spot prices, trending coins, fear & greed indices, gas prices, OHLC data, DEX trading metrics, token security scores, DeFi yields, and wallet portfolios. Payments are handled via x402 using USDC on Base or Solana, eliminating the need for traditional API keys.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://cryptopulse.saascloud.ai/mcpWhat its tools do
31 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Not annotated (31)
pricetrendingfear_greedgasohlctoken_pairstoken_riskyieldstoken_scorescreenermarket_summaryhalal_nearhalal_cityhalal_placeprayer_timesqiblamosques_nearmosques_citytrip_halalfunding_ratesstablecoinsdex_volumewalletfxbridge_quoteswap_quoteenszakatislamic_calendarmuslimtasker_quote_requestmuslimtasker_status
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to saascloud.ai ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Retrieve real-time cryptocurrency spot prices and market summaries
- Analyze token security and rug-pull risks before trading
- Discover top DeFi yield opportunities filtered by chain and TVL
- Check live gas prices and perpetual futures funding rates
Source and maintenance
Protocol and capabilities
- Server
- cryptopulse 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 31 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
31 advertised
price
[$0.002 USDC per call via x402] Spot prices for one or more cryptocurrencies in any fiat/crypto quote currency. Comma-separated CoinGecko ids.
{
"type": "object",
"required": [
"ids"
],
"properties": {
"vs": {
"type": "string",
"description": "Quote currency (default usd), e.g. usd, eur, btc"
},
"ids": {
"type": "string",
"description": "Comma-separated CoinGecko coin ids, e.g. bitcoin,ethereum,solana"
}
}
}trending
[$0.002 USDC per call via x402] Top trending cryptocurrencies right now (most-searched coins, with rank, price and 24h change).
{
"type": "object",
"properties": {}
}fear_greed
[$0.002 USDC per call via x402] Current Crypto Fear & Greed Index value and classification, plus previous day for trend.
{
"type": "object",
"properties": {}
}gas
[$0.002 USDC per call via x402] Live gas price (wei and gwei) for Base or Ethereum mainnet from public RPC.
{
"type": "object",
"properties": {
"chain": {
"type": "string",
"description": "base (default) or ethereum"
}
}
}ohlc
[$0.005 USDC per call via x402] OHLC candlestick data for any CoinGecko coin id (1, 7, 14, 30, 90, 180, 365 days).
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "CoinGecko coin id, e.g. bitcoin"
},
"vs": {
"type": "string",
"description": "Quote currency (default usd)"
},
"days": {
"type": "string",
"description": "1 | 7 | 14 | 30 | 90 | 180 | 365"
}
}
}token_pairs
[$0.01 USDC per call via x402] DEX trading data for a token: pairs, price, liquidity, volume, 24h txns/change across DEXes. Search by symbol, name, or contract address.
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"description": "Token symbol, name, or contract address"
}
}
}token_risk
[$0.02 USDC per call via x402] Token security / rug-pull risk check for any ERC-20 (honeypot, mintable, owner privileges, tax, LP holders). Essential pre-trade safety check for trading agents.
{
"type": "object",
"required": [
"address"
],
"properties": {
"chain": {
"type": "string",
"description": "base | ethereum | bsc | polygon | arbitrum (default base)"
},
"address": {
"type": "string",
"description": "ERC-20 token contract address (0x...)"
}
}
}yields
[$0.02 USDC per call via x402] Top DeFi yield opportunities: highest-APY pools filtered by chain and minimum TVL, with project, symbol, APY breakdown and stablecoin flag. Data from DefiLlama.
{
"type": "object",
"properties": {
"chain": {
"type": "string",
"description": "Chain name, e.g. Base, Ethereum, Solana, Arbitrum (default Base)"
},
"limit": {
"type": "string",
"description": "Max pools to return (default 10, max 50)"
},
"min_tvl": {
"type": "string",
"description": "Minimum pool TVL in USD (default 1000000)"
},
"stable_only": {
"type": "string",
"description": "true = only stablecoin pools"
}
}
}token_score
[$0.05 USDC per call via x402] Composite 0-100 buy-safety score for any token: combines contract security analysis (honeypot, taxes, ownership risks) with live market depth (liquidity, volume, activity) into a single verdict: avoid | high-risk | caution | ok | strong. One call answers 'should my agent touch this token?'
{
"type": "object",
"required": [
"address"
],
"properties": {
"chain": {
"type": "string",
"description": "base | ethereum | bsc | polygon | arbitrum (default base)"
},
"address": {
"type": "string",
"description": "Token contract address (0x...)"
}
}
}screener
[$0.10 USDC per call via x402] Token screener: trending or newly-launched pools on a chain, filtered by minimum liquidity and 24h volume, with optional on-chain safety screening (drops honeypots and balance-modifiable tokens). Returns ranked opportunities with price, liquidity, volume, buys/sells and safety flags.
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"description": "trending (default) or new"
},
"limit": {
"type": "string",
"description": "Max results (default 10, max 20)"
},
"network": {
"type": "string",
"description": "GeckoTerminal network id, e.g. base, eth, solana (default base)"
},
"safe_only": {
"type": "string",
"description": "true = run security screen on Base tokens and drop dangerous ones"
},
"min_volume": {
"type": "string",
"description": "Minimum 24h volume USD (default 10000)"
},
"min_liquidity": {
"type": "string",
"description": "Minimum pool liquidity USD (default 50000)"
}
}
}market_summary
[$0.01 USDC per call via x402] One-call market brief: BTC/ETH/SOL prices with 24h change, Fear & Greed index, and top-5 trending coins. Ideal for agents that need a single snapshot.
{
"type": "object",
"properties": {}
}halal_near
[$0.005 USDC per call via x402] Halal restaurants, grocers, butchers and caterers near a lat/lng (radius up to 30 km), sorted by distance, with cuisine and type filters. OpenStreetMap data (ODbL).
{
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "string",
"description": "Latitude, e.g. 40.7128"
},
"lng": {
"type": "string",
"description": "Longitude, e.g. -74.0060"
},
"type": {
"type": "string",
"description": "Filter by place type: restaurant, fast_food, cafe, butcher, supermarket, convenience"
},
"limit": {
"type": "string",
"description": "Max results, 1-50 (default 20)"
},
"cuisine": {
"type": "string",
"description": "Filter by cuisine substring, e.g. indian, turkish, pakistani"
},
"radius_km": {
"type": "string",
"description": "Search radius in km, 0.2-30 (default 5)"
}
}
}halal_city
[$0.01 USDC per call via x402] Halal places in a named city (geocoded), e.g. city=Houston, TX. Up to 50 results sorted by distance from the city centre, optional cuisine filter. OpenStreetMap data (ODbL).
{
"type": "object",
"required": [
"city"
],
"properties": {
"city": {
"type": "string",
"description": "City name, optionally with region/country, e.g. 'Houston, TX' or 'Birmingham, UK'"
},
"limit": {
"type": "string",
"description": "Max results, 1-50 (default 30)"
},
"cuisine": {
"type": "string",
"description": "Filter by cuisine substring"
},
"radius_km": {
"type": "string",
"description": "Radius from city centre in km, 1-30 (default 15)"
}
}
}halal_place
[$0.002 USDC per call via x402] Full record for one halal place by id (as returned by /api/halal/near): phone, website, opening hours, address and OpenStreetMap link.
{
"type": "object",
"required": [
"id",
"lat",
"lng"
],
"properties": {
"id": {
"type": "string",
"description": "Place id from /api/halal/near, e.g. n123 or w456"
},
"lat": {
"type": "string",
"description": "Latitude of the place (from the search result)"
},
"lng": {
"type": "string",
"description": "Longitude of the place (from the search result)"
}
}
}prayer_times
[$0.002 USDC per call via x402] Islamic prayer times (Fajr, Sunrise, Dhuhr, Asr, Maghrib, Isha) for any lat/lng and date, 17 calculation methods, Hanafi/Standard Asr, Hijri date, up to 7 days.
{
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone for local times, e.g. America/New_York (otherwise estimated from longitude)"
},
"asr": {
"type": "string",
"description": "Standard (default) or Hanafi"
},
"lat": {
"type": "string",
"description": "Latitude"
},
"lng": {
"type": "string",
"description": "Longitude"
},
"date": {
"type": "string",
"description": "YYYY-MM-DD (default today, UTC)"
},
"days": {
"type": "string",
"description": "1-7 days of times (default 1)"
},
"method": {
"type": "string",
"description": "MWL (default), ISNA, Egypt, Makkah, Karachi, Tehran, Jafari, Turkey, Singapore, France, Russia, Dubai, Kuwait, Qatar, Kemenag, JAKIM, Moonsighting"
}
}
}qibla
[$0.001 USDC per call via x402] Qibla direction (compass bearing to the Kaaba) and great-circle distance from any lat/lng.
{
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "string",
"description": "Latitude"
},
"lng": {
"type": "string",
"description": "Longitude"
}
}
}mosques_near
[$0.005 USDC per call via x402] Mosques and Muslim prayer spaces near a lat/lng (radius up to 30 km), sorted by distance, with qibla bearing. OpenStreetMap data (ODbL).
{
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "string",
"description": "Latitude"
},
"lng": {
"type": "string",
"description": "Longitude"
},
"limit": {
"type": "string",
"description": "1-50 (default 20)"
},
"radius_km": {
"type": "string",
"description": "0.2-30 (default 5)"
}
}
}mosques_city
[$0.01 USDC per call via x402] Mosques in a named city (geocoded), up to 50 sorted by distance from the city centre. OpenStreetMap data (ODbL).
{
"type": "object",
"required": [
"city"
],
"properties": {
"city": {
"type": "string",
"description": "City name, e.g. 'Dearborn, MI' or 'Bradford, UK'"
},
"limit": {
"type": "string",
"description": "1-50 (default 30)"
},
"radius_km": {
"type": "string",
"description": "1-30 (default 15)"
}
}
}trip_halal
[$0.02 USDC per call via x402] One-call Muslim travel bundle for a city or lat/lng: today's prayer times, qibla, nearby halal restaurants and nearby mosques. Replaces 4 separate calls.
{
"type": "object",
"required": [],
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone for local prayer times"
},
"lat": {
"type": "string",
"description": "Latitude (alternative to city)"
},
"lng": {
"type": "string",
"description": "Longitude (alternative to city)"
},
"city": {
"type": "string",
"description": "City name (or pass lat and lng instead)"
},
"date": {
"type": "string",
"description": "YYYY-MM-DD (default today)"
},
"limit": {
"type": "string",
"description": "halal places to return, 1-25 (default 10)"
},
"method": {
"type": "string",
"description": "Prayer calculation method (default MWL)"
},
"cuisine": {
"type": "string",
"description": "Halal cuisine filter"
},
"radius_km": {
"type": "string",
"description": "1-30 (default 10)"
}
}
}funding_rates
[$0.005 USDC per call via x402] Perpetual futures funding rates, open interest, mark/oracle price and 24h volume for 200+ crypto perps (Hyperliquid). Filter by symbols or sort by funding/OI.
{
"type": "object",
"required": [],
"properties": {
"sort": {
"type": "string",
"description": "funding_desc, funding_asc, oi (default: 24h volume)"
},
"limit": {
"type": "string",
"description": "1-100 (default 20)"
},
"symbols": {
"type": "string",
"description": "Comma-separated base symbols, e.g. BTC,ETH,SOL (default: top by volume)"
}
}
}stablecoins
[$0.005 USDC per call via x402] Stablecoin market: circulating supply, price and peg deviation, 1d/7d supply change and chains for the top stablecoins, plus a depeg watchlist (DefiLlama).
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "string",
"description": "1-50 (default 15)"
}
}
}dex_volume
[$0.005 USDC per call via x402] DEX trading volume: total 24h/7d volume and change, and the top DEXs by 24h volume, optionally for one chain (DefiLlama).
{
"type": "object",
"required": [],
"properties": {
"chain": {
"type": "string",
"description": "Chain name as on DefiLlama, e.g. Ethereum, Base, Solana, Arbitrum (default all)"
},
"limit": {
"type": "string",
"description": "1-50 (default 15)"
}
}
}wallet
[$0.01 USDC per call via x402] EVM wallet portfolio: native balance, ERC-20 token balances with USD prices and total value, tx count (Base, Ethereum, Optimism, Arbitrum, Polygon, Gnosis via Blockscout).
{
"type": "object",
"required": [
"address"
],
"properties": {
"chain": {
"type": "string",
"description": "base (default), ethereum, optimism, arbitrum, polygon, gnosis"
},
"address": {
"type": "string",
"description": "0x address"
}
}
}fx
[$0.001 USDC per call via x402] Fiat exchange rates and conversion from ECB reference data (USD, EUR, GBP, JPY, CAD, AUD, CHF, CNY, INR, and ~20 more), latest or any date since 1999.
{
"type": "object",
"required": [],
"properties": {
"to": {
"type": "string",
"description": "Comma-separated target codes (default all)"
},
"date": {
"type": "string",
"description": "YYYY-MM-DD for historical rates (default latest)"
},
"from": {
"type": "string",
"description": "Base currency code (default USD)"
},
"amount": {
"type": "string",
"description": "Optional amount to convert"
}
}
}bridge_quote
[$0.01 USDC per call via x402] Best cross-chain bridge route and quote for moving a token between chains (Base, Ethereum, Arbitrum, Optimism, Polygon, BSC, Avalanche, Solana and more): output amount, fees, gas, duration, via Relay (LI.FI fallback).
{
"type": "object",
"required": [
"to_chain",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Amount in human units, e.g. 100"
},
"slippage": {
"type": "string",
"description": "Max slippage fraction, 0.0005-0.05 (default 0.005)"
},
"to_chain": {
"type": "string",
"description": "Destination chain name or id"
},
"to_token": {
"type": "string",
"description": "Token symbol or address on the destination chain (default USDC)"
},
"from_chain": {
"type": "string",
"description": "Source chain name or id (base, ethereum, arbitrum, optimism, polygon, bsc, avalanche, solana, ...)"
},
"from_token": {
"type": "string",
"description": "Token symbol or address on the source chain (default USDC)"
},
"to_address": {
"type": "string",
"description": "Optional recipient wallet on the destination chain (Solana address for Solana destinations)"
},
"from_address": {
"type": "string",
"description": "Optional sender wallet; required for an executable transaction request"
}
}
}swap_quote
[$0.01 USDC per call via x402] Best same-chain swap quote (DEX aggregation) for any token pair on Base, Ethereum, Arbitrum, Optimism, Polygon, BSC, Avalanche, Solana and more: output amount, minimum received, fees, gas, via Relay (LI.FI fallback).
{
"type": "object",
"required": [
"from_token",
"to_token",
"amount"
],
"properties": {
"amount": {
"type": "string",
"description": "Amount to sell in human units"
},
"slippage": {
"type": "string",
"description": "Max slippage fraction (default 0.005)"
},
"to_token": {
"type": "string",
"description": "Token symbol or address to buy"
},
"from_chain": {
"type": "string",
"description": "Chain name or id (default base)"
},
"from_token": {
"type": "string",
"description": "Token symbol or address to sell"
},
"from_address": {
"type": "string",
"description": "Optional wallet; required for an executable transaction request"
}
}
}ens
[$0.001 USDC per call via x402] ENS lookup: resolve a .eth name to an address (or an address to its primary name) with avatar and profile records (url, twitter, github, email, description).
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "ENS name such as vitalik.eth, or a 0x address for reverse lookup"
}
}
}zakat
[$0.005 USDC per call via x402] Zakat calculator: live gold/silver nisab thresholds, zakatable net worth and 2.5% due, from cash, gold/silver grams, investments, crypto, business inventory, receivables and debts, in any major currency.
{
"type": "object",
"required": [],
"properties": {
"cash": {
"type": "string",
"description": "Cash and bank balances"
},
"debts": {
"type": "string",
"description": "Short-term debts due (deducted)"
},
"nisab": {
"type": "string",
"description": "silver (default, 595 g) or gold (85 g)"
},
"other": {
"type": "string",
"description": "Other zakatable assets"
},
"crypto": {
"type": "string",
"description": "Crypto holdings (fiat value)"
},
"currency": {
"type": "string",
"description": "ISO currency code (default USD)"
},
"gold_grams": {
"type": "string",
"description": "Gold held, in grams"
},
"investments": {
"type": "string",
"description": "Stocks, funds and other liquid investments"
},
"receivables": {
"type": "string",
"description": "Money owed to you that you expect to receive"
},
"silver_grams": {
"type": "string",
"description": "Silver held, in grams"
},
"business_inventory": {
"type": "string",
"description": "Trade goods / inventory value"
}
}
}islamic_calendar
[$0.002 USDC per call via x402] Islamic (Hijri) calendar: convert Gregorian↔Hijri dates and list the year's Islamic events (Ramadan start, Eid al-Fitr, Eid al-Adha, Ashura, Mawlid, Isra Mi'raj, Arafah, Laylat al-Qadr) with Gregorian dates.
{
"type": "object",
"required": [],
"properties": {
"date": {
"type": "string",
"description": "Gregorian date YYYY-MM-DD to convert (default today)"
},
"year": {
"type": "string",
"description": "Gregorian year to list Islamic events for (default: the converted date's year)"
},
"hijri": {
"type": "string",
"description": "Hijri date YYYY-MM-DD to convert to Gregorian, e.g. 1448-09-01"
}
}
}muslimtasker_quote_request
[$0.01 USDC per call via x402] Request a home-service quote from MuslimTasker (ID-verified local taskers for plumbing, electrical, handyman, cleaning, moving, repairs, remodels; United States and Canada). Submit the customer's full contact details and the job; MuslimTasker contacts the customer directly, usually within 1 business day, with a quote. Incomplete submissions return 400 with the missing fields and are not charged. REFERRAL BOUNTY: when a contractor accepts the lead, the wallet that paid for this call earns $10 USDC (paid weekly); check /api/muslimtasker/status for bounty status.
{
"type": "object",
"required": [
"customer_name",
"customer_email",
"customer_phone",
"address",
"city",
"state",
"zip",
"task",
"customer_consent"
],
"properties": {
"zip": {
"type": "string",
"description": "ZIP or postal code"
},
"city": {
"type": "string",
"description": "City"
},
"task": {
"type": "string",
"description": "Detailed description of the job (what, where in the home, what is broken, sizes, materials), at least 20 characters"
},
"notes": {
"type": "string",
"description": "Anything else: gate codes, pets, parking, photos (URLs), access instructions"
},
"state": {
"type": "string",
"description": "State or province, e.g. FL"
},
"budget": {
"type": "string",
"description": "Customer's budget or expectation, e.g. '$150-250' or 'needs quote'"
},
"address": {
"type": "string",
"description": "Street address where the work is needed (house/apartment number and street)"
},
"country": {
"type": "string",
"description": "US or CA (default US)"
},
"urgency": {
"type": "string",
"description": "emergency (same day), urgent (within 48 h), normal (default), flexible"
},
"category": {
"type": "string",
"description": "Service category: plumbing, electrical, handyman, cleaning, moving, furniture-assembly, tv-mounting, painting, yard-work, appliance-repair, hvac, roofing, remodel, general-contracting, emergency-repair, other (default: other)"
},
"agent_name": {
"type": "string",
"description": "Name of the AI agent or platform submitting the request"
},
"callback_url": {
"type": "string",
"description": "Optional https URL; MuslimTasker POSTs a JSON status update to it whenever the lead status changes"
},
"agent_contact": {
"type": "string",
"description": "Email or URL where MuslimTasker can reach the agent operator"
},
"customer_name": {
"type": "string",
"description": "Customer's full name (as they want to be addressed)"
},
"customer_email": {
"type": "string",
"description": "Customer's email address (MuslimTasker will send the quote here)"
},
"customer_phone": {
"type": "string",
"description": "Customer's phone number with country code, e.g. +1 407 555 0100 (MuslimTasker will call or text)"
},
"preferred_date": {
"type": "string",
"description": "Preferred date YYYY-MM-DD, or a range/notes"
},
"preferred_time": {
"type": "string",
"description": "Preferred time window, e.g. morning, 2-5pm, weekends"
},
"customer_consent": {
"type": "string",
"description": "Must be 'true': the customer has agreed to be contacted by MuslimTasker at the email and phone given"
},
"contact_preference": {
"type": "string",
"description": "How the customer prefers to be contacted: call, text, whatsapp or email (default: call)"
},
"preferred_language": {
"type": "string",
"description": "Customer's preferred language, e.g. English, Arabic, Urdu (default English)"
}
}
}muslimtasker_status
[$0.001 USDC per call via x402] Check the status of a MuslimTasker quote request (received, contacted, quoted, booked, completed, closed) and read the quote once MuslimTasker has sent one.
{
"type": "object",
"required": [
"request_id",
"customer_email"
],
"properties": {
"request_id": {
"type": "string",
"description": "The request_id returned by quote-request"
},
"customer_email": {
"type": "string",
"description": "The customer email used in the request (authorizes the lookup)"
}
}
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 155 ms
- 95th percentile latency
- 155 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 155 ms · metadata changed · 31 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http cryptopulse-mcp-saascloud https://cryptopulse.saascloud.ai/mcpCodex
codex mcp add cryptopulse-mcp-saascloud --url https://cryptopulse.saascloud.ai/mcpCursor
{
"mcpServers": {
"cryptopulse-mcp-saascloud": {
"url": "https://cryptopulse.saascloud.ai/mcp"
}
}
}Cline
{
"mcpServers": {
"cryptopulse-mcp-saascloud": {
"type": "streamableHttp",
"url": "https://cryptopulse.saascloud.ai/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"cryptopulse-mcp-saascloud": {
"type": "http",
"url": "https://cryptopulse.saascloud.ai/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http cryptopulse-mcp-saascloud https://cryptopulse.saascloud.ai/mcpClaude Desktop
https://cryptopulse.saascloud.ai/mcpWindsurf
{
"mcpServers": {
"cryptopulse-mcp-saascloud": {
"serverUrl": "https://cryptopulse.saascloud.ai/mcp"
}
}
}Let your agent find its tools
Find servers like CryptoPulse MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run CryptoPulse MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.