Workspace memory

By default, every new connection starts cold — your assistant knows nothing about how your team works until you tell it again. Workspace memory fixes that. It gives the concierge (https://hdls.ai/api/mcp) a durable place to store context, so your assistant can pick up where it left off — across sessions, and across the whole team.

These tools live on the concierge endpoint, so they work the moment you're connected — see Getting connected if you haven't set that up yet.

💬 Just ask

  • "Remember that we sell to mid-market manufacturers and always log a follow-up date."
  • "What do you know about how my team works?"

You don't call these tools yourself — just tell your assistant; the technical reference below is for when you want the details.

There are two kinds of memory, and the difference matters:

  • Shared — the workspace profile. One record for the entire workspace. Everyone on the team reads the same thing. "What this workspace is, how we work, conventions the assistant should follow."
  • Personal — your bio and your preferences. Private to you. Other members of the same workspace cannot see your bio or preferences, even though you all share the same backend.

At a glance

You want to…ToolScopeWho can use it
Read the team's shared profileget_workspacesharedreader+
Update the team's shared profileset_workspacesharedadmin+
Read your own bioget_biopersonalmember+
Save your own bioset_biopersonalmember+
List your own preferencesget_preferencespersonalmember+
Save a preferenceset_preferencepersonalmember+

Mental model. A workspace is one tenant, and your credential is pinned to it — so you never pass a tenant_id. Personal memory (your bio, your preferences) is private to you even inside a shared workspace. Shared memory (the workspace profile) is visible to everyone on the team.


Shared: the workspace profile

get_workspace returns the team-wide profile — a name, a description, and a freeform data object. It returns null if nothing has been saved yet.

// tool: get_workspace   (reader+)
{}

set_workspace saves or updates it. Because this is shared state that affects everyone, only an admin or owner can change it. Only the fields you pass are touched.

// tool: set_workspace   (admin+)
{
  "name": "Acme Sales",
  "description": "B2B pipeline for the EMEA sales team.",
  "data": {
    "fiscal_year_start": "February",
    "default_currency": "EUR",
    "forecast_cadence": "weekly"
  }
}

Use the profile to record the durable facts you'd otherwise repeat every session: your fiscal calendar, naming conventions, the forecast cadence, "always report in EUR" — anything you want every teammate's assistant to honour automatically.


Personal: your bio

Your bio is who you are in this workspace — stored against your credential and visible only to you. Any member (or above) can read and write their own.

// tool: set_bio   (member+)
{
  "content": "Alex — RevOps lead. I care about clean stage data and an honest forecast.",
  "data": { "timezone": "Australia/Sydney", "focus": "EMEA enterprise deals" }
}
// tool: get_bio   (member+)
{}

A bio is how the assistant remembers who it's working with on a later connect — your role, your timezone, what you focus on — without anyone else on the team seeing it.


Personal: your preferences

Preferences are simple, durable key/value settings the assistant should honour for you later — also private to you.

// tool: set_preference   (member+)
{
  "key": "default_report_format",
  "value": "markdown_table"
}
// tool: get_preferences   (member+)
{}

A few rules:

  • key must be a simple identifier — letters, digits, and underscores, starting with a letter or underscore (e.g. default_report_format). Keys with spaces, dashes, or punctuation are rejected.
  • value may be any JSON — a string, number, boolean, array, or object.
  • Setting the same key again overwrites the previous value.

Preferences are perfect for small standing instructions: a default report format, a preferred currency, "always round amounts to whole dollars."


What persists across sessions

Once written, all three slices survive disconnects and reconnects — they live in the workspace, not in the session. On a fresh connection your assistant can read them back and immediately act in context:

  • The shared profile so the whole team works the same way.
  • Your bio so it knows who it's helping.
  • Your preferences so its output matches how you like to receive it.

That's what turns a stateless tool connection into something that remembers your business.


Gotchas worth knowing

  • data is replace, not merge. For set_workspace and set_bio, the data object you send fully replaces whatever was stored — it is not a deep merge. To keep existing keys, read first (get_workspace / get_bio), merge locally, then write the complete object back. (Preferences are different — each set_preference touches only its one key.)
  • Personal stays personal. Your bio and preferences are scoped to your own credential. Another member of the same workspace — even an admin — cannot read them. The shared profile is the only slice the whole team sees.
  • Shared edits need admin+. Reading the workspace profile is open to readers, but changing it requires admin or owner, because it affects everyone.
  • Managed workspaces only. Workspace memory lives on hdls-managed workspaces. If your workspace points at your own bring-your-own database, the memory tools aren't available there.

Where to go next

  • Set up the team that shares this context: Teams & roles.
  • Pull in ready-made playbooks your preferences can shape: Skills.
  • Install the products your workspace memory describes: Products.