Enox Usage Examples
Note: Response shapes below are illustrative — actual results depend on graph coverage. The Enox graph currently covers ~2,600 papers across ML, NLP, Systems, SE, Graph, and Security.
Connect first
Add Enox to your MCP config before using any tool:
{
"mcpServers": {
"enox": {
"type": "http",
"url": "https://enox.dev/mcp"
}
}
}
search — find an entity by name
Intent: Before using any other tool, find the exact entity ID that Enox uses internally.
Most tools accept a human-readable name and resolve it, but search lets you confirm what’s in the graph.
Invocation:
{ "query": "TransE", "limit": 5 }
Response shape:
{
"results": [
{
"id": "paper:transe",
"type": "paper",
"title": "Translating Embeddings for Modeling Multi-relational Data",
"year": 2013,
"domain": "Graph",
"citations": 12000
},
{
"id": "concept:knowledge-graph-embedding",
"type": "concept",
"label": "Knowledge Graph Embedding"
}
]
}
explore — all edges around a node
Intent: Understand what a paper or concept connects to — what it enables, extends, supersedes, or is superseded by.
Invocation:
{ "entity": "TransE" }
Response shape:
{
"entity": {
"id": "paper:transe",
"type": "paper",
"title": "Translating Embeddings for Modeling Multi-relational Data",
"year": 2013
},
"outgoing": [
"TransE --[supersedes]--> RESCAL (conf: 0.85)",
"TransE --[enables]--> Knowledge Graph Completion (conf: 0.90)"
],
"incoming": [
"RotatE --[supersedes]--> TransE (conf: 0.88)"
],
"total_edges": 3
}
query_failures — when does X fail?
Intent: Understand known limitations before recommending a method. Useful for filtering
candidates in decide — or for surfacing caveats before committing to an approach.
Invocation:
{ "entity": "TransE" }
Response shape:
{
"entity": {
"id": "paper:transe",
"type": "paper",
"title": "Translating Embeddings for Modeling Multi-relational Data"
},
"failures": [
{
"fails_on": "antisymmetric relations",
"condition": "symmetric/antisymmetric",
"confidence": 0.92
},
{
"fails_on": "1-to-N relations",
"condition": "multi-valued",
"confidence": 0.87
}
],
"count": 2
}
compare — head-to-head
Intent: Compare two methods directly to understand which supersedes the other, or how they relate.
Invocation:
{ "a": "Adam", "b": "AdamW" }
Response shape:
{
"a": {
"id": "concept:adam",
"type": "concept",
"label": "Adam optimizer"
},
"b": {
"id": "concept:adamw",
"type": "concept",
"label": "AdamW optimizer"
},
"relations": [
{
"direction": "AdamW → Adam",
"rel": "supersedes",
"note": "AdamW decouples weight decay from gradient update",
"confidence": 0.91
}
],
"summary": "Found 1 relation(s)."
}
find_equivalent — alternatives
Intent: Find competing or structurally parallel approaches — methods that solve the same problem from a different angle.
Invocation:
{ "entity": "BERT" }
Response shape:
{
"entity": {
"id": "paper:bert",
"type": "paper",
"title": "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding",
"year": 2018
},
"equivalents": [
{
"entity": {
"id": "paper:roberta",
"title": "RoBERTa: A Robustly Optimized BERT Pretraining Approach",
"year": 2019
},
"rel": "isomorphic_to",
"direction": "incoming",
"confidence": 0.80
},
{
"entity": {
"id": "paper:xlnet",
"title": "XLNet: Generalized Autoregressive Pretraining for Language Understanding",
"year": 2019
},
"rel": "isomorphic_to",
"direction": "incoming",
"confidence": 0.75
}
],
"count": 2
}
check_obsolete — has this been superseded?
Intent: Avoid recommending outdated methods. Run this before citing a classic technique to see if something better has replaced it.
Invocation:
{ "entity": "word2vec" }
Response shape:
{
"entity": {
"id": "paper:word2vec",
"type": "paper",
"title": "Efficient Estimation of Word Representations in Vector Space",
"year": 2013
},
"is_obsolete": true,
"superseded_by": [
{
"superseded_by": {
"id": "paper:glove",
"title": "GloVe: Global Vectors for Word Representation",
"year": 2014
},
"confidence": 0.76
},
{
"superseded_by": {
"id": "paper:bert",
"title": "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding",
"year": 2018
},
"confidence": 0.88
}
],
"supersedes": [],
"summary": "This method has been superseded by 2 newer work(s)."
}
decide — ranked recommendations
Intent: Given a task and constraints, get ranked methods to try. Enox filters out candidates with known failures that match your constraints, then ranks survivors by their win edges.
Invocation:
{
"task": "link prediction on knowledge graphs",
"constraints": ["antisymmetric relations"],
"limit": 5
}
Response shape:
{
"task": "link prediction on knowledge graphs",
"constraints": ["antisymmetric relations"],
"recommendations": [
{
"rank": 1,
"entity": {
"id": "paper:rotate",
"title": "RotatE: Knowledge Graph Embedding by Relational Rotation in Complex Space",
"year": 2019
},
"score": 3.21,
"wins": 2,
"known_failures": 0
},
{
"rank": 2,
"entity": {
"id": "paper:complex",
"title": "Complex Embeddings for Simple Link Prediction",
"year": 2016
},
"score": 2.87,
"wins": 1,
"known_failures": 1
}
],
"total_candidates": 34,
"after_filtering": 28
}
TransE was filtered out because
query_failuresshows it fails on antisymmetric relations — exactly the constraint you specified.
Typical workflow
This is the pattern an AI agent would follow to answer “what should I use for X?”:
Step 1 — find entity IDs
search("raft consensus")
→ Returns paper:raft and concept:distributed-consensus
Step 2 — understand the landscape
explore("Raft")
→ Shows that Raft supersedes Paxos, enables etcd and CockroachDB
Step 3 — check if your baseline is outdated
check_obsolete("Paxos")
→ is_obsolete: true, superseded by Raft and Multi-Paxos variants
Step 4 — get ranked recommendations with constraints
decide("distributed consensus", constraints=["byzantine faults"])
→ Returns PBFT, HotStuff, Tendermint — filtered and ranked by wins in the relevant failure modes
By chaining these four calls, an agent gets a defensible, evidence-backed recommendation in seconds rather than spending tokens on open-ended search.