Connector
The MCP endpoint every host connects to, how it authenticates, and the seventeen tools it serves.
Every workspace serves one MCP endpoint:
https://midland.md/api/mcp
The endpoint speaks Streamable HTTP. Foundation is its own OAuth 2.1 authorization server and publishes the standard discovery documents, so a host registers and runs the authorization flow with PKCE, and the person approves in the browser. You paste nothing but the URL.
Hosts
Claude.ai. Settings, Customize, Custom Connector, paste the URL, leave authentication as detected, sign in. One install covers the web, Claude Desktop, Cowork and Claude Code on the account.
Codex. Settings, MCP servers, Add server. Name midland, transport
Streamable HTTP, paste the URL. Save, restart, then Authenticate.
The desktop app, the CLI and the IDE extension share the configuration.
Any other MCP client. Add a remote server at the URL and let the client
run the authorization flow. Send Accept: application/json, text/event-stream
on every request.
Couriers
A courier is a small job that fetches a source on a schedule and writes what it found into the workspace. It does not run the authorization flow: it sends its connection key as a bearer token on every request, and a 401 means the key was withdrawn. Members and roles covers what a courier may do and how you add one.
curl https://<your workspace>/api/mcp \
-H "Authorization: Bearer <connection key>" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Tools
Each tool’s description tells the agent when to call it, when not to and what every error means. In brief:
| Tool | What it does |
|---|---|
list_entities |
The shortlist for a filter, complete, with the tag index. The first call. |
search_entities |
Possible matches on partial wording across names and descriptions. |
get_entity |
One entity in full: a body, a latest value, or a list’s entry index. |
get_skill |
The team’s skills: bare for the index, with an id for one. |
get_team_members |
The people an admin described, by name and what they handle. |
get_authoring_guide |
How this entity’s content should be composed. Read before writing. |
get_manual |
Foundation’s own manual, by chapter. |
save_alias |
Save verified wording as an alias for an entity. |
request_entity |
Ask the admins for context the workspace does not hold. |
create_entity |
Define a new entity. Admin only. |
write_text |
A new version of a text, term or skill body. |
write_metric |
Append one dated observation, verbatim. |
write_list_entry |
Append one named entry. |
update_list_entry |
Rewrite one living entry in place. |
delete_list_entry |
Remove one entry permanently. Admin only. |
set_entity_tags |
Replace an entity’s tags. Owner only. |
write_guide |
Write the authoring or retrieval guide. Owner only. |
Routines covers the seven routine tools.