Search Fragments
Pieces together films, shows, songs, books, quotes, places and studies from remembered fragments.
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)
Pieces together the name of a film, TV or radio show, song, book, game, quote, person, place, event or research study from the fragments a user remembers: a scene, a line, a face, roughly when. Pass every fragment in the user's own words, even uncertain ones. It searches many sources and fits them together. A shortlist or an honest "can't place it" is still useful. Use it when your own search couldn't place it. Not for known titles, trivia, recommendations or checking claims (use verify_claim). When the user says whether this helped, report it with submit_resolution_feedback.
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 stored resolution."
},
"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",
"possible"
]
},
"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"
}
}
}
}
},
"leads": {
"type": "array",
"maxItems": 3,
"description": "Only on no_resolution for a Search Fragments question: up to 3 unconfirmed leads, best first. Not verified answers.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"creator",
"confidence",
"status",
"basis",
"matched_clues",
"unmatched_clues",
"url"
],
"properties": {
"title": {
"type": "string"
},
"creator": {
"type": [
"string",
"null"
]
},
"confidence": {
"type": "string",
"enum": [
"possible"
]
},
"status": {
"type": "string",
"enum": [
"unconfirmed"
]
},
"basis": {
"type": "string",
"enum": [
"reviewer_territory",
"model_guess",
"retrieved_page"
]
},
"matched_clues": {
"type": "array",
"items": {
"type": "string"
}
},
"unmatched_clues": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": [
"string",
"null"
]
}
}
}
},
"narrow_it": {
"type": "array",
"maxItems": 3,
"description": "Only on no_resolution for a Search Fragments question: up to 3 details that would narrow the search.",
"items": {
"type": "string"
}
},
"verification_state": {
"type": "string",
"enum": [
"SUPPORTED_RELATION",
"PARTIAL_EVIDENCE",
"INSUFFICIENT_EVIDENCE",
"VERIFICATION_FAILED"
]
},
"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"
]
}
},
"required": [
"outcome",
"resolution_id",
"candidate",
"summary",
"evidence",
"territory",
"verification_state",
"is_sf_question",
"pool",
"reject_reason"
],
"additionalProperties": false
}🟡submit_resolution_feedback(resolution_id, status, corrected_target, new_clue, note, ...)
After the user reacts to a resolve_fragment result, call this with its resolution_id. accepted: it is what they meant. partial: it helped but is not quite it. rejected: it is not what they meant. If they recognised an item in the shortlist or leads, send picked_rank (1 = first item) or picked_url; if nothing fitted, send none_fitted: true. corrected_target and new_clue are optional and are stored as feedback only; they never change graph facts.
Input Schema
{
"type": "object",
"properties": {
"resolution_id": {
"type": "number",
"description": "The resolution_id returned by the resolve_fragment call this feedback is about."
},
"status": {
"type": "string",
"enum": [
"accepted",
"rejected",
"partial"
],
"description": "accepted: the result is what the user meant. partial: it helped but is not quite it. rejected: it is not what the user meant."
},
"corrected_target": {
"type": [
"string",
"null"
],
"description": "Optional. What the user was actually thinking of, if they know it. Max 300 characters."
},
"new_clue": {
"type": [
"string",
"null"
],
"description": "Optional. An extra detail the user remembered after seeing the result. Max 500 characters."
},
"note": {
"type": [
"string",
"null"
],
"description": "Optional free-text note. Max 1000 characters. No personal data."
},
"picked_rank": {
"type": "integer",
"minimum": 1,
"description": "Position of the shortlist or lead item the user recognised."
},
"picked_url": {
"type": "string",
"description": "URL of the item the user recognised."
},
"none_fitted": {
"type": "boolean",
"description": "True if the user looked and nothing fitted."
}
},
"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)
Checks whether current web sources support a specific factual assertion. 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" Checks one specific factual statement. Not for identifying half-remembered works. Not this shape: - "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