{"name":"dev.nichedb/nichedb","slug":"nichedb","title":"NicheDB","description":"Sources in, feeds out: an open, ever-growing database of real-time public data, enriched.","url":"https://mcp.market/server/nichedb","rating":null,"grade":"A","score":86,"certified":false,"status":"active","category":"data","tags":["data"],"presence":{"score":44,"stars":1,"forks":0,"downloads_week":3401,"last_push_at":"2026-09-16T15:52:57.000Z","license":"MIT"},"uptime":{"percent":100,"checks":4,"ok":4,"last_checked_at":"2026-09-20T09:41:02.480Z","last_ok_at":"2026-09-20T09:41:02.480Z","latency_ms":176},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/profullstack/niche-db","website":"https://nichedb.dev","version":"0.1.0","remotes":[{"type":"streamable-http","url":"https://nichedb.dev/mcp"}],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@profullstack/nichedb","version":"0.1.0","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"mcp","type":"positional"},{"value":"https://nichedb.dev","type":"named","name":"--api"}]}],"tools":[{"name":"add_source","description":"Add a source: an adapter with a config, fetched on a schedule (needs a key; admins and Pro). Call list_adapters first for the fields.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"adapter":{"type":"string","description":"Adapter name, e.g. github-releases"},"collection":{"type":"string","description":"Collection slug; defaults to the adapter's"},"name":{"type":"string","description":"Display name"},"config":{"type":"object","description":"Adapter config fields"},"cadence_minutes":{"type":"integer","description":"5 to 1440"}},"required":["adapter"]}},{"name":"claim_profile","description":"Claim a profile as the key owner (needs a key). Proven when the key owner’s email is one the profile lists, or when the person’s site or show page links back to the profile’s nichedb page. An admin may claim on behalf of an email.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"ref":{"type":"string","description":"Profile id, slug-id or handle"},"email":{"type":"string","description":"Admins only: claim it for this email"}},"required":["ref"]}},{"name":"create_feed","description":"Save a query as a feed (needs a key). Sources, kinds and tags narrow; q is a text match; upcoming keeps only future-dated items.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Query center latitude; requires long"},"long":{"type":"number","minimum":-180,"maximum":180,"description":"Query center longitude; requires lat"},"radius":{"type":"number","exclusiveMinimum":0,"description":"Default 10; maximum 1000 km"},"unit":{"type":"string","enum":["km","mi"],"description":"Default km"},"bbox":{"type":"string","description":"west,south,east,north; west > east crosses the antimeridian"},"sort":{"type":"string","enum":["id","published","updated","distance"]},"collection":{"type":"string","description":"Collection slug"},"name":{"type":"string","description":"Feed name"},"description":{"type":"string","description":"Optional"},"sources":{"type":"array","items":{"type":"string"},"description":"Source slugs"},"kinds":{"type":"array","items":{"type":"string"},"description":"Item kinds"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags, any match"},"q":{"type":"string","description":"Text match"},"upcoming":{"type":"boolean"},"enrichers":{"type":"array","items":{"type":"string"},"description":"Enrichers to show; omit for the collection defaults"},"public":{"type":"boolean","description":"Default true"}},"required":["collection","name"]}},{"name":"feed_items","description":"What a feed selects, newest first. Page with before_id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Query center latitude; requires long"},"long":{"type":"number","minimum":-180,"maximum":180,"description":"Query center longitude; requires lat"},"radius":{"type":"number","exclusiveMinimum":0,"description":"Default 10; maximum 1000 km"},"unit":{"type":"string","enum":["km","mi"],"description":"Default km"},"bbox":{"type":"string","description":"west,south,east,north; west > east crosses the antimeridian"},"sort":{"type":"string","enum":["id","published","updated","distance"]},"feed":{"type":"string","description":"Feed slug"},"limit":{"type":"integer","description":"Default 30, max 200"},"before_id":{"type":"integer","description":"Keyset cursor; cannot combine with distance sorting"},"offset":{"type":"integer","description":"Distance pagination offset"}},"required":["feed"]}},{"name":"follow_feed","description":"Follow a feed as the key owner (needs a key). Channels: webpush, email, webhook.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"feed":{"type":"string","description":"Feed slug"},"channels":{"type":"array","items":{"type":"string"},"description":"Default webpush,email"},"webhook_url":{"type":"string","description":"For the webhook channel"},"webhook_secret":{"type":"string","description":"Shared secret the receiver verifies with"}},"required":["feed"]}},{"name":"get_item","description":"One item with its full adapter payload.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"integer","description":"Item id"}},"required":["id"]}},{"name":"get_profile","description":"One person by id, `<slug>-<id>` or handle: the parsed view and the OpenProfile.md as served.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"ref":{"type":"string","description":"Profile id, slug-id or handle"}},"required":["ref"]}},{"name":"list_adapters","description":"Every adapter this deployment can run, with the config fields each takes. Use before add_source.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"list_collections","description":"The collections (niches) with their source, feed and item counts.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"list_enrichers","description":"Every enricher (YouTube videos, Wikipedia, repo stats, downloads, company profiles, TL;DRs) and which collections turn it on by default. Items carry their results under `enrichment`.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"list_feeds","description":"Public feeds, most followed first. Optionally one collection.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"collection":{"type":"string","description":"Collection slug"}}}},{"name":"list_sources","description":"Sources with status, last run and item counts. Optionally one collection.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"collection":{"type":"string","description":"Collection slug, e.g. games"}}}},{"name":"match_items","description":"Which title, channel or fixture is this name? Give a file name, a release name or a playlist entry (\"Top.Gun.Maverick.2022.1080p.mkv\", \"US: ESPN2 HD\"); it is cleaned (year, season and episode, quality tags, playlist decorations) and matched by similarity. A matchup (\"NFL: Chiefs vs Bills\", \"Lakers @ Celtics\", \"Rangers at Celtic 19:45\") is answered by the fixture whose two teams those are, kicking off between 36 hours ago and 7 days ahead unless date narrows it. Each result carries a score in 0..1. Use screen for films and TV, channels for television channels, sports for fixtures.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Query center latitude; requires long"},"long":{"type":"number","minimum":-180,"maximum":180,"description":"Query center longitude; requires lat"},"radius":{"type":"number","exclusiveMinimum":0,"description":"Default 10; maximum 1000 km"},"unit":{"type":"string","enum":["km","mi"],"description":"Default km"},"bbox":{"type":"string","description":"west,south,east,north; west > east crosses the antimeridian"},"sort":{"type":"string","enum":["id","published","updated","distance"]},"q":{"type":"string","description":"The name as written"},"collection":{"type":"string","description":"Collection slug: screen, channels or sports"},"kind":{"type":"string","description":"Item kind: title, channel, fixture"},"year":{"type":"integer","description":"A year to prefer, when known"},"date":{"type":"string","description":"A day (YYYY-MM-DD) to look for a fixture on, plus a day either side"},"limit":{"type":"integer","description":"Default 5, max 50"}},"required":["q"]}},{"name":"recent_items","description":"Newest items, optionally narrowed to a collection, source or kind.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Query center latitude; requires long"},"long":{"type":"number","minimum":-180,"maximum":180,"description":"Query center longitude; requires lat"},"radius":{"type":"number","exclusiveMinimum":0,"description":"Default 10; maximum 1000 km"},"unit":{"type":"string","enum":["km","mi"],"description":"Default km"},"bbox":{"type":"string","description":"west,south,east,north; west > east crosses the antimeridian"},"sort":{"type":"string","enum":["id","published","updated","distance"]},"collection":{"type":"string","description":"Collection slug"},"source":{"type":"string","description":"Source slug"},"kind":{"type":"string","description":"Item kind"},"limit":{"type":"integer","description":"Default 30, max 200"},"before_id":{"type":"integer","description":"Keyset cursor; cannot combine with distance sorting"},"offset":{"type":"integer","description":"Distance pagination offset"}}}},{"name":"run_source","description":"Fetch a source now instead of waiting for its schedule (needs a key; owner or admin).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"source":{"type":"string","description":"Source slug"}},"required":["source"]}},{"name":"search_items","description":"Full-text search over titles, summaries and tags. Use this first when you know a name.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Query center latitude; requires long"},"long":{"type":"number","minimum":-180,"maximum":180,"description":"Query center longitude; requires lat"},"radius":{"type":"number","exclusiveMinimum":0,"description":"Default 10; maximum 1000 km"},"unit":{"type":"string","enum":["km","mi"],"description":"Default km"},"bbox":{"type":"string","description":"west,south,east,north; west > east crosses the antimeridian"},"sort":{"type":"string","enum":["id","published","updated","distance"]},"q":{"type":"string","description":"Query"},"collection":{"type":"string","description":"Collection slug"},"kind":{"type":"string","description":"Item kind"},"limit":{"type":"integer","description":"Default 20, max 100"}},"required":["q"]}},{"name":"search_profiles","description":"People: one entry per person assembled from every app that serves their OpenProfile.md (podcasters from p0dcasters, public profiles from OutreachGraph). Search by name, headline or anything in the document; newest change first. Each answer carries the page, the openprofile.md URL, accounts, topics, Broadcast shows and the Guest section.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","description":"Text to match against the name, headline and document (optional)"},"since":{"type":"string","description":"ISO time: only profiles changed after it (optional)"},"limit":{"type":"integer","description":"Default 30, max 200"}}}},{"name":"stats","description":"What this deployment holds: collections, sources, items, items added today, feeds.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"submit_feed","description":"Suggest an RSS or Atom feed for the index. No key needed. An admin reviews every suggestion before anything is fetched; approved podcast feeds are handed to rssamplifier, everything else becomes a source here.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","description":"The feed URL, starting with https://"},"collection":{"type":"string","description":"Collection slug it belongs in (optional; an admin decides otherwise)"},"note":{"type":"string","description":"Why it belongs here: who publishes it, what it covers (optional)"},"email":{"type":"string","description":"Where to hear back, if you are not sending a key (optional)"}},"required":["url"]}},{"name":"upcoming","description":"Items dated in the future (releases, launches, deadlines), soonest first.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Query center latitude; requires long"},"long":{"type":"number","minimum":-180,"maximum":180,"description":"Query center longitude; requires lat"},"radius":{"type":"number","exclusiveMinimum":0,"description":"Default 10; maximum 1000 km"},"unit":{"type":"string","enum":["km","mi"],"description":"Default km"},"bbox":{"type":"string","description":"west,south,east,north; west > east crosses the antimeridian"},"sort":{"type":"string","enum":["id","published","updated","distance"]},"collection":{"type":"string","description":"Collection slug"},"days":{"type":"integer","description":"Horizon, default 30"},"limit":{"type":"integer","description":"Default 50"}}}},{"name":"update_profile","description":"Edit a profile you own (needs a key). Send `markdown`, a whole OpenProfile.md that replaces what you wrote before, or any of `name`, `headline`, `identity` (key: value, null removes), `sections` (name: body, `none` removes), `handle`, `public`. What you write wins over every source and survives every re-read.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"ref":{"type":"string","description":"Profile id, slug-id or handle"},"markdown":{"type":"string","description":"A complete OpenProfile.md"},"name":{"type":"string","description":"The name"},"headline":{"type":"string","description":"One line"},"identity":{"type":"object","description":"Identity keys: Kind, Web, Email, Location, ...; null removes"},"sections":{"type":"object","description":"Section bodies by name (accounts, topics, broadcast, guest, ...); the word none removes one"},"handle":{"type":"string","description":"Your URL: /c/profiles/<handle>"},"public":{"type":"boolean","description":"Listed and pulled by other directories"}},"required":["ref"]}}],"scan":{"score":86,"grade":"A","scanned_at":"2026-09-20T11:37:04.837Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:37:04.758Z","components":{"code":{"score":25,"max":25,"notes":["3 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 871ms"]},"poisoning":{"score":15,"max":15,"notes":["21 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 4 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 4 days ago"]},"identity":{"score":8,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://nichedb.dev/mcp","reachable":true,"authRequired":false,"latencyMs":871,"serverInfo":{"name":"nichedb","version":"1.0.0"}}],"packages":[{"registryType":"npm","identifier":"@profullstack/nichedb","version":"0.1.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":0,"publishedAt":"2026-09-05T21:14:36.762Z","repositoryUrl":"git+https://github.com/profullstack/niche-db.git","weeklyDownloads":3401}],"repo":{"found":true,"owner":"profullstack","repo":"niche-db","archived":false,"pushedAt":"2026-09-16T15:52:57Z","stars":1,"forks":0,"openIssues":1,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/44715329?v=4","ownerCreatedAt":"2018-11-03T00:04:09Z","license":"MIT"},"icon":{"url":"https://nichedb.dev/favicon.svg?v=zkyu6sg2","source":"site"},"presence":{"stars":1,"forks":0,"downloadsWeek":3401,"license":"MIT","lastPushAt":"2026-09-16T15:52:57.000Z","score":44}}}},"grade_history":[],"reviews":[]}