Skip to main content
Glama
kush-coder

io.github.OpenOSINT/openosint

by kush-coder

graph_review_candidates

Review suggested same_as entity matches by listing pending candidates with scores and explanations, then accept to merge or reject to exclude them from future suggestions.

Instructions

Human review queue for suggested same_as entity matches produced by graph-dedup cross-referencing. action='list' shows pending candidates (score, identifying properties, human-readable match explanation), filterable by schema/score range/dataset. action='decide' records a human verdict on one pair: decision='accept' merges it (judgement='positive'), decision='reject' permanently excludes it from future suggestions (judgement='negative'). Nothing in this project ever auto-merges — only this action can write judgement='positive'. [passive] Reads the local graph database only.

Input Schema

NameRequiredDescriptionDefault
actionYes
schemaNolist filter: restrict to one FtM schema.
datasetNolist filter: either entity must carry a statement from this dataset.
decisionNo
entity_idNodecide: first entity of the pair.
max_scoreNolist filter: maximum score.
min_scoreNolist filter: minimum score.
json_outputNoReturn result as structured JSON.
reviewer_idNodecide: reviewer identifier, recorded if given.
canonical_idNodecide: second entity of the pair.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.36.1

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does much of it: it discloses that 'accept' merges the pair, that 'reject' permanently excludes it from future suggestions (an irreversible side effect), and that nothing auto-merges. The trailing '[passive] Reads the local graph database only' tag sits awkwardly against the merge-write behavior of 'decide', and permissions/auth requirements and pagination are not covered, keeping it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, followed by a tight action-by-action breakdown and a critical constraint sentence. It is dense but every sentence adds a fact an agent needs, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with no output schema and no annotations, the description covers actions, filters, verdict semantics and the no-auto-merge constraint well. Minor gaps remain: return shape is only sketched for 'list', and there is no mention of permissions, pagination, or the ambiguous '[passive]' classification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 80%, so the baseline is 3; the description adds real meaning on top by mapping filters (schema, score range, dataset) to the 'list' action and mapping entity_id/canonical_id/decision/reviewer_id to the 'decide' action. It also explains that decision='accept' means merge and 'reject' means permanent exclusion, which the bare enum values do not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and role: a 'human review queue for suggested same_as entity matches' produced by graph-dedup. This clearly distinguishes it from the sibling search_* tools and from graph_export/graph_neighbors, so an agent can identify it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description splits the tool by action and gives the condition for each: action='list' to browse pending candidates with filters, action='decide' to record a verdict. It also states the key selection fact that only this action can write judgement='positive'. It stops short of naming sibling alternatives to avoid (e.g. graph_neighbors for pure exploration), so it is strong but not fully exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.