Skip to main content
ReferenceMCP toolDraft · not yet verified

e_property

Discover and manage properties — label:value pairs that enable structural retrieval.

Agent Guidance​

This is the description the engine gives an agent for this tool, word for word.

Discover and manage properties — label:value pairs that enable structural retrieval.

Actions:

  • list — labels that exist (within your read scope).

  • intersect — match=["label"] (category) or ["label:value"] (exact); returns matching values/SRs.

  • find — term="..." keyword search across labels and values.

  • add — attach properties to SR(s) you can WRITE: sr_id (string or list) + properties=["label:value", ...]. Add-only and idempotent. A closed lane rejects labels outside its vocabulary; reserved e_* labels are engine-only and rejected; adding to an SR you can read but not write is refused.

  • remove — sr_id + properties (those values) and/or labels (whole labels).

  • connect — assert a NAMED RELATION between exactly two SRs: sr_id=[a, b] + hint="employs" → the engine stamps e_connect:employs_3049e7c1b82d4f6a9e05c3d71a8b2f64 on both. The edge IS the shared value, so it is bidirectional and all-or-nothing: if either side is unwritable or missing, nothing is written.

  • group — assert a NAMED MEMBERSHIP among two or more SRs: sr_id=[...] + hint="poker night" → e_group:poker_night_a71f0d93c6e248b5f17a2c04e9d863b5 on each. A two-member group is legal and is NOT an edge.

  • disconnect — sr_id=[a, b]: removes their shared e_connect from both, all-or-nothing. Sharing several? Name one with hint (token or hint).

  • ungroup / unadjust — hint="e_group:<token>" / "e_adjustment:<token>", optional sr_id=[...] (none = every holder you can see): removes it; unwritable ones are skipped and reported (skipped_unwritable, with their lanes in unwritable_lanes).

Never express a relationship by putting another entity's name on a record — that is ambiguous with the record's own identity. State identity with name:, assert structure with connect/group. You supply the meaning (hint); the engine supplies the uniqueness.

Always list/intersect before inventing a label — reuse what exists.

Arguments​

ArgumentTypeDefault
actionlist · intersect · find · add · remove · connect · group · disconnect · ungroup · unadjustrequired
matchlist of strings—
termstring—
sr_idstr | list of strings—
propertieslist of strings—
labelslist of strings—
hintstring—
pageinteger1
page_sizeinteger20
agent_profilestring—

Refusals​

A refusal is returned as {"error": "…"}. These are the ones this tool raises itself; … stands for a value filled in at the time.

Text
Invalid action '…'. Must be one of: …
remove requires properties (['label:value', ...]) and/or labels (['label', ...])
remove requires sr_id (string or list of strings)
agent_profile has no write lane
add requires properties (list of 'label:value' strings)
add requires sr_id (string or list of strings)
no writable records among … — not found: …, outside write authority: …. Nothing was written.
find action requires term
not found
intersect action requires match
not writable: lane '…' is not in this agent_profile's write authority