What it does
Ask it out loud "what can I earn from this week?" and it reads back a ranked shortlist, with effort, realistic time to first money, and a ready-to-send message for the one you pick.
Paid work is scattered across places nobody monitors: a bounty posted in a GitHub issue, a hackathon that opens quietly, a paid issue on a job board. Reading all of it is unpaid work, so people read none of it. Nemotron Scout is a self-hosted Model Context Protocol server that turns those public signals into a decision.
How it works
- Collect. Devpost, Hacker News, RemoteOK and GitHub issues, in parallel, fail-soft per source, so one dead source never kills a run.
- Extract. A model pulls the money signal out of every item.
- Critique. A second, more sceptical model argues against it. Hype gets killed here, not later.
- Plan. The survivor gets an effort estimate, a concrete first hour, explicit kill criteria, and a pitch you can send to the maintainer today.
Why MCP, and why Alexa+
An Alexa+ agent needs a self-hosted MCP server to do real work on the open web. Scout speaks standard MCP over Streamable HTTP, protocol version 2025-11-25, with session ids, SSE responses, notifications, resources and ping. scout_voice_answer returns a spoken-ready answer, so a voice agent can drive the whole flow end to end.
The numbers are real
The demo video is an unedited run: 51 items collected across four sources, 6 LLM calls, 13,022 tokens, about 70 seconds wall clock. The top result was a $50 bounty to build a skill that generates a structured CHANGELOG from git history, scored 67.7/100, with a five-step plan and kill criteria.
What we learned building it
- Models return bad JSON in creative ways. The extractor sometimes hands back a bare array instead of an object, omits
kind, or sends"12h"where a number was expected. The schema layer now normalises all of it rather than raising, and there are regression tests for each shape. - Free tiers have hard walls. OpenRouter caps free models at 50 requests per day, and one run costs 7 or more. So the server caches the last good run on disk and replays it, clearly labelled as cached, instead of showing a judge an error page.
- One run, many callers. Tool calls are single-flighted, so a burst of parallel requests triggers one pipeline run rather than one per request. On a public endpoint that is the difference between a demo and an invoice.
- Public endpoints need auth.
/mcprequires a bearer token whenever the server is not on loopback, because every tool call spends real credits.
Runs anywhere
One environment variable swaps the model provider: SCOUT_PROVIDER=openrouter|bedrock, or SCOUT_BASE_URL for any OpenAI-compatible host, with a model fallback cascade so a rate limit is never a dead end. It starts on a free tier with NVIDIA Nemotron 3, so there is no paid API key to begin, and any OpenAI-compatible host works too.
MIT licensed, two runtime dependencies, one command to start.
Try the live instance without a token
A public instance is running in read-only mode: you can connect, list the tools and read the last real run with no token at all, because a live search spends real credits and that is exactly the part we do not hand to a stranger. A fresh search needs the token, by design.
curl -s -X POST <endpoint>/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-11-25' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"scout_voice_answer","arguments":{"rank":1}}}'
It answers in one sentence, which is what an Alexa+ agent needs. Run it yourself with --public-readonly and the same three calls work against a local port.
Built With
- ai-agent
- amazon-alexa+
- amazon-alexa-developer
- automation
- aws-bedrock
- devpost-api
- mcp
- model-context-protocol
- nvidia-nemotron-3
- open-source
- openrouter
- python
- self-hosted
Log in or sign up for Devpost to join the conversation.