Agent Spend Guard — owner-set purchasing guardrails

Free spend guardrails for AI agents: approve/deny/ask_user, caps, dupes.

我該用這個嗎

品質與安全性

B
說明品質
100%
結構描述完整度
73%
命名品質
80%
汙染風險
20%
權限相符程度
100%
協定合規性
100%

發現項目(5)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domain在 spend_guard_check_purchase 中
  • MEDIUMTool description contains URL to non-standard domain在 spend_guard_record_purchase 中
  • MEDIUMTool description contains URL to non-standard domain在 spend_guard_set_rules 中
  • MEDIUMTool description contains URL to non-standard domain在 spend_guard_report 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~2,169Token(工具定義)
~3.5 KB典型回應大小
中等的注意力影響(128k 上下文的 1.69%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "agent-spend-guard": {
      "url": "https://a2awire.com/mcp/connectors/spend-guard/http"
    }
  }
}

遠端端點

https://a2awire.com/mcp/connectors/spend-guard/httpstreamable-http

它能做什麼

工具清單

工具(4)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟡spend_guard_check_purchase(merchant, amount_usd, currency, category, description, ...)

Humans: sign up with your email at https://a2awire.com/api-key and create an API key, then hand it to your agent (it sends Authorization: Bearer <key> or X-API-Key with every call). Agents without an account: a reviewable bootstrap script is served at https://a2awire.com/api/v1/connectors/spend-guard/bootstrap.sh (download it, read it, then run it to mint a key). Call BEFORE checkout. Evaluate a proposed purchase (merchant, amount_usd) against the owner's spend rules and recent ledger. Returns a decision (approve, deny, or ask_user), a plain-English reason, the remaining monthly budget when a cap is set, and a check_id. deny means denylisted merchant or over the monthly cap; ask_user means above the per-purchase threshold or a possible duplicate of a purchase in the last 10 minutes. Optional tx_ref is your idempotency key for this purchase; pass the same value to spend_guard_record_purchase afterwards. Appends a check event; checks never consume budget. USD only (the currency argument is kept for forward compatibility; any other value is rejected). Not guest-callable. REST: POST /api/v1/spend-guard/check.

輸入結構描述

{
  "type": "object",
  "properties": {
    "merchant": {
      "maxLength": 200,
      "minLength": 1,
      "title": "Merchant",
      "type": "string"
    },
    "amount_usd": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "maximum": 100000,
          "type": "number"
        },
        {
          "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
          "type": "string"
        }
      ],
      "title": "Amount Usd"
    },
    "currency": {
      "default": "USD",
      "description": "USD only. Kept for forward compatibility; any other value is rejected.",
      "maxLength": 8,
      "title": "Currency",
      "type": "string"
    },
    "category": {
      "anyOf": [
        {
          "maxLength": 100,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Category"
    },
    "description": {
      "anyOf": [
        {
          "maxLength": 500,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Description"
    },
    "tx_ref": {
      "anyOf": [
        {
          "maxLength": 200,
          "minLength": 1,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional idempotency key for this purchase; pass the same value to the record call afterwards. Checks are exempt from the uniqueness constraint that applies to recorded purchases.",
      "title": "Tx Ref"
    }
  },
  "required": [
    "merchant",
    "amount_usd"
  ],
  "additionalProperties": false,
  "description": "Arguments for ``spend_guard_check_purchase`` (call BEFORE checkout).\n\nThe owner is derived from the authenticated principal, never from the\narguments. ``tx_ref`` is optional here; reuse the same value on\n``spend_guard_record_purchase`` so the check and its record share one\nidempotency key. ``currency`` is USD only; the field is kept for forward\ncompatibility and any other value is rejected.",
  "title": "SpendGuardCheckPurchaseInput"
}
🟡spend_guard_record_purchase(merchant, amount_usd, currency, category, description, ...)

Humans: sign up with your email at https://a2awire.com/api-key and create an API key, then hand it to your agent (it sends Authorization: Bearer <key> or X-API-Key with every call). Agents without an account: a reviewable bootstrap script is served at https://a2awire.com/api/v1/connectors/spend-guard/bootstrap.sh (download it, read it, then run it to mint a key). Call AFTER checkout. Record a completed purchase in the owner's spend ledger. tx_ref is required and unique per owner: replaying the same tx_ref returns the original record without double counting (recorded_previously is true when the tx_ref was already in your ledger before this call, an idempotent replay; false on first write). Optional check_id links the record to its prior spend_guard_check_purchase; a check_id already recorded returns a conflict error. Returns the recorded event and the month-to-date total. USD only (the currency argument is kept for forward compatibility; any other value is rejected). Not guest-callable. REST: POST /api/v1/spend-guard/record.

輸入結構描述

{
  "type": "object",
  "properties": {
    "merchant": {
      "maxLength": 200,
      "minLength": 1,
      "title": "Merchant",
      "type": "string"
    },
    "amount_usd": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "maximum": 100000,
          "type": "number"
        },
        {
          "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
          "type": "string"
        }
      ],
      "title": "Amount Usd"
    },
    "currency": {
      "default": "USD",
      "description": "USD only. Kept for forward compatibility; any other value is rejected.",
      "maxLength": 8,
      "title": "Currency",
      "type": "string"
    },
    "category": {
      "anyOf": [
        {
          "maxLength": 100,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Category"
    },
    "description": {
      "anyOf": [
        {
          "maxLength": 500,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Description"
    },
    "tx_ref": {
      "description": "Caller idempotency key, unique across your recorded purchases; replays return the original record.",
      "maxLength": 200,
      "minLength": 1,
      "title": "Tx Ref",
      "type": "string"
    },
    "check_id": {
      "anyOf": [
        {
          "format": "uuid",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional id from spend_guard_check_purchase; at most one record may consume each check.",
      "title": "Check Id"
    }
  },
  "required": [
    "merchant",
    "amount_usd",
    "tx_ref"
  ],
  "additionalProperties": false,
  "description": "Arguments for ``spend_guard_record_purchase`` (call AFTER checkout).\n\n``tx_ref`` is required and unique across your recorded purchases;\n``check_id`` optionally links back to the check that preceded the\npurchase. The response's ``recorded_previously`` is true when this\ntx_ref was already in your ledger before this call (an idempotent\nreplay); false on first write. ``currency`` is USD only; the field is\nkept for forward compatibility and any other value is rejected.",
  "title": "SpendGuardRecordPurchaseInput"
}
🔴spend_guard_set_rules(monthly_cap_usd, per_purchase_threshold_usd, merchant_denylist)

Humans: sign up with your email at https://a2awire.com/api-key and create an API key, then hand it to your agent (it sends Authorization: Bearer <key> or X-API-Key with every call). Agents without an account: a reviewable bootstrap script is served at https://a2awire.com/api/v1/connectors/spend-guard/bootstrap.sh (download it, read it, then run it to mint a key). Set the calling owner's spend-guard rules: an optional monthly cap in USD, an optional per-purchase threshold in USD, and an optional exact-match merchant denylist (case-insensitive). Full declaration: omit or null a field to clear that rule. With no rules every check approves (observation mode) and purchases are still recorded. Returns the effective rules. Not guest-callable. REST: PUT /api/v1/spend-guard/rules.

輸入結構描述

{
  "type": "object",
  "properties": {
    "monthly_cap_usd": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "maximum": 100000,
          "type": "number"
        },
        {
          "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Cumulative recorded spend per UTC calendar month at or above which checks deny. Null clears the cap.",
      "title": "Monthly Cap Usd"
    },
    "per_purchase_threshold_usd": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "maximum": 100000,
          "type": "number"
        },
        {
          "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "A single purchase strictly above this amount asks the user first. Null clears the threshold.",
      "title": "Per Purchase Threshold Usd"
    },
    "merchant_denylist": {
      "anyOf": [
        {
          "items": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "maxItems": 100,
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Exact-match merchant names (case-insensitive) whose purchases are denied, up to 100 entries. Null clears the list.",
      "title": "Merchant Denylist"
    }
  },
  "additionalProperties": false,
  "description": "Arguments for ``spend_guard_set_rules``.\n\nThe owner is derived from the authenticated principal, never from the\narguments. Full declaration: omit or null a field to clear that rule.",
  "title": "SpendGuardSetRulesInput"
}
🟢spend_guard_report(month)

Humans: sign up with your email at https://a2awire.com/api-key and create an API key, then hand it to your agent (it sends Authorization: Bearer <key> or X-API-Key with every call). Agents without an account: a reviewable bootstrap script is served at https://a2awire.com/api/v1/connectors/spend-guard/bootstrap.sh (download it, read it, then run it to mint a key). Month-to-date spend summary for the calling owner: total USD recorded, purchase count, top merchants (up to 5), current rules, and remaining monthly budget when a cap is set. Optional month (YYYY-MM) reads a prior month; defaults to the current UTC month. Not guest-callable. REST: GET /api/v1/spend-guard/report.

輸入結構描述

{
  "type": "object",
  "properties": {
    "month": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional month filter (YYYY-MM); defaults to the current UTC month.",
      "title": "Month"
    }
  },
  "additionalProperties": false,
  "description": "Arguments for ``spend_guard_report`` (no required arguments).",
  "title": "SpendGuardReportInput"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本4 個工具
已驗證未記錄版本4 個工具