kin
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| find_referencesA | Find who depends on one entity: direct callers, importers and references, one row each with id, name, kind, file and the lines it references from. Call it for one hop. For a whole chain, use trace_data_flow. |
| get_context_packA | Assemble a token-bounded bundle from one entity, several entities, or a plain-language question: focal bodies plus dependency signatures and connecting routes. Call it instead of several get_entity_source and traversal reads. |
| get_entity_sourceA | Return one entity's exact graph-owned body by id. Call it when you hold an id and need the real source text, not a snippet. |
| graph_neighborhoodA | Get what one entity depends on and what depends on it, to a depth you choose, as summaries with ids. Call it to orient in unfamiliar code. Use find_references for callers only, trace_data_flow for an ordered path. |
| impact_analysisA | Walk the graph from a change to every entity it could affect. Target it one way at a time: entity_ids, file paths, base and head change ids, or change_ids. Call it before editing, across the whole repository. |
| kin_artifact_listA | List the repository's tracked files at one semantic change, code and non-code alike: Dockerfiles, lockfiles, configuration, assets, symlinks. Call it for what the repository contains, not what the parsers turned into entities. |
| kin_artifact_readA | Read one tracked file's exact content by artifact_id or repo-relative path: text when valid UTF-8, else base64. Call it for a file the parsers made no entities for, which a locate hit's artifact_path means. |
| kin_graph_statusA | The graph this call is answered from: entity and relation counts, and how many are embedded, pending or unindexed. Call it when a search returns less than you expect. |
| kin_mutateA | Atomically validate and commit a batch of graph mutations in a single call. Automatically manages transaction begin, validation, and commit. Provide an operations array with mutation verb and payload. |
| kin_provenance_queryA | Answer who changed an entity and whether it was approved: change count, latest change, approvals on it, a page of changes newest first, and recent audit events. Call it before relying on code whose history matters. |
| kin_session_endA | Close this session and release what it holds. Call it when your work is done. |
| kin_session_heartbeatA | Keep this session alive. Call it periodically during long work so the session does not lapse at its idle TTL. |
| kin_session_startA | Register this agent with Kin and get a session_id: who you are, your transport, working directory and capabilities. Call it once at the start of your work, before any transaction, so activity is attributed. |
| kin_transaction_abortA | Abandon an open transaction and discard everything staged on it. Call it when you decide against a change, or to start clean after a refusal. Refused once kin_transaction_commit has fenced it. |
| kin_transaction_beginA | Open a transaction to stage mutations onto. Returns a transaction_id; nothing lands until kin_transaction_commit. |
| kin_transaction_commitA | Publish every staged mutation atomically: the daemon reparses the final bytes and journals the semantic change, the workspace tree and the ref together. All of it lands or none does. Re-sending a fenced commit is safe. |
| kin_transaction_stageA | Stage mutations onto an open transaction. Four verbs: 'create' admits a file the graph has never seen, 'update' changes an entity, 'delete' retires one, 'rename' moves one. An 'update' replaces the whole body; read it first with get_entity_source. |
| list_file_entitiesA | List every entity the graph holds for one file, by repo-relative path. The only retrieval tool that says what it left out: it returns the whole set and reports whether it is complete. Call it before concluding a file holds nothing. |
| semantic_locateA | Find code by a plain-language question, ranked from the graph. Call it when you know what the code does but not its name. Returns id, name, kind, file, line, signature, score. Read |
| semantic_searchA | Filter declarations by name, kind or language: functions, methods, classes, structs, traits, enums, types, constants. Call it when you know what the thing is called. It matches names, not meaning. For a description, use semantic_locate. |
| trace_data_flowA | Walk the call chain out from ONE entity and get the whole path back, as ordered steps. Give a focal, a direction and a depth. It walks call and import edges, not values through variables. Naming TWO things? Use trace_path. |
| trace_pathA | Find how one entity reaches another, as ordered hops. Call it when your question names TWO things. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
The traversal tools (find_references, graph_neighborhood, trace_data_flow, trace_path) and the search pair (semantic_search vs semantic_locate) are explicitly cross-referenced and distinguished by their descriptions, which is excellent. However the mutation surface overlaps: kin_mutate ('atomically validate and commit a batch') appears to duplicate what kin_transaction_begin/stage/commit do, and no description reconciles the two paths, creating a misselection risk.
All names use snake_case and mostly follow verb_noun (find_references, list_file_entities, trace_data_flow), which is readable. But the kin_ prefix is applied inconsistently—about half the tools carry it (kin_session_start, kin_transaction_begin, kin_mutate) and half do not (get_entity_source, impact_analysis, semantic_locate)—and a few are bare noun phrases (impact_analysis, graph_neighborhood), breaking the pattern.
At 22 tools the surface is on the heavy side of the 16-25 range for a single code-graph server. Much of the count is justified by genuinely distinct concerns (search, retrieval, tracing, sessions, transactions, artifacts), but the coexistence of both kin_mutate and the four-tool transaction family suggests a redundant mutation pathway that inflates the count.
Coverage is broad and lifecycle-complete: search, retrieval, traversal, impact analysis, provenance, atomic mutations with create/update/delete/rename, plus session and graph-status introspection leave few obvious dead ends. Minor gaps remain around review/approval workflows and multi-endpoint tracing beyond single-source walks, but core workflows are covered.