Search Fragments

Pieces together films, shows, songs, books, quotes, places and studies from remembered fragments.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,071Tokens (tool definitions)
~6.2 KBTypical response size
Moderate attention impact (1.62% of 128k context)

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-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools
verifiedversion not recorded3 tools
verifiedversion not recorded3 tools
verifiedversion not recorded3 tools
verifiedversion not recorded3 tools
verifiedversion not recorded2 tools