Promise

Evidence-backed follow-through memory for what you owe, await, and need to remember.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
78%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'get_today' description lacks action verbin get_today

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,379Tokens (tool definitions)
~777 BTypical response size
Moderate attention impact (1.08% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "promise": {
      "url": "https://mcp.usepromise.ai/mcp"
    }
  }
}

Remote endpoints

https://mcp.usepromise.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢connect_promise(clientName, returnUrl, state, intent, scopes)

Return a Promise signup URL for users who want agent access to follow-up memory. Safety: Never collects provider credentials in the agent. Send the user to Promise.

Input Schema

{
  "type": "object",
  "properties": {
    "clientName": {
      "type": "string",
      "description": "Name of the agent or MCP client requesting access."
    },
    "returnUrl": {
      "type": "string",
      "description": "HTTPS URL the user can return to after Promise authorization."
    },
    "state": {
      "type": "string",
      "description": "Opaque agent state returned unchanged after authorization."
    },
    "intent": {
      "type": "string",
      "description": "Signup intent to preserve in Promise attribution."
    },
    "scopes": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "promise.memory.read",
          "promise.evidence.read",
          "promise.capture.write",
          "promise.followup.write",
          "promise.draft.write"
        ]
      }
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢get_today(horizonDays)

Return what currently deserves the user's attention. Safety: Return concise items and links back to Promise for sensitive action.

Input Schema

{
  "type": "object",
  "properties": {
    "horizonDays": {
      "type": "integer",
      "minimum": 0,
      "maximum": 30,
      "default": 7
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢list_commitments(category, scope, limit)

List what the user owes and what the user is waiting on. Safety: Do not infer more certainty than Promise returns.

Input Schema

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": [
        "all",
        "waitingOnMe",
        "waitingOnThem",
        "dueSoon",
        "overdue"
      ],
      "default": "all"
    },
    "scope": {
      "type": "string",
      "enum": [
        "active",
        "snoozed",
        "history"
      ],
      "default": "active"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 25
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢get_commitment(id)

Retrieve a structured Promise commitment or waiting-on item. Safety: Prefer structured status, due dates, people, and source links over raw mail.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢get_commitment_evidence(id)

Show why Promise believes a follow-up or memory exists. Safety: Return source summaries and citations permitted by the platform API.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢get_person_context(contactId, query, limit)

Summarize what matters before the user speaks with someone. Safety: Avoid exposing hidden/private fields unless the platform scopes allow them.

Input Schema

{
  "type": "object",
  "properties": {
    "contactId": {
      "type": "string",
      "format": "uuid"
    },
    "query": {
      "type": "string",
      "description": "Name or email search when contactId is unknown."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "default": 5
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢search_memory(query, limit)

Search Promise's derived memory with user authorization. Safety: Search derived Promise memory, not raw provider mailboxes.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
capture_note(transcript, title, kind, personName, contactId, ...)

Let a user tell Promise something to remember. Safety: Echo what Promise understood and require review when the platform requests it.

Input Schema

{
  "type": "object",
  "properties": {
    "transcript": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "kind": {
      "type": "string",
      "enum": [
        "task",
        "follow_up",
        "remember"
      ],
      "default": "remember"
    },
    "personName": {
      "type": "string"
    },
    "contactId": {
      "type": "string",
      "format": "uuid"
    },
    "dueAt": {
      "type": "string",
      "format": "date-time"
    },
    "requestId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "transcript"
  ],
  "additionalProperties": false
}
🟡create_follow_up(title, transcript, personName, contactId, dueAt, ...)

Create a future follow-up from explicit user intent. Safety: Only create follow-ups from explicit user instructions.

Input Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "transcript": {
      "type": "string"
    },
    "personName": {
      "type": "string"
    },
    "contactId": {
      "type": "string",
      "format": "uuid"
    },
    "dueAt": {
      "type": "string",
      "format": "date-time"
    },
    "requestId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "title"
  ],
  "additionalProperties": false
}
mark_resolved(id)

Tell Promise that a commitment or waiting-on item is complete. Safety: Confirm destructive or irreversible status changes in the agent UI.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟡draft_follow_up(commitmentId, personName, context, goal)

Draft a follow-up message without sending it. Safety: Do not send email in v1. Return a draft and Promise confirmation link.

Input Schema

{
  "type": "object",
  "properties": {
    "commitmentId": {
      "type": "string",
      "format": "uuid"
    },
    "personName": {
      "type": "string"
    },
    "context": {
      "type": "string"
    },
    "goal": {
      "type": "string"
    }
  },
  "required": [],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools