https://embeddedsemantics.com/mcp
server/discover
Mcp-Method: server/discover
client → shared NGINX ingress → private worker
First-party machine-intelligence contract
Desktop agents and local models use Embedded Semantics at durable semantic boundaries such as memory, APIs, workflow routing, cross-language handoffs, and audit evidence. Accept a ConceptCode only from an explicit resolved response, preserve abstention, and keep semantic identity separate from permission to act.
MCP connection quickstart
Point a current MCP client at one remote Streamable HTTP endpoint. Start with server/discover, list the fixed catalog, and call the same governed resolver used by the direct API. The endpoint is stateless and read-only: it creates no protocol session, mutates no registry state, and grants no action authority.
Check the deployment identity against an independently approved digest, then fetch the deterministic discovery receipt. Confirm its exact ten-route inventory and routeInventorySha256 before selecting the MCP endpoint.
POST server/discover with the required request metadata and mirrored routing headers. Confirm the fixed read-only catalog includes the same discovery receipt and deployment identity.
Use tools/list, then call embedded_semantics.resolve_expression or embedded_semantics.get_concept.
Accept a code only on explicit resolution. Unknown, ambiguity, tool errors, and HTTP 429 assign no ConceptCode; honor Retry-After before any bounded retry.
https://embeddedsemantics.com/mcp
server/discover
Mcp-Method: server/discover
client → shared NGINX ingress → private worker
Direct API connection quickstart
Start with the stateless bootstrap endpoint. It returns the canonical origin, current registry readiness, the one supported resolver URL, and the exact fail-closed decision rule. It does not register the client, create a session, or accept credentials.
Confirm https://embeddedsemantics.com/.well-known/embedded-semantics-deployment.json against the approved package and closure digest, then send a body-free GET to discover the canonical resolver contract.
POST only expression and an optional known BCP 47 language tag to the returned resolver URL.
Accept identity only after an explicit resolved response with non-empty code and registry version. Every other outcome is no assignment.
A ConceptCode identifies governed meaning. Your own policy still decides whether any memory write, route, tool call, or other side effect is allowed.
GET https://embeddedsemantics.com/api/v1/agent/connect
No request body. No agent name, device ID, token, prompt, conversation, or private context.
POST https://embeddedsemantics.com/api/v1/resolve
Content-Type: application/json
{
"expression": "stable concept identity",
"language": "en"
}
A desktop agent can verify the service and obtain the current request contract over ordinary HTTPS. There is no WebSocket, background channel, account registration, remote tool control, or persistent connection state.
Local desktop foundation
The root deployment package includes a dependency-free loopback prototype. It consumes one Integration Studio kit unchanged, replays the same six fixtures with zero network calls, and makes the live bootstrap a separate user-controlled step.
python -m desktop_app --open-browser
127.0.0.1Live readiness
reviewed_exact_registry_firstnot_production_active
Public bundle: embedded-semantics.public-registry-prerelease · complete: no · SHA-256: 30811e375cdfc7c92828270aedd9bfde96dc92cf190096ad6bc6772de2fc995f
The endpoint may still process requests and return explicit abstention. An agent must not treat an empty or incomplete deployment as permission to infer or manufacture a ConceptCode.
Architecture
A desktop application, local LLM, or local agent sends minimal HTTPS JSON to Embedded Semantics. The published registry record remains authority. The client does not need to host the site, duplicate the registry, run an embedding model, or add an external execution provider merely to call the API.
Where it benefits an agent
Store the original wording beside a resolved ConceptCode and registryVersion so later systems can refer to the same reviewed meaning without erasing the user's language.
Place it: At the durable-memory write boundary, not on every conversational turn.A governed ConceptCode can become a stable semantic input to a separately authorized routing policy.
Place it: Immediately before a semantic routing decision whose policy already recognizes published codes.Attach an exact ConceptCode and registryVersion to a record or event so recipients can inspect the same definition while retaining their own display language.
Place it: At an API, event, or persistence boundary where semantic metadata is part of the contract.The resolver's unknown and ambiguous outcomes give the interface a principled reason to preserve uncertainty, ask a targeted question, or continue without semantic identity.
Place it: At a decision point where choosing the wrong meaning would materially change the next step.Call the resolver when
Do not call it when
Required procedure
Determine whether the workflow actually requires a stable ConceptCode; otherwise do not call the resolver.
Before integration, select one canonical recipe and run the dependency-free local readiness self-test.
Fetch capabilities or status at session start and after a deployment, bundle, or registry-version change.
Send only the exact expression to resolve; include language only when a valid BCP 47 tag is known.
Treat HTTP success as transport success only. Inspect data.status, data.reason, and error.
Accept identity only from data.concept.code on a resolved response; preserve the code and registryVersion exactly.
On every abstention, assign no ConceptCode; preserve unknown or ambiguous and never choose from candidates.
Apply a separate authorization policy before any tool or action; semantic identity alone authorizes nothing.
Minimal request
Include a valid BCP 47 language tag only when known. Do not send credentials, hidden prompts, unrelated conversation, or private context.
POST /api/v1/resolve
Content-Type: application/json
{
"expression": "stable concept identity",
"language": "en"
}
Decision
HTTP 200 means the request was processed. It does not mean a ConceptCode was assigned.
if data.status == "resolved"
and data.concept.code is a non-empty string:
accept the exact returned code
preserve registryVersion
else:
assign no ConceptCode
Outcome handling
resolvedUse data.concept.code exactly as returned and retain data.concept.registryVersion.
unknown_expressionNo governed exact identity is available. Return unknown. Do not guess from labels, candidates, embeddings, or model intuition.
ambiguous_expressionMore than one governed exact identity is possible. Ask for clarification or preserve ambiguity. Do not select silently.
Repair only the stated request defect or report the service problem. Never replace an error with an inferred semantic result.
The agent must
The agent must not
Local-model prompt
Use Embedded Semantics only when a stable ConceptCode is required.
Place resolution at a durable memory, API/event, routing,
clarification, or audit boundary—not on every conversation turn.
Before connecting a real side effect, select one recipe and run
the six-fixture local readiness self-test.
Send only the expression and an optional known language tag.
Preserve the original expression beside any resolved code.
Accept identity only when:
data.status == "resolved"
and data.concept.code is a non-empty string.
Every abstained result means no ConceptCode assignment.
Preserve unknown_expression and ambiguous_expression.
Never construct a code from labels, candidates, scores,
embeddings, or your own model output.
Semantic identity does not authorize an action.