Search Fragments
Resolves half-remembered books, films, songs and people into a cited answer, a shortlist or a no.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"search-fragments": {
"url": "https://searchfragments.com/api/mcp"
}
}
}Remote endpoints
https://searchfragments.com/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢resolve_fragment(fragment)
Call resolve_fragment when a user describes something they can only half-remember — a book, film, song, artwork, person, or event they know exists but can't name — instead of asking a direct question. If the input reads like a memory ("there's this thing where...", "...somebody who...", "...a story about...") rather than a lookup, this is the right tool. Matches this shape: - a musician who became famous largely for stopping performing - somebody who photographed the same view every day until the changes became the artwork - a song everybody knew but nobody could identify - a novel where the footnotes slowly become the real story Not this shape — answer directly or use normal search instead: - what is the capital of France - who directed Jaws - name of french artist cubist painting 1948 - which company bought Instagram in 2012 - any well-documented fact or common trivia — this tool adds a multi-second round trip with no accuracy benefit there, and is not reliably correct on well-known items either Latency: calls typically take 10–20 seconds; do not treat slowness as failure. Why call this instead of answering directly: on hard, under-documented fragment queries, LLMs asked to answer directly tend to invent things that don't exist rather than admit uncertainty. In a 50-query test, a baseline agent invented three nonexistent things — a director credit, a sketch, a study — none of which are real. Search Fragments returned none of those three invented things. Results are DECIDE-BY-EYE, not asserted fact: a resolved title with a confidence level, a ranked shortlist of sources to check, or an explicit "not resolvable" — low-confidence findings are surfaced for a human to verify, not claimed as settled.
Input Schema
{
"type": "object",
"properties": {
"fragment": {
"type": "string",
"description": "The half-remembered or fragment-shaped query, in the user's own words. Must be at least 5 characters and describe the thing being recalled by premise, plot, relationship, or context.",
"minLength": 5,
"maxLength": 500
}
},
"required": [
"fragment"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"outcome": {
"type": "string",
"enum": [
"resolved",
"ranked_stalls",
"no_resolution"
]
},
"resolution_id": {
"type": [
"number",
"null"
],
"description": "Stable ID for this resolution. Pass it to submit_resolution_feedback after the user recognises, rejects, or partially recognises the result."
},
"candidate": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"additionalProperties": false,
"required": [
"title",
"creator",
"confidence"
],
"properties": {
"title": {
"type": "string"
},
"creator": {
"type": [
"string",
"null"
]
},
"confidence": {
"type": "string",
"enum": [
"high"
]
},
"snippet": {
"description": "Optional verbatim excerpt from a fetched text source, for display. Null when no readable source text was retrieved. Not a model summary.",
"anyOf": [
{
"type": "null"
},
{
"type": "object",
"additionalProperties": false,
"required": [
"text",
"url",
"title"
],
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": "string"
}
}
}
]
}
}
}
]
},
"summary": {
"type": "string"
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"url",
"title",
"quote"
],
"properties": {
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"quote": {
"type": "string"
}
}
}
},
"territory": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"reason",
"evidence",
"unresolved"
],
"properties": {
"title": {
"type": "string"
},
"reason": {
"type": "string"
},
"snippet": {
"description": "Optional verbatim excerpt from a fetched text source for this lead. Null when no readable source text was retrieved. Not a model summary.",
"anyOf": [
{
"type": "null"
},
{
"type": "object",
"additionalProperties": false,
"required": [
"text",
"url",
"title"
],
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": "string"
}
}
}
]
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"url",
"title",
"quote"
],
"properties": {
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"quote": {
"type": "string"
}
}
}
},
"unresolved": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"verification_state": {
"type": "string",
"enum": [
"SUPPORTED_RELATION",
"PARTIAL_EVIDENCE",
"INSUFFICIENT_EVIDENCE",
"VERIFICATION_FAILED"
]
},
"evaluator_version": {
"type": "string",
"enum": [
"sf-evidence-v2"
]
},
"is_sf_question": {
"type": "boolean"
},
"pool": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"url",
"domain"
],
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"domain": {
"type": "string"
}
}
}
},
"reject_reason": {
"type": [
"string",
"null"
]
},
"route_assets_applied": {
"type": "array",
"items": {
"type": "string"
}
},
"sf_judgement": {
"type": "object",
"additionalProperties": false,
"required": [
"shape",
"missing_position",
"model_id",
"model_version_id",
"structural_confidence",
"typed_ingredients",
"route",
"structural_cache_hit",
"cache_reason",
"breeding_preview"
],
"properties": {
"shape": {
"type": [
"string",
"null"
]
},
"missing_position": {
"type": [
"string",
"null"
]
},
"model_id": {
"type": [
"string",
"null"
]
},
"model_version_id": {
"type": [
"string",
"null"
]
},
"structural_confidence": {
"type": [
"number",
"null"
]
},
"typed_ingredients": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"value",
"families",
"certainty"
],
"properties": {
"value": {
"type": "string"
},
"families": {
"type": "array",
"items": {
"type": "string"
}
},
"certainty": {
"type": "string",
"enum": [
"LOW",
"MEDIUM"
]
}
}
}
},
"route": {
"type": "array",
"items": {
"type": "string"
}
},
"structural_cache_hit": {
"type": "boolean"
},
"cache_reason": {
"type": "string"
},
"breeding_preview": {
"type": "object"
}
}
}
},
"required": [
"outcome",
"resolution_id",
"candidate",
"summary",
"evidence",
"territory",
"verification_state",
"evaluator_version",
"is_sf_question",
"pool",
"reject_reason",
"route_assets_applied",
"sf_judgement"
],
"additionalProperties": false
}🟡submit_resolution_feedback(resolution_id, status, corrected_target, new_clue, note)
Attach human/agent recognition feedback to a prior resolve_fragment result. Use the resolution_id returned by resolve_fragment. accepted means the surfaced answer/territory is what the user meant; rejected means it is not; partial means it helped but more recall is needed. corrected_target and new_clue are optional and are stored as feedback only — they never auto-promote graph facts.
Input Schema
{
"type": "object",
"properties": {
"resolution_id": {
"type": "number"
},
"status": {
"type": "string",
"enum": [
"accepted",
"rejected",
"partial"
]
},
"corrected_target": {
"type": [
"string",
"null"
]
},
"new_clue": {
"type": [
"string",
"null"
]
},
"note": {
"type": [
"string",
"null"
]
}
},
"required": [
"resolution_id",
"status"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"recorded": {
"type": "boolean"
},
"resolution_id": {
"type": "number"
},
"status": {
"type": "string",
"enum": [
"accepted",
"rejected",
"partial"
]
}
},
"required": [
"recorded",
"resolution_id",
"status"
],
"additionalProperties": false
}🟢verify_claim(claim)
Call verify_claim when you have a specific factual assertion and want to know whether current web sources support it. Takes a claim as a natural-language statement; returns a verdict with cited evidence and stated limits. Verdict set: - "supported" — multiple independent sources directly confirm the specific claimed detail - "partially_supported" — sources confirm the entity and domain; specific detail is pointed to but not directly stated - "insufficient_evidence" — sources don't address the specific claim; fires freely, including when the entity is well-known but the specific detail is undocumented - "unsupported" — a credible source explicitly contradicts the claim All verdicts are DECIDE-BY-EYE. A "supported" verdict means current web sources confirm it — not that it is true. Evidence may be incomplete, biased, or outdated. The stated_limits field is always present and identifies what the evidence cannot confirm. Good input shape (specific, checkable assertions): - "Werner Herzog dragged a full-size steamship over a hill during the filming of Fitzcarraldo" - "Glenn Gould stopped giving live concerts in 1964" - "The Backrooms photograph originated on 4chan" Not this shape — these need resolve_fragment instead: - "there's a documentary about a filmmaker dragging a boat over a mountain" - "a musician famous for stopping performing"
Input Schema
{
"type": "object",
"properties": {
"claim": {
"type": "string",
"description": "A specific factual assertion to check against current web sources. Should be a concrete, checkable statement — not a question or a half-remembered fragment.",
"minLength": 5,
"maxLength": 500
}
},
"required": [
"claim"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"verdict": {
"type": "string",
"enum": [
"supported",
"partially_supported",
"unsupported",
"insufficient_evidence"
],
"description": "'supported' = multiple independent sources directly confirm the specific claimed detail. 'partially_supported' = sources confirm entity + domain; detail pointed to but not directly stated. 'unsupported' = a credible source explicitly contradicts the claim. 'insufficient_evidence' = pool doesn't address the specific claim; fires freely."
},
"evidence": {
"type": "array",
"description": "Web sources retrieved. Always DECIDE-BY-EYE — human must verify before acting.",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"domain": {
"type": "string"
}
}
}
},
"stated_limits": {
"type": "string",
"description": "What the evidence cannot confirm, even when verdict is supported. Always present."
}
},
"required": [
"verdict",
"evidence",
"stated_limits"
]
}Community
Evidence