submit_signal
Confirm, flag as wrong or correct one public finding on a registry organization, as the key's user (docs/verification.md). finding is a handle from get_organization (comp:<id>, val:<id>, flow:<id>, or link:<relation>:<other ref> from node=sec:links). confirm: it matches its source. flag: it is wrong, with a reason. correct: what it should say with source_url, a public page that states it (loaded and checked); it becomes a draft in the review queue and never overwrites the finding. withdraw takes your signal back. One signal per person per finding (sending again changes it); needs a verified email; 20 an hour. Weight follows the signer: the organization's verified owner 3, a track record 1.5, a member 1, accounts under 7 days 0.25; one per network counts. Returns the finding's new state and counts.
Parameters
- refstringrequired
The organization's registry ref, e.g. acme-builders-3f2a9c1d
max 200 chars - findingstringrequired
The finding, as get_organization names it: comp:<id>, val:<id> or flow:<id> (the 8-character handle or the full id), or link:<relation>:<other org ref> with relation funded_by, funds, parents or subsidiaries
max 200 chars - kindenumrequired
confirm: it matches its source. flag: it is wrong (reason required). correct: what it should say, with a public page that states it (source_url and correction required). withdraw: take your signal back.
confirmflagcorrectwithdraw - reasonstringoptional
Why it is wrong (flag)
max 500 chars - source_urlstringoptional
A public page that states the correction (correct)
max 2000 chars - correctionstringoptional
What the finding should say (correct)
max 500 chars
Example call
Agents call tools by name; you rarely write this by hand. It is here so you can test the server from a shell or your own code.
{
"name": "submit_signal",
"arguments": {
"ref": "acme-builders-3f2a9c1d",
"finding": "comp:3f2a9c1d",
"kind": "flag",
"reason": "Their careers page now lists Salesforce"
}
}Response
The result is one text content block holding this JSON (abbreviated here). Errors come back with isError: true and a message such as Error 401: … or Invalid input: ….
{
"finding": "component:3f2a9c1d-…",
"kind": "flag",
"role": "member",
"weight": 1,
"state": "contested",
"counts": {
"confirmations": 1,
"flags": 2,
"corrections": 0
},
"contribution": null
}Over REST
The same call without MCP: POST/api/v1/signals