{
  "version": "0.1.0",
  "reviewedAt": "2026-10-12",
  "terms": [
    {
      "id": "ai-agent",
      "name": "AI agent",
      "category": "Agents",
      "definition": "Software that selects and carries out actions toward a goal using inputs, tools and a control loop. Autonomy varies by implementation.",
      "example": "A research agent gathers prices and drafts a report; a trading agent may also submit orders.",
      "failureMode": "Calling something an agent does not establish its permissions or competence.",
      "aliases": [],
      "sources": [
        {
          "label": "LangGraph documentation",
          "url": "https://docs.langchain.com/oss/python/langgraph/overview"
        }
      ],
      "related": [
        "harness",
        "tool-calling",
        "delegation"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "agentic-finance",
      "name": "Agentic finance",
      "category": "Agents",
      "definition": "Financial workflows where software agents help plan, monitor or execute actions under delegated authority.",
      "example": "An agent checks a treasury balance and proposes a rebalance for human approval.",
      "failureMode": "Automating a decision does not remove financial, legal or operational responsibility.",
      "aliases": [],
      "sources": [
        {
          "label": "Almanak SDK documentation",
          "url": "https://docs.almanak.co/"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "harness",
      "name": "Agent harness",
      "category": "Agents",
      "definition": "The surrounding system that controls tool access, execution, memory and the lifecycle of an agent.",
      "example": "The same model runs inside a read-only research harness or a wallet-enabled execution harness.",
      "failureMode": "Model quality cannot compensate for unrestricted execution permissions.",
      "aliases": [],
      "sources": [
        {
          "label": "LangGraph documentation",
          "url": "https://docs.langchain.com/oss/python/langgraph/overview"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "tool-calling",
      "name": "Tool calling",
      "category": "Agents",
      "definition": "A model emits a structured request for an external function; the application validates and executes it.",
      "example": "The model requests a price lookup, which the application sends to a market-data API.",
      "failureMode": "A model request is not itself user consent to execute a transaction.",
      "aliases": [],
      "sources": [
        {
          "label": "LangGraph documentation",
          "url": "https://docs.langchain.com/oss/python/langgraph/overview"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "workflow",
      "name": "Workflow",
      "category": "Agents",
      "definition": "A defined sequence of tasks with explicit transitions and conditions.",
      "example": "Fetch data, validate it, calculate exposure, then request approval.",
      "failureMode": "A fixed workflow and an open-ended agent have different failure boundaries.",
      "aliases": [],
      "sources": [
        {
          "label": "LangGraph documentation",
          "url": "https://docs.langchain.com/oss/python/langgraph/overview"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "human-in-the-loop",
      "name": "Human in the loop",
      "category": "Controls",
      "definition": "A control point requiring a person to review or intervene in a workflow.",
      "example": "A proposed trade pauses until an authorised reviewer approves the exact order.",
      "failureMode": "A vague approval prompt can hide material changes in amount or destination.",
      "aliases": [],
      "sources": [
        {
          "label": "LangGraph documentation",
          "url": "https://docs.langchain.com/oss/python/langgraph/overview"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "checkpoint",
      "name": "Checkpoint",
      "category": "Agents",
      "definition": "A saved execution state used to resume or inspect a workflow.",
      "example": "A paused research workflow resumes after an approval step.",
      "failureMode": "Resuming old state can reuse outdated market data or approvals.",
      "aliases": [],
      "sources": [
        {
          "label": "LangGraph documentation",
          "url": "https://docs.langchain.com/oss/python/langgraph/overview"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "mcp",
      "name": "Model Context Protocol (MCP)",
      "category": "Protocols",
      "definition": "A protocol connecting applications to tools, resources and contextual data through servers and clients.",
      "example": "A research application reads a market-data resource from an MCP server.",
      "failureMode": "A discoverable server is not automatically trustworthy or authorised.",
      "aliases": [
        "MCP"
      ],
      "sources": [
        {
          "label": "MCP security guidance",
          "url": "https://modelcontextprotocol.io/docs/2025-11-25/tutorials/security/security_best_practices"
        }
      ],
      "related": [
        "scope",
        "prompt-injection",
        "token-passthrough"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "a2a",
      "name": "Agent-to-Agent (A2A)",
      "category": "Protocols",
      "definition": "A protocol for communication and task coordination between agent systems.",
      "example": "A planning agent delegates a research task to another service.",
      "failureMode": "Interoperability does not prove the other agent is honest or competent.",
      "aliases": [
        "A2A"
      ],
      "sources": [
        {
          "label": "A2A protocol documentation",
          "url": "https://a2a-protocol.org/latest/"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "agent-card",
      "name": "Agent card",
      "category": "Protocols",
      "definition": "A discovery document describing an agent service and its advertised capabilities.",
      "example": "A client reads a card before choosing how to contact a service.",
      "failureMode": "Advertised capabilities are claims; authenticate the service separately.",
      "aliases": [],
      "sources": [
        {
          "label": "A2A protocol documentation",
          "url": "https://a2a-protocol.org/latest/"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "prompt-injection",
      "name": "Prompt injection",
      "category": "Controls",
      "definition": "Untrusted content attempts to redirect an AI system away from its intended instructions.",
      "example": "A scraped page tells an agent to disclose its API key.",
      "failureMode": "Treat retrieved documents as data, not new authority.",
      "aliases": [],
      "sources": [
        {
          "label": "MCP security guidance",
          "url": "https://modelcontextprotocol.io/docs/2025-11-25/tutorials/security/security_best_practices"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "least-privilege",
      "name": "Least privilege",
      "category": "Controls",
      "definition": "Granting only the permissions needed for a particular task.",
      "example": "A research key can read balances but cannot trade or withdraw.",
      "failureMode": "An API key with withdrawal rights can expose funds even if a bot only intends to trade.",
      "aliases": [],
      "sources": [
        {
          "label": "MCP security guidance",
          "url": "https://modelcontextprotocol.io/docs/2025-11-25/tutorials/security/security_best_practices"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "scope",
      "name": "Permission scope",
      "category": "Controls",
      "definition": "The explicit set of actions or resources an authorisation permits.",
      "example": "A token permits price reads for one account, not money transfers.",
      "failureMode": "A broad scope increases the impact of compromise.",
      "aliases": [],
      "sources": [
        {
          "label": "MCP security guidance",
          "url": "https://modelcontextprotocol.io/docs/2025-11-25/tutorials/security/security_best_practices"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "token-passthrough",
      "name": "Token passthrough",
      "category": "Controls",
      "definition": "Forwarding a received access token to a downstream service without the appropriate audience boundary.",
      "example": "An intermediary forwards a token intended for itself to another API.",
      "failureMode": "This can bypass controls and obscure accountability; MCP forbids this pattern.",
      "aliases": [],
      "sources": [
        {
          "label": "MCP security guidance",
          "url": "https://modelcontextprotocol.io/docs/2025-11-25/tutorials/security/security_best_practices"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "ssrf",
      "name": "Server-side request forgery (SSRF)",
      "category": "Controls",
      "definition": "A service is induced to fetch a destination it should not access.",
      "example": "An untrusted URL points at an internal metadata service.",
      "failureMode": "Unrestricted URL fetching can expose internal systems and credentials.",
      "aliases": [
        "SSRF"
      ],
      "sources": [
        {
          "label": "MCP security guidance",
          "url": "https://modelcontextprotocol.io/docs/2025-11-25/tutorials/security/security_best_practices"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "delegation",
      "name": "Delegated authority",
      "category": "Controls",
      "definition": "Permission for another actor or program to perform a defined action on behalf of a principal.",
      "example": "An agent may trade a limited budget during a fixed time window.",
      "failureMode": "Delegation needs bounds, expiry and an effective revocation route.",
      "aliases": [],
      "sources": [
        {
          "label": "MCP security guidance",
          "url": "https://modelcontextprotocol.io/docs/2025-11-25/tutorials/security/security_best_practices"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "smart-contract",
      "name": "Smart contract",
      "category": "DeFi",
      "definition": "Code deployed to a blockchain that executes according to the network\u2019s rules.",
      "example": "A lending contract checks collateral before allowing a borrow.",
      "failureMode": "Code can contain bugs or rely on privileged administrators.",
      "aliases": [],
      "sources": [
        {
          "label": "Ethereum developer documentation",
          "url": "https://ethereum.org/developers/docs/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "wallet",
      "name": "Wallet",
      "category": "DeFi",
      "definition": "Software or hardware used to manage keys and interact with blockchain accounts.",
      "example": "A wallet signs a transaction that moves tokens.",
      "failureMode": "The interface may conceal what a signature actually authorises.",
      "aliases": [],
      "sources": [
        {
          "label": "Ethereum developer documentation",
          "url": "https://ethereum.org/developers/docs/"
        }
      ],
      "related": [
        "private-key",
        "token-approval",
        "account-abstraction"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "private-key",
      "name": "Private key",
      "category": "DeFi",
      "definition": "Secret cryptographic material used to authorise actions for an account.",
      "example": "A signature proves control of a signing key.",
      "failureMode": "Key possession does not prove an action reflected the owner\u2019s intent.",
      "aliases": [],
      "sources": [
        {
          "label": "Ethereum developer documentation",
          "url": "https://ethereum.org/developers/docs/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "account-abstraction",
      "name": "Account abstraction",
      "category": "DeFi",
      "definition": "Account designs that permit programmable validation and execution rules beyond a simple externally owned account.",
      "example": "An account requires multiple approvals for a large transfer.",
      "failureMode": "Custom validation and upgrade controls add their own implementation risks.",
      "aliases": [],
      "sources": [
        {
          "label": "Ethereum developer documentation",
          "url": "https://ethereum.org/developers/docs/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "token-approval",
      "name": "Token approval",
      "category": "DeFi",
      "definition": "An allowance that permits a spender to transfer tokens within a specified limit.",
      "example": "A swap contract receives permission to spend a token amount.",
      "failureMode": "An unlimited allowance can outlive the intended transaction.",
      "aliases": [],
      "sources": [
        {
          "label": "Ethereum developer documentation",
          "url": "https://ethereum.org/developers/docs/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "oracle",
      "name": "Oracle",
      "category": "DeFi",
      "definition": "A mechanism supplying external information to a blockchain application.",
      "example": "A lending protocol receives a reference asset price.",
      "failureMode": "Bad or stale information can trigger incorrect financial actions.",
      "aliases": [],
      "sources": [
        {
          "label": "Ethereum developer documentation",
          "url": "https://ethereum.org/developers/docs/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "gas",
      "name": "Gas",
      "category": "DeFi",
      "definition": "A unit measuring computation and execution work on networks such as Ethereum.",
      "example": "A transaction consumes gas while executing contract calls.",
      "failureMode": "The cost depends on the network and transaction; a failed execution can still cost gas.",
      "aliases": [],
      "sources": [
        {
          "label": "Ethereum developer documentation",
          "url": "https://ethereum.org/developers/docs/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "finality",
      "name": "Finality",
      "category": "DeFi",
      "definition": "The degree of assurance that a recorded transaction will not be reversed under the network\u2019s rules.",
      "example": "A payment workflow waits for an appropriate confirmation threshold.",
      "failureMode": "A transaction appearing in a block is not always sufficient settlement assurance.",
      "aliases": [],
      "sources": [
        {
          "label": "Ethereum developer documentation",
          "url": "https://ethereum.org/developers/docs/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "mev",
      "name": "Maximal extractable value (MEV)",
      "category": "DeFi",
      "definition": "Value arising from including, excluding or ordering transactions within block production.",
      "example": "A trader\u2019s swap can be affected by strategically ordered transactions.",
      "failureMode": "Quoted output can differ from the eventual execution outcome.",
      "aliases": [
        "MEV"
      ],
      "sources": [
        {
          "label": "Ethereum developer documentation",
          "url": "https://ethereum.org/developers/docs/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "slippage",
      "name": "Slippage",
      "category": "Trading",
      "definition": "The difference between a reference or expected execution price and the achieved price.",
      "example": "A trade expected at 100 executes at 101.",
      "failureMode": "A slippage tolerance limits acceptable execution conditions; it does not guarantee a fill.",
      "aliases": [],
      "sources": [
        {
          "label": "Definitive execution documentation",
          "url": "https://docs.definitive.fi/"
        }
      ],
      "related": [
        "spread",
        "limit-order",
        "mev"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "spread",
      "name": "Bid-ask spread",
      "category": "Trading",
      "definition": "The gap between the best displayed buying and selling prices for a market at a moment in time.",
      "example": "A bid of 99 and ask of 101 produce a spread of 2.",
      "failureMode": "Zero explicit fees do not imply zero execution cost.",
      "aliases": [],
      "sources": [
        {
          "label": "Definitive execution documentation",
          "url": "https://docs.definitive.fi/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "twap",
      "name": "Time-weighted average price (TWAP)",
      "category": "Trading",
      "definition": "An execution approach that divides an order across time rather than submitting its entire amount at once.",
      "example": "A large order is sliced into smaller scheduled orders.",
      "failureMode": "Market movement, outages and shallow liquidity can still produce poor fills.",
      "aliases": [
        "TWAP"
      ],
      "sources": [
        {
          "label": "Definitive execution documentation",
          "url": "https://docs.definitive.fi/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "limit-order",
      "name": "Limit order",
      "category": "Trading",
      "definition": "An instruction to trade only at a specified price or better.",
      "example": "A buy limit at 100 does not accept a higher purchase price.",
      "failureMode": "Price protection does not guarantee execution.",
      "aliases": [],
      "sources": [
        {
          "label": "Definitive execution documentation",
          "url": "https://docs.definitive.fi/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "stop-order",
      "name": "Stop order",
      "category": "Trading",
      "definition": "An order condition that activates an execution instruction when a specified trigger is reached.",
      "example": "A stop triggers an exit request when the reference price crosses a level.",
      "failureMode": "Triggering is not the same as filling, especially during fast markets.",
      "aliases": [],
      "sources": [
        {
          "label": "Definitive execution documentation",
          "url": "https://docs.definitive.fi/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "backtest",
      "name": "Backtest",
      "category": "Agents",
      "definition": "A historical simulation used to examine how a strategy would have behaved under specified assumptions.",
      "example": "A strategy is evaluated on a frozen historical price dataset.",
      "failureMode": "Look-ahead bias, overfitting and omitted costs can make results misleading.",
      "aliases": [],
      "sources": [
        {
          "label": "Almanak SDK documentation",
          "url": "https://docs.almanak.co/"
        }
      ],
      "related": [
        "paper-trading",
        "evaluation"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "paper-trading",
      "name": "Paper trading",
      "category": "Trading",
      "definition": "A simulation of trading without putting live capital at risk.",
      "example": "A bot records hypothetical orders and performance.",
      "failureMode": "Simulated fills do not establish live execution quality.",
      "aliases": [],
      "sources": [
        {
          "label": "Almanak SDK documentation",
          "url": "https://docs.almanak.co/"
        }
      ],
      "related": [
        "wallet"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "idempotency",
      "name": "Idempotency",
      "category": "Controls",
      "definition": "A design property where repeating a request does not create an additional unintended effect.",
      "example": "A retried payment request retains one transaction identifier.",
      "failureMode": "Retries without duplicate protection can send funds twice.",
      "aliases": [],
      "sources": [
        {
          "label": "LangGraph documentation",
          "url": "https://docs.langchain.com/oss/python/langgraph/overview"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "evaluation",
      "name": "Agent evaluation",
      "category": "Agents",
      "definition": "A repeatable process for measuring behaviour against defined tasks and failure criteria.",
      "example": "Test whether an agent rejects an unapproved withdrawal destination.",
      "failureMode": "A successful demo is not a broad reliability benchmark.",
      "aliases": [],
      "sources": [
        {
          "label": "LangGraph documentation",
          "url": "https://docs.langchain.com/oss/python/langgraph/overview"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "risk-budget",
      "name": "Risk budget",
      "category": "Controls",
      "definition": "A defined limit on the financial or operational exposure a workflow may create.",
      "example": "An automation policy caps order size and cumulative daily exposure.",
      "failureMode": "A per-order cap alone may permit many repeated orders.",
      "aliases": [],
      "sources": [
        {
          "label": "Almanak SDK documentation",
          "url": "https://docs.almanak.co/"
        }
      ],
      "related": [
        "ai-agent"
      ],
      "reviewedAt": "2026-10-12"
    },
    {
      "id": "kill-switch",
      "name": "Kill switch",
      "category": "Controls",
      "definition": "A mechanism intended to halt further automated action.",
      "example": "An operator revokes an execution key during an incident.",
      "failureMode": "Stopping software may not cancel existing orders or reverse completed transfers.",
      "aliases": [],
      "sources": [
        {
          "label": "Almanak SDK documentation",
          "url": "https://docs.almanak.co/"
        }
      ],
      "related": [
        "scope",
        "delegation",
        "risk-budget"
      ],
      "reviewedAt": "2026-10-12"
    }
  ],
  "paths": [
    {
      "id": "beginner",
      "name": "Understand agentic finance",
      "description": "Start with what agents do, then learn the authority boundary before execution.",
      "terms": [
        "ai-agent",
        "agentic-finance",
        "harness",
        "tool-calling",
        "delegation",
        "least-privilege",
        "human-in-the-loop"
      ]
    },
    {
      "id": "builder",
      "name": "Build a bounded agent",
      "description": "Connect services, constrain permissions and design for interruption and retries.",
      "terms": [
        "mcp",
        "a2a",
        "agent-card",
        "scope",
        "prompt-injection",
        "ssrf",
        "idempotency",
        "checkpoint",
        "kill-switch"
      ]
    },
    {
      "id": "trader",
      "name": "Evaluate a trading workflow",
      "description": "Separate simulation, execution costs and capital controls.",
      "terms": [
        "backtest",
        "paper-trading",
        "spread",
        "slippage",
        "limit-order",
        "stop-order",
        "twap",
        "risk-budget"
      ]
    }
  ],
  "quiz": [
    {
      "question": "A bot has a great backtest. What does that establish?",
      "answers": [
        "Live profits are guaranteed",
        "Historical simulation results under stated assumptions",
        "Withdrawals are safe"
      ],
      "correct": 1,
      "explanation": "Backtests depend on data and assumptions. They do not establish live execution or future returns."
    },
    {
      "question": "Which permission suits a price-monitoring agent?",
      "answers": [
        "Read-only market data",
        "Trading and withdrawals",
        "Unlimited token approvals"
      ],
      "correct": 0,
      "explanation": "Match authority to the task. Monitoring prices does not require moving funds."
    },
    {
      "question": "A stop condition triggered. What still needs checking?",
      "answers": [
        "Nothing: the exit is complete",
        "Whether an order actually filled",
        "Whether the strategy is profitable forever"
      ],
      "correct": 1,
      "explanation": "A trigger and a fill are separate events. Verify the actual execution state."
    }
  ]
}
