propose_wikilinks
Scan Obsidian vault pages for entity-like phrases and suggest wikilinks to matching pages. Works on a single page or across a folder scope with optional auto-apply.
Instructions
Scan vault pages for entity-shaped phrases and propose wikilinks to other vault pages that share the same slug. Two modes:
(1) single-page — pass path, get a ranked list of {phrase, wikilink, occurrences} for that one page.
(2) scope — pass scope (glob/folder), scan every matching page using one shared slug index (much faster than calling repeatedly), get aggregated suggestions across pages.
With apply: true in scope mode, Margins stages one rewritten page per scanned page (a propose_page proposal that replaces every candidate phrase with its wikilink). Apply mode preserves the proposal-review contract — nothing lands until resolve_proposal accepts.
Useful for A3/B3 personas (many files, few wikilinks): scope across a folder finds entity references that already have target pages.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "propose_wikilinks"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Page path for single-page mode, e.g. 'wiki/career/career.md'. Mutually exclusive with scope. | |
| apply | No | Only meaningful in scope mode. When true, stage a rewritten page per scanned page with all wikilink suggestions applied (one propose_page per page, NOT per phrase). Review/accept via list_proposals + resolve_proposal. Default false (suggest only). | |
| scope | No | Glob for bulk-scope mode, e.g. 'wiki/sources/**' or 'Anatomy/*.md'. Mutually exclusive with path. | |
| maxPages | No | Cap on pages scanned in scope mode. Default 50. | |
| maxSuggestions | No | Cap on suggestions per page. Default 15. |