Stringer Grounded Synthesizer

app.getstringerPublished by getstringer.appOfficial publisherv0.1.1Updated Oct 24, 2026

Grounded synthesis from public sources. 3 free calls total; then $0.10 brief or $0.25 deep via x402.

The publisher's own server: Stringer CleanExtract

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & Memory

Overview

AI-generated overview

Remote MCP server that returns grounded, cited quotations from verified public sources, or refuses topics it cannot ground.

What you can do
  • Run a grounded synthesis on a topic, returning extractive quotations with source URLs and character offsets.
  • Discover sources automatically when no source URLs are supplied.
  • Get a status back: grounded, refused for unverified claims, or source extraction failed.
  • Choose a brief tier (at least 2 verified sources) or a deep tier (at least 3).
When to use it
Useful when an assistant needs citable, verbatim evidence from public sources rather than generated prose, and when a refusal is an acceptable answer for weakly supported topics. The free allowance is small, so it suits trying the service or occasional brief lookups.
Requirements
A remote streamable HTTP endpoint; no local install, account, API key or header is needed for the free calls. Clients must send both application/json and text/event-stream in the Accept header. Paid calls after the free allowance require x402 payment in USDC on Base.
Before you install
Only the first three calls are free in total and the allowance never resets; further calls cost USD 0.10 (brief) or USD 0.25 (deep) and are paid in USDC on Base via x402, so an assistant could spend money. Topics and source URLs are sent to a third-party service.

Installation

In SourceWeft

  1. Open Stringer Grounded Synthesizer 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/app.getstringer%2Fsynthesizer/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": {
    "stringer-grounded-synthesizer": {
      "type": "http",
      "url": "https://synthesis.getstringer.app/mcp"
    }
  }
}

README

Grounded Synthesizer (reference)

This is a runnable reference implementation of the Stringer Grounded Synthesizer, a research service that returns extractive quotations with citations from verified public sources and refuses a topic it cannot ground. It mirrors the caller-observable surface of the hosted service at synthesis.getstringer.app and holds nothing back that a caller can see.

The boundary rule is the one stated in the worker header: a behaviour belongs here when an unauthenticated caller can observe it from outside. The bearer-gated admin stats route, the Durable Object funnel counters, the caller hashing, and the provider cost rate card stay out.

What the reference runs on

Node.js 20 or newer. The Worker is dependency-free and runs with no API keys and no external state, because the default research provider is a fixture-backed stub. That is the point: a stranger can clone the tree and watch the grounding and the refusal end to end without holding a single paid key.

bash
git clone <this repository>cd synthesizer-publicnode --test test_discovery.mjs test_worker.mjs

To run it as a Worker locally, use Wrangler 4 (npx wrangler dev). No secret setup is required; the free allowance is held in process for the reference and is documented as such in wrangler.toml.

Hosted endpoints (the service this documents)

  • MCP: https://synthesis.getstringer.app/mcp
  • MCP tool: synthesize_intelligence
  • REST: POST https://synthesis.getstringer.app/v1/synthesize
  • REST alias: POST https://synthesis.getstringer.app/v1/execute
  • Discovery: /.well-known/mcp.json, /server.json, /llms.txt, /llms-full.txt, /robots.txt, /sitemap.xml

The first three calls are free, total, with no signup and no claim header. The allowance does not reset. After that, a brief synthesis costs USD 0.10 and a deep synthesis costs USD 0.25, both paid through x402 v2 USDC on Base (eip155:8453). An unpaid call after the allowance is exhausted returns HTTP 402 with the accepted payment requirement in PAYMENT-REQUIRED and the tier price in X-402-Price-USD.

Grounding contract

  • A brief synthesis requires at least 2 distinct verified sources.
  • A deep synthesis requires at least 3 distinct verified sources.
  • Every claim is an extractive quotation with a source URL and a character offset.
  • GROUNDED: the quotation checks passed.
  • REFUSED_UNVERIFIED_CLAIMS: fewer than the required verified sources, or a quote failed verbatim verification.
  • SOURCE_EXTRACTION_FAILED: a named source could not be fetched or extracted.

The refusal is the product's whole claim. The test harness observes the grounded case and the refusal case red before making each green, so neither path can pass on a test that has never failed.

Swapping the stub for a real provider

The research provider is an injectable seam. synthesizeGroundedReport takes a provider argument, and the fetch handler reads env.researchProvider. The default is createFixtureProvider(), which searches a fixed corpus of three source documents and never makes a network call.

A real provider implements the same two methods:

js
{  async search(query, numResults, domainsFilter) {    // Return [{ url, title }] from your search backend.  },  async extract(url) {    // Return { ok: true, document: { url, title, markdown, via } } on success, or    // { ok: false, source_url: url, stage, reason } on failure.  },}

Wire one in by exporting it on the Worker environment, for example with an Exa search key and a Firecrawl scrape key held as Worker secrets. The reference never hard-codes a provider's unit cost and never names the hosted service's margin internals; the seam is the only thing a reader needs to change.

REST

bash
curl -i https://synthesis.getstringer.app/v1/synthesize \  -H 'Content-Type: application/json' \  --data '{"topic":"Base network USDC settlement","depth":"brief"}'

Free responses carry X-Stringer-Access-Tier: free and X-Stringer-Free-Remaining. The fourth call returns HTTP 402. See openapi.json and RECIPES.md for the full flow.

MCP

Streamable HTTP at https://synthesis.getstringer.app/mcp. Clients must send both application/json and text/event-stream in Accept. The server implements initialize, ping, tools/list, and tools/call for synthesize_intelligence.

Test

bash
node --test test_discovery.mjs test_worker.mjspython3 -m py_compile client_sdk.py

License

MIT. See LICENSE.

Source: README.md at commit e1970f9

Tools

1

synthesize_intelligence

Return extractive quotations with citations and source provenance from verified public sources. The first 3 calls are free, total, with no signup and no claim header. The allowance does not reset. Free calls include web discovery when no source URLs are given.

Parametersdepthtopicrequiredsource_urlsdomains_filter

Version history

2
  1. v0.1.1LatestSep 26, 2026
  2. v0.1.0Sep 20, 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

Other Getstringer integrations