Skip to content

Start building

Jump toYour MCP server
All endpoints

Your MCP server

What your organization offers to outside AI apps over MCP: the tools, their settings and the server's address.

get/v1/mcp_exposures

List MCP exposures

Any key of this organization

By tool name; q searches tool names, titles and descriptions or finds a pasted mxp_…. Sorts by tool_name, created_at, updated_at, last_called_at and calls_total. Filters: kind (agent, workflow, action), enabled (true, false), alias, agent_id, workflow_id, connection_id. Only the kinds whose view permission the caller holds are listed.

Query parameters

  • workspace_idstring
  • kindstring[]
  • enabledstring[]
  • aliasstring[]
  • agent_idstring
  • workflow_idstring
  • connection_idstring
  • created_bystring[]
  • updated_bystring[]
  • limitinteger

    Rows per page, 1 to 200.

    Default50at least 1at most 200
  • cursorstring
  • qstring

    Search: rows whose name (or the list's other searchable text) contains this, any case.

    at most 200 characters
  • orderstring

    Sort field; a leading - sorts down. Each list names the fields it sorts by.

    at most 64 charactersmatches ^-?[a-z_]+$
  • includestring[]

    total_count (counted up to 10,000) and facets (a count per filter value).

    One oftotal_countfacets
  • created_afterstring

    Only rows created at or after this time (RFC 3339).

    date-time
  • created_beforestring

    Only rows created at or before this time (RFC 3339).

    date-time
  • updated_afterstring

    Only rows last changed at or after this time (RFC 3339).

    date-time
  • updated_beforestring

    Only rows last changed at or before this time (RFC 3339).

    date-time

Response200

  • objectstring
    list
  • dataMcpExposure[]
    26 fields
    • idstring
    • objectstring
      mcp_exposure
    • actionstring or null
    • agent_idstring or null
    • aliasstring or null
      One oflivestaging
    • allow_writeboolean
    • availableboolean
    • calls_totalinteger
    • connection_idstring or null
    • created_atstring or null
    • descriptionstring
    • enabledboolean
    • errors_totalinteger
    • kindstring
      One ofagentworkflowaction
    • last_called_atstring or null
    • row_versioninteger
    • side_effectsstring or null
      One ofreadwritedestructive
    • target_namestring or null
    • titlestring or null
    • tool_namestring
    • unavailable_reasonstring or null
    • updated_atstring or null
    • workflow_idstring or null
    • workspace_idstring
    • created_byActorRef or null

      Who created or last changed something, resolved to a name for display. system, workload (an automation) and end_user (a widget visitor) have no ID or name: the console words them. name is null for someone the directory no longer knows. id is what the lists' created_by/updated_by filters take. avatar_version is set for a person with a photo: it is at GET /v1/members/{id}/avatar?v=<avatar_version> while they are a member.

      5 fields
      • idstring or null
      • kindstring
        One ofuserapi_keyservice_accountworkloadend_usersystem
      • namestring or null
      • avatar_versionstring or null
      • emailstring or null
    • updated_byActorRef or null

      Who created or last changed something, resolved to a name for display. system, workload (an automation) and end_user (a widget visitor) have no ID or name: the console words them. name is null for someone the directory no longer knows. id is what the lists' created_by/updated_by filters take. avatar_version is set for a person with a photo: it is at GET /v1/members/{id}/avatar?v=<avatar_version> while they are a member.

      5 fields
      • idstring or null
      • kindstring
        One ofuserapi_keyservice_accountworkloadend_usersystem
      • namestring or null
      • avatar_versionstring or null
      • emailstring or null
  • has_moreboolean
  • next_cursorstring or null
  • facetsmap<string, map<string, integer>> or null
  • peoplemap<string, ActorRef> or null
    5 fields
    • idstring or null
    • kindstring
      One ofuserapi_keyservice_accountworkloadend_usersystem
    • namestring or null
    • avatar_versionstring or null
    • emailstring or null
  • total_countinteger or null
  • total_count_exactboolean or null

Status codes

  • 200Successful Response
  • 422The request is not valid: errors[] names each field.
  • 4XXThe request was refused: the problem says why.
  • 5XXThe API could not answer: the problem says why.
Request
curl "https://api.mydeepagents.com/v1/mcp_exposures?limit=20" \
  -H "Authorization: Bearer $MDA_API_KEY"
Response · 200
JSON
{
  "object": "list",
  "data": [
    {
      "id": "id",
      "object": "mcp_exposure",
      "action": "send_message",
      "agent_id": "agt_01jctdbahw9btk5p831xs974yq",
      "alias": "live",
      "allow_write": true,
      "available": true,
      "calls_total": 2,
      "connection_id": "con_01jc9ekd74h6eg79ggg89yx7py",
      "created_at": "2026-11-10T09:30:00.000Z",
      "created_by": {
        "kind": "user",
        "id": "usr_01jcf1j9wjxfrnhqda3mq7ejxn",
        "name": "Ada Lovelace",
        "email": "ada@example.com"
      },
      "description": "Reads new support email and drafts a reply.",
      "enabled": true,
      "errors_total": 2,
      "kind": "agent",
      "last_called_at": "2026-11-10T09:30:00.000Z",
      "row_version": 4,
      "side_effects": "read",
      "target_name": "target name",
      "title": "Support triage",
      "tool_name": "search_docs",
      "unavailable_reason": null,
      "updated_at": "2026-11-10T09:30:00.000Z",
      "updated_by": {
        "kind": "user",
        "id": "usr_01jcf1j9wjxfrnhqda3mq7ejxn",
        "name": "Ada Lovelace",
        "email": "ada@example.com"
      },
      "workflow_id": "wf_01jctgae7hqqg3qxjfrgs9t89k",
      "workspace_id": "ws_01jccj30nr8ad7mx1yc5v9zx3h"
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "total_count": 1
}
post/v1/mcp_exposures

Create MCP exposure

Any key of this organization

Serves one item as an MCP tool: a published agent or workflow at an alias, or one action of a connection (a read, unless allow_write). Needs agent.publish, workflow.publish or connection.manage in the item's workspace.

Request bodyMcpExposureCreate

  • kindstringRequired
    One ofagentworkflowaction
  • actionstring or null
    matches ^[a-z][a-z0-9_]{0,63}$
  • agent_idstring or null
  • aliasstring or null
    One oflivestaging
  • allow_writeboolean
    Defaultfalse
  • connection_idstring or null
  • descriptionstring or null
    at least 1 charactersat most 4000 characters
  • enabledboolean
    Defaulttrue
  • titlestring or null
    at least 1 charactersat most 200 characters
  • tool_namestring or null
    at least 1 charactersat most 64 characters
  • workflow_idstring or null

Response201

  • idstring
  • objectstring
    mcp_exposure
  • actionstring or null
  • agent_idstring or null
  • aliasstring or null
    One oflivestaging
  • allow_writeboolean
  • availableboolean
  • calls_totalinteger
  • connection_idstring or null
  • created_atstring or null
  • descriptionstring
  • enabledboolean
  • errors_totalinteger
  • kindstring
    One ofagentworkflowaction
  • last_called_atstring or null
  • row_versioninteger
  • side_effectsstring or null
    One ofreadwritedestructive
  • target_namestring or null
  • titlestring or null
  • tool_namestring
  • unavailable_reasonstring or null
  • updated_atstring or null
  • workflow_idstring or null
  • workspace_idstring
  • created_byActorRef or null

    Who created or last changed something, resolved to a name for display. system, workload (an automation) and end_user (a widget visitor) have no ID or name: the console words them. name is null for someone the directory no longer knows. id is what the lists' created_by/updated_by filters take. avatar_version is set for a person with a photo: it is at GET /v1/members/{id}/avatar?v=<avatar_version> while they are a member.

    5 fields
    • idstring or null
    • kindstring
      One ofuserapi_keyservice_accountworkloadend_usersystem
    • namestring or null
    • avatar_versionstring or null
    • emailstring or null
  • updated_byActorRef or null

    Who created or last changed something, resolved to a name for display. system, workload (an automation) and end_user (a widget visitor) have no ID or name: the console words them. name is null for someone the directory no longer knows. id is what the lists' created_by/updated_by filters take. avatar_version is set for a person with a photo: it is at GET /v1/members/{id}/avatar?v=<avatar_version> while they are a member.

    5 fields
    • idstring or null
    • kindstring
      One ofuserapi_keyservice_accountworkloadend_usersystem
    • namestring or null
    • avatar_versionstring or null
    • emailstring or null

Status codes

  • 201Successful Response
  • 422The request is not valid: errors[] names each field.
  • 4XXThe request was refused: the problem says why.
  • 5XXThe API could not answer: the problem says why.
Request
curl -X POST "https://api.mydeepagents.com/v1/mcp_exposures" \
  -H "Authorization: Bearer $MDA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "agent"
  }'
Response · 201
JSON
{
  "id": "id",
  "object": "mcp_exposure",
  "action": "send_message",
  "agent_id": "agt_01jctdbahw9btk5p831xs974yq",
  "alias": "live",
  "allow_write": true,
  "available": true,
  "calls_total": 2,
  "connection_id": "con_01jc9ekd74h6eg79ggg89yx7py",
  "created_at": "2026-11-10T09:30:00.000Z",
  "created_by": {
    "kind": "user",
    "id": "usr_01jcf1j9wjxfrnhqda3mq7ejxn",
    "name": "Ada Lovelace",
    "email": "ada@example.com"
  },
  "description": "Reads new support email and drafts a reply.",
  "enabled": true,
  "errors_total": 2,
  "kind": "agent",
  "last_called_at": "2026-11-10T09:30:00.000Z",
  "row_version": 4,
  "side_effects": "read",
  "target_name": "target name",
  "title": "Support triage",
  "tool_name": "search_docs",
  "unavailable_reason": null,
  "updated_at": "2026-11-10T09:30:00.000Z",
  "updated_by": {
    "kind": "user",
    "id": "usr_01jcf1j9wjxfrnhqda3mq7ejxn",
    "name": "Ada Lovelace",
    "email": "ada@example.com"
  },
  "workflow_id": "wf_01jctgae7hqqg3qxjfrgs9t89k",
  "workspace_id": "ws_01jccj30nr8ad7mx1yc5v9zx3h"
}
get/v1/mcp_server

Get MCP server

Any key of this organization

How an MCP client reaches this organization's tools: the address, the protocol revisions, how it signs in, and how many tools are on.

Response200

  • objectstring
    tenant_mcp_server
  • authMcpServerAuth
    5 fields
    • headerstring
      Authorization
    • key_prefixstring
    • schemestring
      Bearer
    • scopesmap<string, string>
    • typestring
      api_key
  • calls_per_minuteinteger
  • latest_protocol_versionstring
  • max_toolsinteger
  • protocol_versionsstring[]
  • tools_enabledinteger
  • tools_totalinteger
  • transportstring
    streamable_http
  • urlstring
  • wait_secondsinteger

Status codes

  • 200Successful Response
  • 4XXThe request was refused: the problem says why.
  • 5XXThe API could not answer: the problem says why.
Request
curl "https://api.mydeepagents.com/v1/mcp_server" \
  -H "Authorization: Bearer $MDA_API_KEY"
Response · 200
JSON
{
  "object": "tenant_mcp_server",
  "auth": {
    "header": "Authorization",
    "key_prefix": "key prefix",
    "scheme": "Bearer",
    "scopes": {
      "key": "key"
    },
    "type": "api_key"
  },
  "calls_per_minute": 2,
  "latest_protocol_version": "latest protocol version",
  "max_tools": 10,
  "protocol_versions": [
    "2025-11-25"
  ],
  "tools_enabled": 2,
  "tools_total": 2,
  "transport": "streamable_http",
  "url": "https://mcp.example.com/mcp",
  "wait_seconds": 60
}
get/v1/mcp_exposures/{mcp_exposure_id}

Get MCP exposure

Any key of this organization

Path parameters

  • mcp_exposure_idstringRequired

Response200

  • idstring
  • objectstring
    mcp_exposure
  • actionstring or null
  • agent_idstring or null
  • aliasstring or null
    One oflivestaging
  • allow_writeboolean
  • availableboolean
  • calls_totalinteger
  • connection_idstring or null
  • created_atstring or null
  • descriptionstring
  • enabledboolean
  • errors_totalinteger
  • kindstring
    One ofagentworkflowaction
  • last_called_atstring or null
  • row_versioninteger
  • side_effectsstring or null
    One ofreadwritedestructive
  • target_namestring or null
  • titlestring or null
  • tool_namestring
  • unavailable_reasonstring or null
  • updated_atstring or null
  • workflow_idstring or null
  • workspace_idstring
  • created_byActorRef or null

    Who created or last changed something, resolved to a name for display. system, workload (an automation) and end_user (a widget visitor) have no ID or name: the console words them. name is null for someone the directory no longer knows. id is what the lists' created_by/updated_by filters take. avatar_version is set for a person with a photo: it is at GET /v1/members/{id}/avatar?v=<avatar_version> while they are a member.

    5 fields
    • idstring or null
    • kindstring
      One ofuserapi_keyservice_accountworkloadend_usersystem
    • namestring or null
    • avatar_versionstring or null
    • emailstring or null
  • updated_byActorRef or null

    Who created or last changed something, resolved to a name for display. system, workload (an automation) and end_user (a widget visitor) have no ID or name: the console words them. name is null for someone the directory no longer knows. id is what the lists' created_by/updated_by filters take. avatar_version is set for a person with a photo: it is at GET /v1/members/{id}/avatar?v=<avatar_version> while they are a member.

    5 fields
    • idstring or null
    • kindstring
      One ofuserapi_keyservice_accountworkloadend_usersystem
    • namestring or null
    • avatar_versionstring or null
    • emailstring or null

Status codes

  • 200Successful Response
  • 422The request is not valid: errors[] names each field.
  • 4XXThe request was refused: the problem says why.
  • 5XXThe API could not answer: the problem says why.
Request
curl "https://api.mydeepagents.com/v1/mcp_exposures/{mcp_exposure_id}" \
  -H "Authorization: Bearer $MDA_API_KEY"
Response · 200
JSON
{
  "id": "id",
  "object": "mcp_exposure",
  "action": "send_message",
  "agent_id": "agt_01jctdbahw9btk5p831xs974yq",
  "alias": "live",
  "allow_write": true,
  "available": true,
  "calls_total": 2,
  "connection_id": "con_01jc9ekd74h6eg79ggg89yx7py",
  "created_at": "2026-11-10T09:30:00.000Z",
  "created_by": {
    "kind": "user",
    "id": "usr_01jcf1j9wjxfrnhqda3mq7ejxn",
    "name": "Ada Lovelace",
    "email": "ada@example.com"
  },
  "description": "Reads new support email and drafts a reply.",
  "enabled": true,
  "errors_total": 2,
  "kind": "agent",
  "last_called_at": "2026-11-10T09:30:00.000Z",
  "row_version": 4,
  "side_effects": "read",
  "target_name": "target name",
  "title": "Support triage",
  "tool_name": "search_docs",
  "unavailable_reason": null,
  "updated_at": "2026-11-10T09:30:00.000Z",
  "updated_by": {
    "kind": "user",
    "id": "usr_01jcf1j9wjxfrnhqda3mq7ejxn",
    "name": "Ada Lovelace",
    "email": "ada@example.com"
  },
  "workflow_id": "wf_01jctgae7hqqg3qxjfrgs9t89k",
  "workspace_id": "ws_01jccj30nr8ad7mx1yc5v9zx3h"
}
patch/v1/mcp_exposures/{mcp_exposure_id}

Update MCP exposure

Any key of this organization

Its title, description, on or off, alias (agents and workflows) and whether an action may write. The tool name never changes: clients keep calling it by name. Switching a tool on checks again that its item can run.

Path parameters

  • mcp_exposure_idstringRequired

Headers

  • If-Matchstring

    The ETag you read. If the resource changed since, the write fails with 412.

Request bodyMcpExposurePatch

  • aliasstring or null
    One oflivestaging
  • allow_writeboolean or null
  • descriptionstring or null
    at least 1 charactersat most 4000 characters
  • enabledboolean or null
  • titlestring or null
    at least 1 charactersat most 200 characters

Response200

  • idstring
  • objectstring
    mcp_exposure
  • actionstring or null
  • agent_idstring or null
  • aliasstring or null
    One oflivestaging
  • allow_writeboolean
  • availableboolean
  • calls_totalinteger
  • connection_idstring or null
  • created_atstring or null
  • descriptionstring
  • enabledboolean
  • errors_totalinteger
  • kindstring
    One ofagentworkflowaction
  • last_called_atstring or null
  • row_versioninteger
  • side_effectsstring or null
    One ofreadwritedestructive
  • target_namestring or null
  • titlestring or null
  • tool_namestring
  • unavailable_reasonstring or null
  • updated_atstring or null
  • workflow_idstring or null
  • workspace_idstring
  • created_byActorRef or null

    Who created or last changed something, resolved to a name for display. system, workload (an automation) and end_user (a widget visitor) have no ID or name: the console words them. name is null for someone the directory no longer knows. id is what the lists' created_by/updated_by filters take. avatar_version is set for a person with a photo: it is at GET /v1/members/{id}/avatar?v=<avatar_version> while they are a member.

    5 fields
    • idstring or null
    • kindstring
      One ofuserapi_keyservice_accountworkloadend_usersystem
    • namestring or null
    • avatar_versionstring or null
    • emailstring or null
  • updated_byActorRef or null

    Who created or last changed something, resolved to a name for display. system, workload (an automation) and end_user (a widget visitor) have no ID or name: the console words them. name is null for someone the directory no longer knows. id is what the lists' created_by/updated_by filters take. avatar_version is set for a person with a photo: it is at GET /v1/members/{id}/avatar?v=<avatar_version> while they are a member.

    5 fields
    • idstring or null
    • kindstring
      One ofuserapi_keyservice_accountworkloadend_usersystem
    • namestring or null
    • avatar_versionstring or null
    • emailstring or null

Status codes

  • 200Successful Response
  • 422The request is not valid: errors[] names each field.
  • 4XXThe request was refused: the problem says why.
  • 5XXThe API could not answer: the problem says why.
Request
curl -X PATCH "https://api.mydeepagents.com/v1/mcp_exposures/{mcp_exposure_id}" \
  -H "Authorization: Bearer $MDA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "alias": "live",
    "allow_write": true,
    "description": "Reads new support email and drafts a reply.",
    "enabled": true,
    "title": "Support triage"
  }'
Response · 200
JSON
{
  "id": "id",
  "object": "mcp_exposure",
  "action": "send_message",
  "agent_id": "agt_01jctdbahw9btk5p831xs974yq",
  "alias": "live",
  "allow_write": true,
  "available": true,
  "calls_total": 2,
  "connection_id": "con_01jc9ekd74h6eg79ggg89yx7py",
  "created_at": "2026-11-10T09:30:00.000Z",
  "created_by": {
    "kind": "user",
    "id": "usr_01jcf1j9wjxfrnhqda3mq7ejxn",
    "name": "Ada Lovelace",
    "email": "ada@example.com"
  },
  "description": "Reads new support email and drafts a reply.",
  "enabled": true,
  "errors_total": 2,
  "kind": "agent",
  "last_called_at": "2026-11-10T09:30:00.000Z",
  "row_version": 4,
  "side_effects": "read",
  "target_name": "target name",
  "title": "Support triage",
  "tool_name": "search_docs",
  "unavailable_reason": null,
  "updated_at": "2026-11-10T09:30:00.000Z",
  "updated_by": {
    "kind": "user",
    "id": "usr_01jcf1j9wjxfrnhqda3mq7ejxn",
    "name": "Ada Lovelace",
    "email": "ada@example.com"
  },
  "workflow_id": "wf_01jctgae7hqqg3qxjfrgs9t89k",
  "workspace_id": "ws_01jccj30nr8ad7mx1yc5v9zx3h"
}
delete/v1/mcp_exposures/{mcp_exposure_id}

Delete MCP exposure

Any key of this organization

Stops serving the item: clients no longer see the tool, and its name is free.

Path parameters

  • mcp_exposure_idstringRequired

Response204

Answers 204 with no body.

Status codes

  • 204Successful Response
  • 422The request is not valid: errors[] names each field.
  • 4XXThe request was refused: the problem says why.
  • 5XXThe API could not answer: the problem says why.
Request
curl -X DELETE "https://api.mydeepagents.com/v1/mcp_exposures/{mcp_exposure_id}" \
  -H "Authorization: Bearer $MDA_API_KEY"

Build with us

Ready for your first call?

Early access is open. Tell us what you want your agents to do, and we will help you get your first key.