Skip to main content
Glama
kuyen-labs

Fuul MCP Server

by kuyen-labs

send_event

Send conversion events for real-time reward attribution with deduplication. Validate with dry_run then confirm to avoid duplicates.

Instructions

Send one conversion event: POST /api/v1/events. Triggers real-time reward attribution. Required: name (trigger name), user_identifier, user_identifier_type, dedup_id. Optional: args, timestamp (ms). Duplicate dedup_id returns HTTP 409. After send, use check_event_status with verbose=true (dedup_id + event_name) to verify the pipeline. dry_run then confirmed. Auth: project API key only (pass project_api_key or set env FUUL_MCP_PROJECT_API_KEY). Dashboard OAuth from fuul-mcp login is not accepted on these routes. Rate limit: 100 requests/minute. If the API returns HTTP 429, wait Retry-After seconds (if present) before retrying.

args shape for value/revenue: For non-tracking events (swaps, deposits), args can include value and/or revenue, each as { amount: string, currency: {...} }. amount is a string integer in the smallest unit (e.g. "1000000" for 1 USDC with 6 decimals); decimals only for fiat. currency accepts two forms: (1) Official symbol: { "name": "USDC" } or { "name": "USD" } or { "name": "POINT" }, (2) Token identifier: { "identifier": "0xa0b...", "identifier_type": "evm_contract", "chain_identifier": "evm:1" }.

Example with value/revenue: {"name":"swap","user_identifier":"0x...","user_identifier_type":"evm_address","dedup_id":"swap-123","args":{"value":{"amount":"1000000","currency":{"name":"USDC"}},"revenue":{"amount":"3000","currency":{"name":"USDC"}}},"dry_run":true}.

Simple dry_run: {"name":"trade","user_identifier":"0x...","user_identifier_type":"evm_address","dedup_id":"uuid-here","dry_run":true}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_api_keyNoProject API key used as Bearer for this request. Falls back to FUUL_MCP_PROJECT_API_KEY when omitted.
dry_runNoIf true, validate and return a preview only; no server mutation.
confirmedNoMust be true to perform the mutation after reviewing dry_run output.
nameYesTrigger/event name configured in the project.
dedup_idYesUnique idempotency key; duplicates return HTTP 409 on single send.
user_identifierYesUser who performed the action.
user_identifier_typeYes
argsNoEvent metadata including optional value/revenue. See schema for structure.
timestampNoEvent time in ms since epoch; defaults to server time.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: idempotency via dedup_id (409), dry_run/confirmed workflow, rate limiting (429 with Retry-After), auth requirements (only project API key), and detailed args shape for value/revenue. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-organized, with essential info first (purpose, required fields, dedup behavior, auth, rate limits) and detailed args later. Could be slightly trimmed, but every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 params, nested objects, no output schema), the description covers auth, errors, rate limits, workflow, and args thoroughly. It also directs to check_event_status for verification, completing the usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 89%, and the description adds significant context beyond the schema: explains the dry_run/confirmed workflow, details the args.value/revenue structure with examples, and clarifies auth parameter fallback. This enhances understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Send one conversion event' and provides the endpoint. It distinguishes from sibling tools like send_batch_events and check_event_status, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains when to use this tool (after dry_run/confirmed pattern), when to use alternatives (check_event_status for verification), and when not to use (auth specifics: Dashboard OAuth not accepted). Also covers rate limits and error handling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kuyen-labs/mcp_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server