Skip to main content
Glama
sin3000x

semantica

by sin3000x

Semantica agent 接入入门

这是一个可以直接运行的 Semantica 小项目,专门回答一件事:

agent 是怎么接到 Semantica 上的?

结论先说清楚:

  • Semantica 不是 agent 框架。

  • 它不调度工具、不跑 ReAct、不管理 multi-agent 对话。

  • 它是 agent 下面的语义层:记忆、知识图谱、决策审计。

  • 任何 agent(自己写的循环、Agno、LangChain、CrewAI、Claude、Cursor)都通过同一组插头接入。

你的 agent(自己写 / Agno / LangChain / CrewAI / Claude)
        │
        ├── memory     AgentContext.store / list
        ├── knowledge  ContextGraph.add_node / query
        ├── decisions  record_decision / 因果链
        └── tools      框架 Toolkit 或 MCP
        ▼
   Semantica

五课默认不需要 LLM。第 2 课的决策可以额外接本地 runtime 或云端 API key,两者走同一条 OpenAI 兼容插头。

0. 环境

  • Python 3.11+

  • uv

Intel macOS 会自动钉住仍提供 x86_64 轮子的 torch / onnxruntime / numba。其它平台由 Semantica 自己解析依赖。

Related MCP server: Engram-Mem

1. 安装

git clone https://github.com/sin3000x/semantica-agent-starter.git
cd semantica-agent-starter
uv sync

验证:

uv run python --version
uv run python -c "import semantica; print(semantica.__version__)"
uv run python main.py doctor

第一次创建 VectorStore 可能下载 embedding 模型;第一次导入 Semantica 也会比较慢。

2. 开始上课

uv run python main.py
uv run python main.py 1

做什么

1

插头就是 AgentContext:写入记忆 + record_decision

2

采购 agent:感知 → 查先例 → 决策 → 落盘

3

两个 agent 不发消息,读写同一张 ContextGraph

4

Agno / LangChain / CrewAI 只是把四个插座包成框架对象

5

Claude / Cursor 走 MCP:python -m semantica.mcp_server

uv run python main.py all

3. 可选:接 LLM(runtime 或 API key)

第 2 课默认用规则:延期天数 > 库存天数 就升级。规则一直可测、可回退。

配置了 LLM 之后,decide() 会先问模型;解析失败或连不上就退回规则。Semantica 仍然只负责记住决定。

复制环境文件:

cp .env.example .env

本地 runtime(无 key)

OpenCode 是一等 runtime:默认调用本机 opencode run,用你已经 opencode auth login 过的模型,不必再配一份 API key。

# 先装 OpenCode,并完成登录
# curl -fsSL https://opencode.ai/install | bash
# opencode auth login

SEMANTICA_LLM=opencode
# 可省略,缺省用 OpenCode 当前默认模型
# SEMANTICA_LLM_MODEL=anthropic/claude-sonnet-4-5

已经 opencode serve 时,让 CLI 挂到现有服务上,避免每次冷启动:

SEMANTICA_LLM=opencode
OPENCODE_ATTACH=http://127.0.0.1:4096

若你跑的是 OpenCode 的 OpenAI 兼容代理(例如 opencode-llm-proxy:4010),把地址写成 /v1 即可:

SEMANTICA_LLM=opencode
SEMANTICA_LLM_BASE_URL=http://127.0.0.1:4010/v1

也适合 Ollama、vLLM、LM Studio,以及任何 OpenAI 兼容服务。

# Ollama
ollama pull llama3.1
# .env
SEMANTICA_LLM=ollama
SEMANTICA_LLM_MODEL=llama3.1
OLLAMA_HOST=http://127.0.0.1:11434
# LM Studio / vLLM
SEMANTICA_LLM=compat
SEMANTICA_LLM_BASE_URL=http://127.0.0.1:1234/v1
SEMANTICA_LLM_MODEL=local-model
SEMANTICA_LLM_API_KEY=local

云端 API + key

默认推荐 SpaceXAI / xAI(OpenAI 兼容,XAI_API_KEY)。

XAI_API_KEY=xai-...
# 可省略 SEMANTICA_LLM,有 XAI_API_KEY 就会自动选 xai
SEMANTICA_LLM_MODEL=grok-4.6

也可以用 OPENAI_API_KEYGROQ_API_KEY。探测顺序:显式 SEMANTICA_LLMXAI_API_KEYOPENAI_API_KEYGROQ_API_KEY

uv run python main.py doctor
uv run python main.py 2

不要把 .env 提交进 git。

4. MCP

配置样例在 mcp/。把 /ABS/PATH/TO/semantica-agent-starter 换成你的克隆路径。

uv run python -m semantica.mcp_server

5. 测试

uv run pytest

tests/test_llm.py 不访问网络。课程测试第一次大约需要几分钟(Semantica 导入和 VectorStore 初始化比较重)。

测试检查的是接入约束:

  • agent 写入的记忆和决定都能读回来

  • 规则 agent 的第二次决定能追溯到第一次

  • 两个 agent 共享同一张图

  • 没配 key 时不会误接 LLM;配了坏响应会回退规则

6. 官方框架怎么接

框架

接到哪

自己写循环

直接调 AgentContext

Agno

AgnoContextStore + AgnoDecisionKit + AgnoSharedContext.bind_agent

LangChain

SemanticaKGTool + SemanticaDecisionTool + SemanticaRetriever

CrewAI

SemanticaKGTool + SemanticaDecisionTool + SemanticaKnowledgeSource

Claude / Cursor

MCP

本项目不安装这些 extra。第四课用一个小适配器把同样的四个插座跑通。

License

MIT

Available Tools

12 tools
add_entityB

Add a node/entity to the Semantica knowledge graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique node ID
typeNoNode type, e.g. 'Person', 'Organisation'
labelNoHuman-readable label
metadataNoAdditional properties

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations and no behavioral details, the description only says 'add' without explaining idempotency, duplicate handling, whether existing nodes are updated, or what the operation returns. This leaves important mutation semantics unspecified.

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?

The description is a single, direct sentence with no redundant wording or irrelevant details. It is optimally concise.

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

Completeness2/5

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

The description covers the basic operation but omits important operational context such as uniqueness constraints, failure behavior, return value, and relationship to other tools. An agent would have to infer or discover these details elsewhere.

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

Parameters3/5

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

Schema coverage is 100%, so the parameters are already well-documented in the schema. The description does not add parameter-level meaning, but the schema sufficiently covers it, warranting the baseline score.

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?

Clearly states the operation ('Add') and the resource ('a node/entity to the Semantica knowledge graph'). This distinguishes it from the sibling 'add_relationship' tool by specifying the graph element type.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus alternatives like add_relationship, nor any exclusions or preconditions. The usage context is only implied by the tool name and description.

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

add_relationshipB

Add a directed relationship (edge) between two entities in the knowledge graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoRelationship type, e.g. 'WORKS_AT'
sourceYesSource node ID
targetYesTarget node ID
metadataNoAdditional edge properties

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that it adds a relationship, implying a mutation, but does not disclose side effects, error conditions, requirements for entity existence, or whether the operation is idempotent. The absence of such details leaves the agent uncertain about the tool's behavior.

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?

The description is a single, efficient sentence that front-loads the action and resource. There is no unnecessary detail or repetition, making it concise and well-structured.

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

Completeness2/5

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

The tool has 4 parameters including a nested object and no output schema. The description does not explain return values, failure modes, or whether the operation is conditional (e.g., if entities must exist). This is insufficient for an agent to confidently invoke the tool, especially as a mutation operation.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter is already documented in the schema. The description adds minimal extra meaning, only clarifying that source and target refer to entities and that the relationship is directed. This meets the baseline for high schema coverage but does not enrich parameter understanding.

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?

The description clearly states the verb 'Add' and the resource 'directed relationship (edge) between two entities in the knowledge graph.' It distinguishes this from sibling tools like add_entity (which adds an entity) and extract_relations (which extracts relations from text) by specifying the exact operation on graph edges.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternative guidance is provided, but the purpose is implied: use this when you need to create a link between existing entities. The description does not mention exclusions or prerequisites (e.g., entities must exist), leaving some ambiguity.

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

export_graphA

Export the current knowledge graph. Formats: turtle, ttl, nt, xml, json-ld, json.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoExport format (default: json-ld)

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It conveys a read-only snapshot-like action, but it does not explicitly state that the tool has no side effects, whether the output is returned inline or as a file, or any constraints like size limits.

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

Conciseness4/5

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

The description is short and front-loaded with the key action. The format list is somewhat redundant with the schema enum, but it is compact and harmless, so there is minimal wasted text.

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

Completeness3/5

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

For a simple one-parameter tool, the description covers the core purpose and format options, but without an output schema it leaves ambiguity about what the exported result looks like. An agent might need extra context on whether the response is a serialized graph string, a file path, or a download action.

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

Parameters3/5

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

The schema already fully describes the single optional 'format' parameter with an enum covering all valid values, so the description adds no new semantic meaning. The format list in the description mirrors the schema rather than extending it, meeting the baseline but not exceeding it.

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?

The description uses a specific verb ('Export') and resource ('the current knowledge graph'), making the tool's action unmistakable. It also lists concrete output formats, which distinguishes it from sibling tools that summarize or analyze the graph.

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

Usage Guidelines3/5

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

The description implies when to use this tool — when you need the full graph in a serialized format — but it never explicitly contrasts it with alternatives like get_graph_summary or get_graph_analytics. There is no 'if you need X, use Y instead' guidance, leaving the routing decision to inference.

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

extract_entitiesB

Extract named entities (people, places, organisations, concepts) from text using Semantica NER.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesInput text to extract entities from

TDQS

B3.3/5.0
Behavior2/5

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

The description only states that it uses Semantica NER and extracts entities. With no annotations provided, the description carries the full burden, but it does not disclose whether the tool is read-only, mutates any stored data, has input size limits, returns a list/JSON, or has any rate/error behavior. 'Extract' implies pure inference, but this is not confirmed.

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?

A single sentence that front-loads the verb, resource, and processing engine with zero wasted words. It communicates the core operation immediately and is structurally clean.

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

Completeness3/5

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

For a one-parameter extraction tool, the description covers the main purpose, but with no output schema and no annotations, the agent is left guessing about the result format, side effects, and failure conditions. Given the richness of sibling tools (e.g., add_entity), it should at least mention that this is a readonly extraction or that the result is a list of entity mentions.

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

Parameters3/5

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

The input schema has 100% description coverage for the only parameter, 'text', so the description does not need to add much. The description adds marginal entity-type context but no deeper semantics about text length, language, formatting, or what 'text' should contain beyond the schema's basic explanation.

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?

Uses a specific verb and resource ('extract named entities... from text') and lists the entity categories (people, places, organisations, concepts). This clearly distinguishes it from sibling tools like extract_relations, which targets relationships, and add_entity, which likely writes to the graph rather than extracting from text.

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

Usage Guidelines2/5

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

No mentions of when to use this over alternatives or exclusions. It does not reference sibling tools such as extract_relations, add_entity, or run_reasoning, leaving the agent to infer the appropriate context from the name alone.

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

extract_relationsA

Extract relations and (subject, predicate, object) triplets from text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesInput text to extract relations from

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the operation without mentioning read-only nature, output format, or any side effects. For a tool that extracts relations, the read-only assumption is implied but not explicitly stated, leaving an agent without complete behavioral context.

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?

The description is a single, front-loaded sentence with no redundant phrasing. Every word contributes to conveying the purpose, making it highly concise and easy to parse.

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?

Given the tool's simplicity (one parameter, no output schema), the description is adequate for basic use. It clarifies the core operation but does not specify the output format (e.g., list of triplets) or any constraints. Since no output schema exists, describing the return shape would improve completeness, but the current description is sufficient for straightforward extraction.

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

Parameters3/5

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

The schema description for the single parameter 'text' is already descriptive ('Input text to extract relations from'), achieving 100% coverage. The description's mention of 'from text' adds no new meaning beyond what the schema provides, so it meets the baseline for high schema coverage.

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?

The description states a specific verb ('extract') and resource ('relations and (subject, predicate, object) triplets') from text, making the tool's function immediately clear. It also distinguishes it from sibling 'extract_entities', which focuses on entities rather than relations.

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

Usage Guidelines3/5

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

The description implies usage when relations need to be extracted from text, but provides no explicit when-to-use guidance or exclusions. It does not mention alternative tools like 'extract_entities' or clarify when this tool should be preferred.

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

find_precedentsB

Find past decisions similar to a given scenario using hybrid similarity search.

ParametersJSON Schema
NameRequiredDescriptionDefault
scenarioYesScenario description to find precedents for
max_resultsNoMax results (default 5)

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It discloses the hybrid similarity search behavior, which implies a read-only semantic lookup, but does not state that it is non-destructive, how results are ordered, or what the return payload looks like.

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?

One compact sentence with no filler; the core action and method are front-loaded. It is easy to scan and every word contributes to understanding.

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

Completeness3/5

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

For a two-parameter search tool the description is minimally adequate, but with no output schema or annotations it still leaves uncertainty about return structure and lacks usage context relative to sibling query tools. It could be improved with a note on result ranking or a sample of what is returned.

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

Parameters3/5

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

The input schema already documents both parameters with 100% coverage, so the description is not required to add much. It adds little beyond 'hybrid similarity search' and does not elaborate on max_results behavior or format, so the baseline of 3 applies.

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

Purpose4/5

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

The description uses a specific verb ('find'), a clear resource ('past decisions'), and a scope qualifier ('similar to a given scenario') that signals semantic matching. It does not explicitly contrast with sibling query_decisions, but the hybrid similarity phrasing helps an agent tell them apart.

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

Usage Guidelines2/5

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

No guidance is given on when to use find_precedents over query_decisions, run_reasoning, or get_causal_chain, nor are there exclusions or prerequisites. An agent must infer the use case from the name and description alone.

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

get_causal_chainC

Trace the causal chain upstream or downstream from a decision.

ParametersJSON Schema
NameRequiredDescriptionDefault
directionNoTrace direction
max_depthNoMax chain depth (default 5)
decision_idYesDecision ID to trace

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral details. It only states the action without disclosing output format, side effects, or any constraints. There is no mention of whether it is read-only, what happens if the decision is missing, or how results are structured.

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?

The description is a single, concise sentence that immediately states the action. It is front-loaded with the core purpose and contains no extraneous words, making it efficient and easy to parse.

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

Completeness2/5

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

The tool has no output schema, and the description does not describe what the returned causal chain looks like or any behavioral nuances. It also fails to mention default behavior (e.g., max_depth default) beyond what the schema provides. Given the lack of annotations and output schema, the description is incomplete for an agent to call it correctly.

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

Parameters3/5

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

The schema provides 100% coverage of parameter descriptions, so the description does not need to add parameter details. It does not offer extra meaning beyond the schema, which aligns with the baseline score of 3 for high schema coverage.

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

Purpose4/5

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

The description clearly states the action: 'Trace the causal chain upstream or downstream from a decision.' It identifies a specific verb and resource, and the phrase 'causal chain' distinguishes it from sibling tools like query_decisions or find_precedents, though it does not explicitly name alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus others. It does not mention conditions, exclusions, or alternatives, leaving the agent to infer usage from the tool name and context. This is a notable gap.

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

get_graph_analyticsA

Compute PageRank centrality and community detection over the knowledge graph.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not explicitly state that this is a read-only operation, whether it mutates the graph, what the output shape is, or whether computation may be expensive or require prior graph construction.

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?

The description is a single concise sentence with no filler. Every phrase adds meaning: the action, the target, and the specific analytics computed.

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

Completeness3/5

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

With no annotations and no output schema, the description leaves the return format and side-effect profile unstated. However, for a zero-parameter analytics tool, the core invocation intent is adequately conveyed.

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?

The tool has zero parameters and the schema coverage is 100%, so there is no parameter documentation burden. The baseline of 4 applies because no parameter semantics are needed.

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?

The description names a specific operation (compute), the target resource (knowledge graph), and the concrete algorithms (PageRank centrality and community detection). This clearly distinguishes it from siblings like get_graph_summary or get_causal_chain, which serve different purposes.

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 implies the use case: call this tool when graph-level analytic metrics are needed. It does not explicitly name alternatives or exclusions, but the algorithm names make the selection context clear enough for an agent.

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

get_graph_summaryA

Return a high-level summary of the current knowledge graph: node count, decision count, status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral disclosure. It states it returns a summary, implying read-only behavior, but does not explicitly say it is non-destructive or describe any performance implications. There is no contradiction, but the description is minimal.

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?

The description is a single sentence, front-loaded with the verb and resource, and contains no filler. It efficiently communicates the purpose and contents.

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 simple, zero-parameter read tool with no output schema, the description adequately conveys what the agent will receive. It could clarify how this differs from get_graph_analytics, but it is otherwise sufficient for a high-level summary.

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?

The tool has zero parameters, so the schema is empty and coverage is trivially 100%. The baseline for 0-parameter tools is 4, and the description does not need to explain any parameters since none exist.

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?

The description states a specific verb ('Return') and resource ('knowledge graph'), and explicitly lists the contents (node count, decision count, status). It clearly distinguishes itself as a high-level summary, which differentiates it from sibling get_graph_analytics that likely provides deeper analytics.

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

Usage Guidelines3/5

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

The description implies when to use it (when a high-level summary is needed) but does not explicitly mention alternatives or when not to use it. For a zero-parameter read tool, this is acceptable but could be more explicit about the distinction from get_graph_analytics.

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

query_decisionsB

Query recorded decisions by natural language, category, or get all recent decisions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10)
queryNoNatural language query (optional)
categoryNoFilter by category (optional)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It discloses the query modes but doesn't mention behavior like default limit, ordering, pagination, or whether 'all recent decisions' requires no parameters. The default limit of 10 is only in the schema, not the description, and the description doesn't clarify what 'recent' means.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the main action and lists the query modes efficiently. It earns its place with no wasted words, though it could be slightly more structured.

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

Completeness3/5

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

For a read-only query tool with 100% schema coverage and no output schema, the description is adequate but not complete. It doesn't explain return format, ordering, or how the three modes interact (e.g., can query and category be combined?). The lack of annotations raises the burden, and the description doesn't fully meet it.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds the concept of 'natural language' and 'category' as query modes, which aligns with the parameters, but doesn't add detail beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description states a clear verb ('Query') and resource ('recorded decisions') and lists three access modes: natural language, category, or all recent decisions. It distinguishes itself from sibling tools like record_decision (write) and find_precedents (precedent search), though it doesn't explicitly name them.

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

Usage Guidelines3/5

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

The description implies usage for retrieving decisions, and the optional parameters suggest flexible querying. However, it doesn't explicitly state when to use this tool over siblings like find_precedents or get_graph_summary, nor does it mention any exclusions or alternatives.

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

record_decisionC

Record a decision into the Semantica knowledge graph with full context, causal links, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
outcomeYesDecision outcome, e.g. 'approved'
categoryYesDecision category, e.g. 'loan_approval'
scenarioYesNatural-language situation description
reasoningYesWhy this decision was made
confidenceYesConfidence score 0–1
valid_fromNoISO date validity start (optional)
valid_untilNoISO date validity end (optional)
decision_makerNoWho/what made the decision

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it falls short. It does not state whether the operation is idempotent, whether duplicate decisions are prevented, whether existing records are merged or overwritten, what prerequisites exist (e.g., do entities need to already exist for causal links?), or what happens on success. The mention of 'causal links' raises more questions than it answers about how linking is handled.

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

Conciseness4/5

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

The description is a single efficient sentence with the verb front-loaded, containing zero fluff or redundancy. However, it is so terse that it omits behavioral and usage context that would justify a few more words. Efficiency is high, but the economy comes at the cost of necessary guidance.

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

Completeness2/5

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

For a write tool with 8 parameters, no annotations, and no output schema, the description is incomplete. It does not disclose prerequisites (such as whether referenced entities must pre-exist for causal linking), does not indicate what the tool returns on success or failure, and does not clarify the linking behavior implied by 'causal links'. An agent calling this tool has no way to predict side effects or failure modes.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 per the rubric. The schema already documents all 8 parameters with clear examples ('approved', 'loan_approval'). The description's mention of 'full context, causal links, and metadata' does not map to any specific parameters and adds no semantic value beyond the schema. This is a case where the schema does the heavy lifting and the description adds nothing extra.

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

Purpose4/5

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

The description states a specific verb ('Record'), resource ('decision'), and destination ('Semantica knowledge graph'), which makes the core purpose clear. However, it does not explicitly differentiate from siblings like add_entity or add_relationship, leaving the agent to infer why this tool is distinct. The phrase 'full context, causal links, and metadata' hints at scope but is not specific enough to separate it from the other write tools.

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

Usage Guidelines2/5

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

The description gives zero guidance on when to use this tool versus siblings such as add_entity, add_relationship, or run_reasoning. There is no 'use when' or 'use instead' language, and no indication of whether this tool is preferred for decision-specific writes versus generic entity or relationship additions. An agent must guess at the routing logic based solely on the name.

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

run_reasoningA

Run forward-chaining IF/THEN rules over a set of facts to derive new facts.

ParametersJSON Schema
NameRequiredDescriptionDefault
factsYesList of fact strings, e.g. ['Person(John)', 'Employee(John)']
rulesYesIF/THEN rule strings, e.g. ['IF Employee(?x) THEN WorkerBee(?x)']

TDQS

A3.6/5.0
Behavior2/5

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

There are no annotations, so the description must carry the full transparency burden. It never states whether derived facts are persisted, returned transiently, or materialized into the graph, leaving side effects ambiguous for a non-read-only-looking operation.

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?

One tight sentence that front-loads the verb, key input concept (facts + rules), and purpose. No filler or redundancy.

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

Completeness2/5

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

Without annotations or an output schema, the description should clarify what the caller receives and whether state changes. It does not disclose persistence, return value, failure behavior, or inference output structure, leaving an agent with incomplete execution expectations.

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

Parameters3/5

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

The input schema already documents both parameters with examples, so the baseline is adequate. The description's 'IF/THEN' and 'forward-chaining' wording clarifies rule semantics but adds no new constraints, formats, or parameter-level behavior.

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?

Description states a specific action ('Run forward-chaining IF/THEN rules'), a clear input ('facts'), and a distinct outcome ('derive new facts'). This clearly differentiates the tool from sibling extraction, query, and graph-mutation tools.

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 implies a clear usage context: use when you have facts plus rules and want derived facts. It does not explicitly name exclusions or when not to use it, but it is specific enough to route an agent effectively.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.0
    • First observedadd_entity
    • First observedadd_relationship
    • First observedexport_graph
    • First observedextract_entities
    • First observedextract_relations
    • First observedfind_precedents
    • First observedget_causal_chain
    • First observedget_graph_analytics
    • First observedget_graph_summary
    • First observedquery_decisions
    • First observedrecord_decision
    • First observedrun_reasoning

TDQS

A3.6/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a clearly distinct operation: extraction, knowledge graph mutation, decision querying, reasoning, analytics, and export. There is no meaningful overlap or ambiguity between the tool purposes.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern, such as extract_entities, record_decision, query_decisions, and get_graph_analytics. The naming is predictable and easy to navigate.

Tool Count5/5

Twelve tools is well-scoped for a knowledge graph and semantic reasoning server. Each tool covers a distinct capability without unnecessary bloat.

Completeness3/5

The tool set covers creation, querying, reasoning, analytics, and export, but lacks update/delete operations for entities, relationships, or decisions. This is a notable lifecycle gap that agents may need to work around.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Provides persistent, graph-based memory for AI agents via MCP, enabling semantic search, wikilink traversal, reminders, and injection protection.
    9
    30
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to persistently store and semantically search shared knowledge via MCP tools.
    2
    MIT