limits

Docs · MCP tools

MCP tool reference.

Limits checks current access rules for each call. Each tool returns structured data and an audit record.

Available tools

list_accessShow the categories and items this agent may request without returning stored values.
{
  "name": "list_access",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "additionalProperties": false
  }
}
get_profileRead approval-free Standard fields from categories this agent can access.
{
  "name": "get_profile",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "categories": {
        "maxItems": 20,
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "required": [
      "purpose"
    ],
    "additionalProperties": false
  }
}
find_itemsFind accessible items by category or opaque item ID. Labels are not disclosed to agents.
{
  "name": "find_items",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "category": {
        "type": "string"
      },
      "query": {
        "type": "string",
        "maxLength": 100
      },
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "required": [
      "purpose"
    ],
    "additionalProperties": false
  }
}
get_itemRead permitted fields from one item, or collect it after approval.
{
  "name": "get_item",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "item_id": {
        "type": "string",
        "pattern": "^itm_[a-z2-7]{16,26}$"
      },
      "fields": {
        "maxItems": 50,
        "type": "array",
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 120
        }
      },
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      },
      "request_id": {
        "type": "string",
        "maxLength": 80
      }
    },
    "required": [
      "item_id",
      "purpose"
    ],
    "additionalProperties": false
  }
}
get_otp_codeGet the current one-time code from a permitted OTP item.
{
  "name": "get_otp_code",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "item_id": {
        "type": "string",
        "pattern": "^itm_[a-z2-7]{16,26}$"
      },
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "required": [
      "item_id",
      "purpose"
    ],
    "additionalProperties": false
  }
}
request_accessAsk the owner to approve additional data paths for this agent.
{
  "name": "request_access",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "paths": {
        "minItems": 1,
        "maxItems": 40,
        "type": "array",
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 180
        }
      },
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      },
      "duration_hint": {
        "type": "string",
        "enum": [
          "once",
          "1d",
          "7d",
          "always"
        ]
      }
    },
    "required": [
      "paths",
      "purpose"
    ],
    "additionalProperties": false
  }
}
get_request_statusCheck an access request and collect an approved result once.
{
  "name": "get_request_status",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "request_id": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "required": [
      "request_id"
    ],
    "additionalProperties": false
  }
}
request_paymentRequest approval to use an assigned virtual card for one specific purchase.
{
  "name": "request_payment",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "card_id": {
        "type": "string",
        "pattern": "^itm_[a-z2-7]{16,26}$"
      },
      "amount_minor": {
        "type": "integer",
        "minimum": 1,
        "maximum": 1000000000
      },
      "currency": {
        "type": "string",
        "pattern": "^[A-Z]{3}$"
      },
      "merchant": {
        "type": "string",
        "minLength": 1,
        "maxLength": 120
      },
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "required": [
      "card_id",
      "amount_minor",
      "currency",
      "merchant",
      "purpose"
    ],
    "additionalProperties": false
  }
}
end_taskEnd task-scoped access and one-time approvals for this agent.
{
  "name": "end_task",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "summary": {
        "type": "string",
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "additionalProperties": false
  }
}
register_session_keyRegister an ephemeral P-256 public key for encrypted one-time releases.
{
  "name": "register_session_key",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "public_key_spki_b64": {
        "type": "string",
        "minLength": 40,
        "maxLength": 200
      },
      "alg": {
        "type": "string",
        "const": "ECDH-P256"
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "required": [
      "public_key_spki_b64",
      "alg"
    ],
    "additionalProperties": false
  }
}
admin_list_agentsList agents inside this manager grant's active delegation envelope.
{
  "name": "admin_list_agents",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "required": [
      "purpose"
    ],
    "additionalProperties": false
  }
}
admin_pause_agentPause a target grant within this manager's delegation envelope.
{
  "name": "admin_pause_agent",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "target_grant_id": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80
      },
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "required": [
      "target_grant_id",
      "purpose"
    ],
    "additionalProperties": false
  }
}
admin_resume_agentResume a target grant within this manager's delegation envelope.
{
  "name": "admin_resume_agent",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "target_grant_id": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80
      },
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "required": [
      "target_grant_id",
      "purpose"
    ],
    "additionalProperties": false
  }
}
admin_revoke_agentRevoke a target grant within this manager's delegation envelope.
{
  "name": "admin_revoke_agent",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "target_grant_id": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80
      },
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "required": [
      "target_grant_id",
      "purpose"
    ],
    "additionalProperties": false
  }
}
admin_update_accessChange a target grant's access within this manager's delegation envelope.
{
  "name": "admin_update_access",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "target_grant_id": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80
      },
      "changes": {
        "minItems": 1,
        "maxItems": 80,
        "type": "array",
        "items": {
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "op": {
                  "type": "string",
                  "const": "set_category"
                },
                "category": {
                  "type": "string"
                },
                "scope": {
                  "type": "string",
                  "enum": [
                    "none",
                    "some",
                    "all"
                  ]
                }
              },
              "required": [
                "op",
                "category",
                "scope"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "op": {
                  "type": "string",
                  "enum": [
                    "allow",
                    "deny",
                    "remove"
                  ]
                },
                "path": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 180
                }
              },
              "required": [
                "op",
                "path"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "op": {
                  "type": "string",
                  "const": "set_expiry"
                },
                "expires_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "op",
                "expires_at"
              ],
              "additionalProperties": false
            }
          ]
        }
      },
      "purpose": {
        "type": "string",
        "minLength": 3,
        "maxLength": 200
      },
      "purpose_tag": {
        "type": "string",
        "enum": [
          "booking",
          "shopping",
          "support",
          "coding",
          "writing",
          "research",
          "personal",
          "other"
        ]
      }
    },
    "required": [
      "target_grant_id",
      "changes",
      "purpose"
    ],
    "additionalProperties": false
  }
}

Registered data categories

identityIdentitystandard · field_level
contactContactstandard · field_level
addressAddressesstandard · field_level
preferencesPreferencesstandard · readable_by_default
peoplePeoplestandard · per_person
work_contextWork contextstandard · per_space
memoriesMemories and notesstandard · per_space_agent_drafts
credentialsCredentialssensitive · category_or_item_first_read
cardsVirtual cardsrestricted · per_card_fill_only
customCustomstandard · user_defined_fields

Access discovery

list_access returns the categories and opaque item IDs available to the current grant without returning stored values or user-assigned item labels.

Read and request

get_profile, find_items, get_item, and get_otp_code request only the fields needed for the current task. Sensitive reads can wait for owner approval. request_access asks for additional scope; get_request_status checks read, scope, and payment requests.

Payments

request_payment requests one purchase on a card assigned to this grant. It records the reported amount, currency, merchant, and purpose. Per-purchase approval is the default. A user-held card is released only after the owner approves and is encrypted to the grant's registered client key. Without that key, Limits does not prepare a release. Limits does not charge a card or verify merchant claims.

Session handling

end_task closes task-scoped grants. register_session_key registers a fresh P-256 ECDH public key for protected releases. Keep the matching private key only in the client and register a new key for a new session.

Encrypted releases

User-held values stay encrypted in the browser. The browser encrypts only approved fields to the grant's registered P-256 agent key; without that key, the release is not prepared. get_request_status returns a one-time encrypted_release envelope. OTP requests transform the seed into the current code in the browser and encrypt only that code. Decrypt agent-key envelopes with ECDH P-256, HKDF-SHA256, and AES-256-GCM. The HKDF salt is SHA-256(UTF-8("limits|mcp-release|v1|{grant_id}|{request_id}|{item_id}|{version}")); HKDF info is UTF-8("limits|mcp-release|v1"). Use the same context string as AES-GCM additional authenticated data. The envelope includes that context's identifiers, ephemeral_public_key_b64, nonce_b64, ciphertext_b64, and algorithm. Releases expire after two minutes and can be collected once. Keep the matching private key only in the agent client; Limits rejects server-transit releases.