{
  "openapi": "3.1.0",
  "info": {
    "title": "EvidInvest Financial Data API",
    "version": "1.0.0",
    "description": "REST API exposing 54 financial data, valuation, SEC filing, and portfolio tools, every figure traceable to an SEC filing. Designed for AI agents and external LLMs. Two ways to pay: (1) Bearer API key from https://evidinvest.com/settings/api-keys, 1 MCP credit per call; (2) NO ACCOUNT NEEDED — pay per request with the Machine Payments Protocol (https://mpp.dev) on the /v1/paid/* routes. Prices are dynamic and quoted free at GET /v1/quote.",
    "contact": {
      "name": "EvidInvest",
      "url": "https://evidinvest.com"
    }
  },
  "servers": [
    {
      "url": "https://mcp.evidinvest.com",
      "description": "Production"
    }
  ],
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "EvidInvest API key (evid_sk_...)"
      }
    }
  },
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "paths": {
    "/v1/tools/search_sec_filings": {
      "post": {
        "operationId": "call_search_sec_filings",
        "summary": "Searches SEC filings AND 8-K press-release exhibits and earnings-call transcripts (auto-routed); use domain=supply_chain for cross-company supplier/customer evidence. Returns exact source text with accession-numbered citations and sec.gov source URLs. Powered by Aether.",
        "description": "Searches SEC filings AND 8-K press-release exhibits and earnings-call transcripts (auto-routed); use domain=supply_chain for cross-company supplier/customer evidence. Returns exact source text with accession-numbered citations and sec.gov source URLs. Powered by Aether.",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Search SEC filings",
        "x-mcp-annotations": {
          "title": "Search SEC filings",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Natural language query, e.g. 'NVDA data center revenue Q2 2026'"
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 5, max 20)"
                      },
                      "tickers": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Scope to these tickers, e.g. ['DELL'] (auto-routing only)"
                      },
                      "domain": {
                        "type": "string",
                        "enum": [
                          "public_equity",
                          "supply_chain",
                          "auto"
                        ],
                        "description": "supply_chain = cross-company supplier/customer evidence (filing documents only)"
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/search_earnings_transcripts": {
      "post": {
        "operationId": "call_search_earnings_transcripts",
        "summary": "Search earnings-call transcripts and 8-K EX-99 press-release exhibits by speaker turn. Returns verbatim quotes with speaker, fiscal quarter, call date and sec.gov citation. Powered by Aether.",
        "description": "Search earnings-call transcripts and 8-K EX-99 press-release exhibits by speaker turn. Returns verbatim quotes with speaker, fiscal quarter, call date and sec.gov citation. Powered by Aether.",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Search earnings transcripts",
        "x-mcp-annotations": {
          "title": "Search earnings transcripts",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Natural language query"
                      },
                      "ticker": {
                        "type": "string",
                        "description": "Filter to a ticker, e.g. NVDA"
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 5, max 20)"
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_company_profile": {
      "post": {
        "operationId": "call_get_company_profile",
        "summary": "Get company profile information including name, sector, industry, exchange, and description",
        "description": "Get company profile information including name, sector, industry, exchange, and description",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Company profile",
        "x-mcp-annotations": {
          "title": "Company profile",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_income_statement": {
      "post": {
        "operationId": "call_get_income_statement",
        "summary": "Get income statement data with key metrics like revenue, gross profit, operating income, EBITDA, and net income",
        "description": "Get income statement data with key metrics like revenue, gross profit, operating income, EBITDA, and net income",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Income statement",
        "x-mcp-annotations": {
          "title": "Income statement",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "period": {
                        "type": "string",
                        "enum": [
                          "annual",
                          "quarterly"
                        ],
                        "description": "Period type (default: annual)"
                      },
                      "limit": {
                        "type": "number",
                        "description": "Number of periods to return"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_balance_sheet": {
      "post": {
        "operationId": "call_get_balance_sheet",
        "summary": "Get balance sheet data with assets, liabilities, equity, and debt information",
        "description": "Get balance sheet data with assets, liabilities, equity, and debt information",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Balance sheet",
        "x-mcp-annotations": {
          "title": "Balance sheet",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "period": {
                        "type": "string",
                        "enum": [
                          "annual",
                          "quarterly"
                        ],
                        "description": "Period type (default: annual)"
                      },
                      "limit": {
                        "type": "number",
                        "description": "Number of periods to return"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_cash_flow": {
      "post": {
        "operationId": "call_get_cash_flow",
        "summary": "Get cash flow statement with operating, investing, and financing activities",
        "description": "Get cash flow statement with operating, investing, and financing activities",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Cash flow statement",
        "x-mcp-annotations": {
          "title": "Cash flow statement",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "period": {
                        "type": "string",
                        "enum": [
                          "annual",
                          "quarterly"
                        ],
                        "description": "Period type (default: annual)"
                      },
                      "limit": {
                        "type": "number",
                        "description": "Number of periods to return"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_growth_rates": {
      "post": {
        "operationId": "call_get_growth_rates",
        "summary": "Get compound annual growth rates (CAGR) for revenue, net income, EPS, equity, and cash flow",
        "description": "Get compound annual growth rates (CAGR) for revenue, net income, EPS, equity, and cash flow",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Growth rates",
        "x-mcp-annotations": {
          "title": "Growth rates",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "periods": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "1Y",
                            "2Y",
                            "3Y",
                            "5Y",
                            "10Y",
                            "15Y",
                            "20Y",
                            "30Y"
                          ]
                        },
                        "description": "Specific periods to return (default: all)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_pe_ratios": {
      "post": {
        "operationId": "call_get_pe_ratios",
        "summary": "Get price-to-earnings ratios (basic and diluted) with historical data. Each row states its eps_basis: ttm_quarterly (four de-duplicated interim periods spanning 240-370 days) or annual (the filed fiscal year). A null ratio means no twelve-month window exists for that period, e.g. a company that reports twice a year.",
        "description": "Get price-to-earnings ratios (basic and diluted) with historical data. Each row states its eps_basis: ttm_quarterly (four de-duplicated interim periods spanning 240-370 days) or annual (the filed fiscal year). A null ratio means no twelve-month window exists for that period, e.g. a company that reports twice a year.",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "P/E ratios",
        "x-mcp-annotations": {
          "title": "P/E ratios",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "period": {
                        "type": "string",
                        "enum": [
                          "quarterly",
                          "yearly",
                          "both"
                        ],
                        "description": "Which filing frequency to return: quarterly (interim periods, trailing-twelve-month ratios), yearly (filed fiscal years), or both (default, interleaved by date)."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Number of periods to return (default: 10)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_segment_revenue": {
      "post": {
        "operationId": "call_get_segment_revenue",
        "summary": "Get product and operating segment revenue breakdown from SEC EDGAR 10-K/10-Q filings",
        "description": "Get product and operating segment revenue breakdown from SEC EDGAR 10-K/10-Q filings",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Segment revenue",
        "x-mcp-annotations": {
          "title": "Segment revenue",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "segment_type": {
                        "type": "string",
                        "enum": [
                          "operating",
                          "product",
                          "both"
                        ],
                        "description": "Segment type filter (default: both)"
                      },
                      "years": {
                        "type": "number",
                        "description": "Years of history, 1-5 (default: 3)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_geographic_revenue": {
      "post": {
        "operationId": "call_get_geographic_revenue",
        "summary": "Get geographic revenue breakdown from SEC EDGAR 10-K/10-Q filings",
        "description": "Get geographic revenue breakdown from SEC EDGAR 10-K/10-Q filings",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Geographic revenue",
        "x-mcp-annotations": {
          "title": "Geographic revenue",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "years": {
                        "type": "number",
                        "description": "Years of history, 1-5 (default: 3)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_major_customers": {
      "post": {
        "operationId": "call_get_major_customers",
        "summary": "Get major customer concentration data from SEC EDGAR 10-K filings (customers >10% of revenue)",
        "description": "Get major customer concentration data from SEC EDGAR 10-K filings (customers >10% of revenue)",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Major customers",
        "x-mcp-annotations": {
          "title": "Major customers",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "years": {
                        "type": "number",
                        "description": "Years of history, 1-5 (default: 3)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_current_price": {
      "post": {
        "operationId": "call_get_current_price",
        "summary": "Get the most recent stock price and trading data",
        "description": "Get the most recent stock price and trading data",
        "tags": [
          "Market Data"
        ],
        "x-mcp-title": "Current price",
        "x-mcp-annotations": {
          "title": "Current price",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_historical_prices": {
      "post": {
        "operationId": "call_get_historical_prices",
        "summary": "Get historical stock price data over a specified period",
        "description": "Get historical stock price data over a specified period",
        "tags": [
          "Market Data"
        ],
        "x-mcp-title": "Historical prices",
        "x-mcp-annotations": {
          "title": "Historical prices",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "days": {
                        "type": "number",
                        "description": "Number of days of history (default: 30, max: 365)"
                      },
                      "from": {
                        "type": "string",
                        "description": "Start date (YYYY-MM-DD)"
                      },
                      "to": {
                        "type": "string",
                        "description": "End date (YYYY-MM-DD)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_enterprise_value": {
      "post": {
        "operationId": "call_get_enterprise_value",
        "summary": "Get enterprise value, market cap, debt, and cash data",
        "description": "Get enterprise value, market cap, debt, and cash data",
        "tags": [
          "Market Data"
        ],
        "x-mcp-title": "Enterprise value",
        "x-mcp-annotations": {
          "title": "Enterprise value",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "limit": {
                        "type": "number",
                        "description": "Number of historical periods (default: 5)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_company_peers": {
      "post": {
        "operationId": "call_get_company_peers",
        "summary": "Get peer/comparable companies for a stock",
        "description": "Get peer/comparable companies for a stock",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Company peers",
        "x-mcp-annotations": {
          "title": "Company peers",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_trading_multiples": {
      "post": {
        "operationId": "call_get_trading_multiples",
        "summary": "Get P/E, EV/EBITDA, P/B, P/S ratios for a company",
        "description": "Get P/E, EV/EBITDA, P/B, P/S ratios for a company",
        "tags": [
          "Market Data"
        ],
        "x-mcp-title": "Trading multiples",
        "x-mcp-annotations": {
          "title": "Trading multiples",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_peer_multiples": {
      "post": {
        "operationId": "call_get_peer_multiples",
        "summary": "Get trading multiples for a company's peer group",
        "description": "Get trading multiples for a company's peer group",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Peer multiples",
        "x-mcp-annotations": {
          "title": "Peer multiples",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "maxPeers": {
                        "type": "number",
                        "description": "Maximum number of peers to include (default: 10)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_industry_multiples": {
      "post": {
        "operationId": "call_get_industry_multiples",
        "summary": "Get average trading multiples for a company's industry or sector",
        "description": "Get average trading multiples for a company's industry or sector",
        "tags": [
          "Market Data"
        ],
        "x-mcp-title": "Industry multiples",
        "x-mcp-annotations": {
          "title": "Industry multiples",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "groupBy": {
                        "type": "string",
                        "enum": [
                          "industry",
                          "sector"
                        ],
                        "description": "Group by industry (more specific) or sector (broader)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/calculate_wacc": {
      "post": {
        "operationId": "call_calculate_wacc",
        "summary": "Calculate Weighted Average Cost of Capital (WACC) for a company",
        "description": "Calculate Weighted Average Cost of Capital (WACC) for a company",
        "tags": [
          "Calculations"
        ],
        "x-mcp-title": "Calculate WACC",
        "x-mcp-annotations": {
          "title": "Calculate WACC",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "riskFreeRate": {
                        "type": "number",
                        "description": "Risk-free rate (default: 0.045 or 4.5%)"
                      },
                      "marketRiskPremium": {
                        "type": "number",
                        "description": "Market risk premium (default: 0.06 or 6%)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/calculate_dcf": {
      "post": {
        "operationId": "call_calculate_dcf",
        "summary": "Calculate DCF (Discounted Cash Flow) valuation with sensitivity analysis",
        "description": "Calculate DCF (Discounted Cash Flow) valuation with sensitivity analysis",
        "tags": [
          "Calculations"
        ],
        "x-mcp-title": "Calculate DCF",
        "x-mcp-annotations": {
          "title": "Calculate DCF",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "revenueGrowthRate": {
                        "type": "number",
                        "description": "Revenue growth rate (default: 0.05 or 5%)"
                      },
                      "terminalGrowthRate": {
                        "type": "number",
                        "description": "Terminal growth rate (default: 0.025 or 2.5%)"
                      },
                      "discountRate": {
                        "type": "number",
                        "description": "Discount rate/WACC (default: calculated from company data)"
                      },
                      "projectionYears": {
                        "type": "number",
                        "description": "Number of projection years (default: 5)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/calculate_margin_of_safety": {
      "post": {
        "operationId": "call_calculate_margin_of_safety",
        "summary": "Calculate Margin of Safety valuation using 7-step methodology",
        "description": "Calculate Margin of Safety valuation using 7-step methodology",
        "tags": [
          "Calculations"
        ],
        "x-mcp-title": "Margin of safety",
        "x-mcp-annotations": {
          "title": "Margin of safety",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "discountRate": {
                        "type": "number",
                        "description": "Discount rate (default: 0.10 or 10%)"
                      },
                      "marginOfSafety": {
                        "type": "number",
                        "description": "Margin of safety percentage (default: 0.40 or 40%)"
                      },
                      "projectionYears": {
                        "type": "number",
                        "description": "Number of projection years (default: 10)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/calculate_comparables": {
      "post": {
        "operationId": "call_calculate_comparables",
        "summary": "Calculate valuation using comparable company analysis (trading multiples)",
        "description": "Calculate valuation using comparable company analysis (trading multiples)",
        "tags": [
          "Calculations"
        ],
        "x-mcp-title": "Comparables valuation",
        "x-mcp-annotations": {
          "title": "Comparables valuation",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "multiple": {
                        "type": "string",
                        "enum": [
                          "pe",
                          "ev_ebitda",
                          "price_to_book",
                          "price_to_sales",
                          "all"
                        ],
                        "description": "Which multiple to use (default: all)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/calculate_ddm": {
      "post": {
        "operationId": "call_calculate_ddm",
        "summary": "Calculate Dividend Discount Model (DDM) valuation",
        "description": "Calculate Dividend Discount Model (DDM) valuation",
        "tags": [
          "Calculations"
        ],
        "x-mcp-title": "Dividend discount model",
        "x-mcp-annotations": {
          "title": "Dividend discount model",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "requiredReturn": {
                        "type": "number",
                        "description": "Required rate of return (default: 0.10 or 10%)"
                      },
                      "dividendGrowthRate": {
                        "type": "number",
                        "description": "Expected dividend growth rate (if not provided, calculated from history)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_company_snapshot": {
      "post": {
        "operationId": "call_get_company_snapshot",
        "summary": "Get a rich financial snapshot of a company: price, market cap, sector, PE, P/S, EV/EBITDA, revenue, EBITDA, net income, and description",
        "description": "Get a rich financial snapshot of a company: price, market cap, sector, PE, P/S, EV/EBITDA, revenue, EBITDA, net income, and description",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Company snapshot",
        "x-mcp-annotations": {
          "title": "Company snapshot",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_valuation_metric": {
      "post": {
        "operationId": "call_get_valuation_metric",
        "summary": "Get a single valuation metric (dcf, pe, peg, pb, ps, ev_ebitda) with an interpretation label and one-line explanation",
        "description": "Get a single valuation metric (dcf, pe, peg, pb, ps, ev_ebitda) with an interpretation label and one-line explanation",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Valuation metric",
        "x-mcp-annotations": {
          "title": "Valuation metric",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "dcf",
                          "pe",
                          "peg",
                          "pb",
                          "ps",
                          "ev_ebitda"
                        ],
                        "description": "Valuation metric to compute"
                      }
                    },
                    "required": [
                      "symbol",
                      "metric"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_fair_value_range": {
      "post": {
        "operationId": "call_get_fair_value_range",
        "summary": "Get a bear/base/bull intrinsic value range combining DCF, sector PE, and PEG estimates. Returns vs_price_pct — the signed percentage gap between the base case and the traded price. Check method_count and range_basis: a \"single_method_band\" is a ±20% band around one estimate, not a multi-method spread. Excluded methods and currency/ADR-scale suppressions are reported explicitly. No verdict: computations, not a recommendation",
        "description": "Get a bear/base/bull intrinsic value range combining DCF, sector PE, and PEG estimates. Returns vs_price_pct — the signed percentage gap between the base case and the traded price. Check method_count and range_basis: a \"single_method_band\" is a ±20% band around one estimate, not a multi-method spread. Excluded methods and currency/ADR-scale suppressions are reported explicitly. No verdict: computations, not a recommendation",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Fair value range",
        "x-mcp-annotations": {
          "title": "Fair value range",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_dcf_valuation": {
      "post": {
        "operationId": "call_get_dcf_valuation",
        "summary": "Full DCF valuation with year-by-year projections, terminal value, and WACC breakdown",
        "description": "Full DCF valuation with year-by-year projections, terminal value, and WACC breakdown",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "DCF valuation",
        "x-mcp-annotations": {
          "title": "DCF valuation",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "growth_rate": {
                        "type": "number",
                        "description": "FCF growth rate override (e.g., 0.08 for 8%). Default: 5%"
                      },
                      "discount_rate": {
                        "type": "number",
                        "description": "Discount rate / WACC override. Default: calculated from company data"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_reverse_dcf": {
      "post": {
        "operationId": "call_get_reverse_dcf",
        "summary": "Reverse DCF: given the current market price, solve for the implied FCF growth rate the market is pricing in",
        "description": "Reverse DCF: given the current market price, solve for the implied FCF growth rate the market is pricing in",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Reverse DCF",
        "x-mcp-annotations": {
          "title": "Reverse DCF",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/compare_stocks": {
      "post": {
        "operationId": "call_compare_stocks",
        "summary": "Side-by-side valuation comparison of up to 5 stocks: PE, PEG, P/B, P/S, EV/EBITDA, plus which symbol carries the lowest value of each multiple",
        "description": "Side-by-side valuation comparison of up to 5 stocks: PE, PEG, P/B, P/S, EV/EBITDA, plus which symbol carries the lowest value of each multiple",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Compare stocks",
        "x-mcp-annotations": {
          "title": "Compare stocks",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbols": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "minItems": 2,
                        "maxItems": 5,
                        "description": "Array of 2–5 stock symbols (e.g. [\"AAPL\", \"MSFT\", \"GOOG\"])"
                      }
                    },
                    "required": [
                      "symbols"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_cagr_matrix": {
      "post": {
        "operationId": "call_get_cagr_matrix",
        "summary": "Get 1Y/3Y/5Y/10Y/15Y CAGR matrix for revenue, EPS, net income, or EBITDA",
        "description": "Get 1Y/3Y/5Y/10Y/15Y CAGR matrix for revenue, EPS, net income, or EBITDA",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "CAGR matrix",
        "x-mcp-annotations": {
          "title": "CAGR matrix",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "revenue",
                          "eps",
                          "netincome",
                          "ebitda"
                        ],
                        "description": "Metric to compute CAGR for (default: revenue)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_growth_trajectory": {
      "post": {
        "operationId": "call_get_growth_trajectory",
        "summary": "Get a company's EPS growth trajectory and two-stage DCF fair value range. Returns trajectory shape (ACCELERATING/STABLE/RECOVERY/DECELERATING/DETERIORATING), near-term growth rate (g_near), long-term industry rate (g_long), and a conservative–moderate–bull fair value range.",
        "description": "Get a company's EPS growth trajectory and two-stage DCF fair value range. Returns trajectory shape (ACCELERATING/STABLE/RECOVERY/DECELERATING/DETERIORATING), near-term growth rate (g_near), long-term industry rate (g_long), and a conservative–moderate–bull fair value range.",
        "tags": [
          "Financial Data"
        ],
        "x-mcp-title": "Growth trajectory",
        "x-mcp-annotations": {
          "title": "Growth trajectory",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/list_user_stock_lists": {
      "post": {
        "operationId": "call_list_user_stock_lists",
        "summary": "List the authenticated user's stock lists, watchlists, and portfolio lists, including symbols and item counts",
        "description": "List the authenticated user's stock lists, watchlists, and portfolio lists, including symbols and item counts",
        "tags": [
          "User Lists"
        ],
        "x-mcp-title": "List stock lists",
        "x-mcp-annotations": {
          "title": "List stock lists",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "list_type": {
                        "type": "string",
                        "enum": [
                          "list",
                          "watchlist",
                          "portfolio"
                        ],
                        "description": "Optional list type filter"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/create_user_stock_list": {
      "post": {
        "operationId": "call_create_user_stock_list",
        "summary": "Create a new stock list, watchlist, or portfolio list for the authenticated user",
        "description": "Create a new stock list, watchlist, or portfolio list for the authenticated user",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Create stock list",
        "x-mcp-annotations": {
          "title": "Create stock list",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "List name"
                      },
                      "list_type": {
                        "type": "string",
                        "enum": [
                          "list",
                          "watchlist",
                          "portfolio"
                        ],
                        "description": "Type of list to create (default: list)"
                      },
                      "description": {
                        "type": "string",
                        "description": "Optional description"
                      },
                      "color": {
                        "type": "string",
                        "description": "Optional hex color"
                      },
                      "is_public": {
                        "type": "boolean",
                        "description": "Whether the list should be public"
                      },
                      "symbols": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Optional starting symbols"
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/add_symbols_to_user_list": {
      "post": {
        "operationId": "call_add_symbols_to_user_list",
        "summary": "Add one or more stock symbols to one of the authenticated user's lists",
        "description": "Add one or more stock symbols to one of the authenticated user's lists",
        "tags": [
          "User Lists"
        ],
        "x-mcp-title": "Add symbols to list",
        "x-mcp-annotations": {
          "title": "Add symbols to list",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "list_id": {
                        "type": "integer",
                        "description": "Target stock list ID"
                      },
                      "symbols": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "minItems": 1,
                        "description": "Symbols to add"
                      }
                    },
                    "required": [
                      "list_id",
                      "symbols"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/remove_symbols_from_user_list": {
      "post": {
        "operationId": "call_remove_symbols_from_user_list",
        "summary": "Remove one or more stock symbols from one of the authenticated user's lists",
        "description": "Remove one or more stock symbols from one of the authenticated user's lists",
        "tags": [
          "User Lists"
        ],
        "x-mcp-title": "Remove symbols from list",
        "x-mcp-annotations": {
          "title": "Remove symbols from list",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "list_id": {
                        "type": "integer",
                        "description": "Target stock list ID"
                      },
                      "symbols": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "minItems": 1,
                        "description": "Symbols to remove"
                      }
                    },
                    "required": [
                      "list_id",
                      "symbols"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/set_user_list_watched": {
      "post": {
        "operationId": "call_set_user_list_watched",
        "summary": "Turn a list's watched state on or off",
        "description": "Turn a list's watched state on or off",
        "tags": [
          "User Lists"
        ],
        "x-mcp-title": "Set list watched",
        "x-mcp-annotations": {
          "title": "Set list watched",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "list_id": {
                        "type": "integer",
                        "description": "Target stock list ID"
                      },
                      "watched": {
                        "type": "boolean",
                        "description": "Desired watched state"
                      }
                    },
                    "required": [
                      "list_id",
                      "watched"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/delete_user_stock_list": {
      "post": {
        "operationId": "call_delete_user_stock_list",
        "summary": "Delete one of the authenticated user's non-system stock lists",
        "description": "Delete one of the authenticated user's non-system stock lists",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Delete stock list",
        "x-mcp-annotations": {
          "title": "Delete stock list",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "list_id": {
                        "type": "integer",
                        "description": "Target stock list ID"
                      }
                    },
                    "required": [
                      "list_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_list_items": {
      "post": {
        "operationId": "call_get_list_items",
        "summary": "Get all symbols in one of the authenticated user's stock lists, with company profile data",
        "description": "Get all symbols in one of the authenticated user's stock lists, with company profile data",
        "tags": [
          "User Lists"
        ],
        "x-mcp-title": "Stock list items",
        "x-mcp-annotations": {
          "title": "Stock list items",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "list_id": {
                        "type": "integer",
                        "description": "Stock list ID"
                      }
                    },
                    "required": [
                      "list_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_watchlist_status": {
      "post": {
        "operationId": "call_get_watchlist_status",
        "summary": "Get the watchlist status and tier limits for one of the authenticated user's lists",
        "description": "Get the watchlist status and tier limits for one of the authenticated user's lists",
        "tags": [
          "User Lists"
        ],
        "x-mcp-title": "Watchlist status",
        "x-mcp-annotations": {
          "title": "Watchlist status",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "list_id": {
                        "type": "integer",
                        "description": "Stock list ID"
                      }
                    },
                    "required": [
                      "list_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/optimize_portfolio": {
      "post": {
        "operationId": "call_optimize_portfolio",
        "summary": "Optimize portfolio weights using Markowitz Modern Portfolio Theory (MPT)",
        "description": "Optimize portfolio weights using Markowitz Modern Portfolio Theory (MPT)",
        "tags": [
          "Portfolio"
        ],
        "x-mcp-title": "Optimize portfolio",
        "x-mcp-annotations": {
          "title": "Optimize portfolio",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbols": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "minItems": 2,
                        "maxItems": 30,
                        "description": "Array of 2–30 stock symbols"
                      },
                      "lookback_days": {
                        "type": "number",
                        "description": "Days of price history to use (default: 365)"
                      },
                      "risk_free_rate": {
                        "type": "number",
                        "description": "Annual risk-free rate (default: 0.05 = 5%)"
                      },
                      "optimization_target": {
                        "type": "string",
                        "enum": [
                          "max_sharpe",
                          "min_variance",
                          "efficient_frontier"
                        ],
                        "description": "Optimization objective (default: max_sharpe)"
                      }
                    },
                    "required": [
                      "symbols"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/portfolio_risk_decomposition": {
      "post": {
        "operationId": "call_portfolio_risk_decomposition",
        "summary": "Decompose portfolio risk by position: marginal contribution to risk (MCR), VaR 95%, CVaR 95%, and diversification ratio",
        "description": "Decompose portfolio risk by position: marginal contribution to risk (MCR), VaR 95%, CVaR 95%, and diversification ratio",
        "tags": [
          "Portfolio"
        ],
        "x-mcp-title": "Portfolio risk decomposition",
        "x-mcp-annotations": {
          "title": "Portfolio risk decomposition",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbols": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "minItems": 2,
                        "description": "Array of stock symbols"
                      },
                      "weights": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "number"
                        },
                        "description": "Optional dict of symbol → weight (will be normalized to sum to 1)"
                      },
                      "lookback_days": {
                        "type": "number",
                        "description": "Days of price history (default: 252)"
                      }
                    },
                    "required": [
                      "symbols"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/sec_get_profile": {
      "post": {
        "operationId": "call_sec_get_profile",
        "summary": "Get a structured SEC filing profile for a public company (products, customers, suppliers, strategic priorities, competitive moat) extracted from the most recent 10-K or 20-F",
        "description": "Get a structured SEC filing profile for a public company (products, customers, suppliers, strategic priorities, competitive moat) extracted from the most recent 10-K or 20-F",
        "tags": [
          "SEC Filings"
        ],
        "x-mcp-title": "SEC filing profile",
        "x-mcp-annotations": {
          "title": "SEC filing profile",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock ticker (e.g. NVDA, AAPL, TSM, ASML)"
                      },
                      "year": {
                        "type": "number",
                        "description": "Fiscal year (optional — defaults to most recent)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/sec_get_supply_chain": {
      "post": {
        "operationId": "call_sec_get_supply_chain",
        "summary": "Get SEC-cited supply chain edges for a company (source/target, relationship type, verbatim filing quote)",
        "description": "Get SEC-cited supply chain edges for a company (source/target, relationship type, verbatim filing quote)",
        "tags": [
          "SEC Filings"
        ],
        "x-mcp-title": "Supply chain",
        "x-mcp-annotations": {
          "title": "Supply chain",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock ticker"
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max edges to return (default 30, max 100)"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/sec_get_risks": {
      "post": {
        "operationId": "call_sec_get_risks",
        "summary": "Get supply chain and customer concentration risk excerpts verbatim from SEC filings (Item 1A)",
        "description": "Get supply chain and customer concentration risk excerpts verbatim from SEC filings (Item 1A)",
        "tags": [
          "SEC Filings"
        ],
        "x-mcp-title": "Risk factors",
        "x-mcp-annotations": {
          "title": "Risk factors",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock ticker"
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/sec_find_chokepoints": {
      "post": {
        "operationId": "call_sec_find_chokepoints",
        "summary": "Find supply chain chokepoints — companies cited as a dependency in the most other companies' SEC filings",
        "description": "Find supply chain chokepoints — companies cited as a dependency in the most other companies' SEC filings",
        "tags": [
          "SEC Filings"
        ],
        "x-mcp-title": "Supply-chain chokepoints",
        "x-mcp-annotations": {
          "title": "Supply-chain chokepoints",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Number of chokepoints to return (default 15, max 50)"
                      },
                      "min_sources": {
                        "type": "number",
                        "description": "Only include nodes cited by at least this many companies (default 2)"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/sec_search": {
      "post": {
        "operationId": "call_sec_search",
        "summary": "Search for companies in the EvidInvest SEC supply chain graph by name or ticker",
        "description": "Search for companies in the EvidInvest SEC supply chain graph by name or ticker",
        "tags": [
          "SEC Filings"
        ],
        "x-mcp-title": "Search SEC companies",
        "x-mcp-annotations": {
          "title": "Search SEC companies",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Company name or ticker to search for"
                      },
                      "limit": {
                        "type": "number",
                        "description": "Maximum results (default 10)"
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/sec_compare": {
      "post": {
        "operationId": "call_sec_compare",
        "summary": "Compare multiple companies' SEC profiles side by side (products, key suppliers, key customers, top risk themes)",
        "description": "Compare multiple companies' SEC profiles side by side (products, key suppliers, key customers, top risk themes)",
        "tags": [
          "SEC Filings"
        ],
        "x-mcp-title": "Compare SEC filers",
        "x-mcp-annotations": {
          "title": "Compare SEC filers",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "tickers": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "minItems": 2,
                        "maxItems": 5,
                        "description": "Ticker symbols to compare (2–5)"
                      }
                    },
                    "required": [
                      "tickers"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/run_valuation": {
      "post": {
        "operationId": "call_run_valuation",
        "summary": "Run EvidInvest's full valuation tool: all seven methods (DCF, P/E growth, earnings power, Graham number, EV/EBITDA, EV/FCF, P/E vs sector) on SEC-filed inputs, with YOUR assumptions. Returns each method's per-share value and how it sits against the current price, a bear/base/bull range across the methods, what today's price implies for each method, the filed inputs and the filing they came from. Pass `assumptions` to change any parameter (see get_valuation_parameters for legal ranges), or `anchor: 'implied'` to start every method at the value that reproduces today's price. Outputs are the assumptions you supplied, not a recommendation.",
        "description": "Run EvidInvest's full valuation tool: all seven methods (DCF, P/E growth, earnings power, Graham number, EV/EBITDA, EV/FCF, P/E vs sector) on SEC-filed inputs, with YOUR assumptions. Returns each method's per-share value and how it sits against the current price, a bear/base/bull range across the methods, what today's price implies for each method, the filed inputs and the filing they came from. Pass `assumptions` to change any parameter (see get_valuation_parameters for legal ranges), or `anchor: 'implied'` to start every method at the value that reproduces today's price. Outputs are the assumptions you supplied, not a recommendation.",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Run valuation",
        "x-mcp-annotations": {
          "title": "Run valuation",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "assumptions": {
                        "type": "object",
                        "description": "Per-method parameter overrides: { \"dcf\": { \"wacc\": 10, \"growth1\": 8 }, \"epv\": { \"wacc\": 9 } }. Units are % for rates, x for multiples, yrs for years, $M for dollar amounts. See get_valuation_parameters.",
                        "additionalProperties": {
                          "type": "object"
                        }
                      },
                      "methods": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "dcf",
                            "peGrowth",
                            "epv",
                            "graham",
                            "evEbitda",
                            "evFcf",
                            "peComparable"
                          ],
                          "description": "Valuation method"
                        },
                        "description": "Limit the per-method detail to these methods. Default: all seven."
                      },
                      "anchor": {
                        "type": "string",
                        "enum": [
                          "preset",
                          "implied"
                        ],
                        "description": "'preset' (default) starts from EvidInvest's filed defaults; 'implied' starts each method at the assumption that reproduces today's price."
                      },
                      "include_steps": {
                        "type": "boolean",
                        "description": "Include each method's calculation steps. Default false (verbose)."
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_implied_assumptions": {
      "post": {
        "operationId": "call_get_implied_assumptions",
        "summary": "Reverse the current price into each valuation method's key assumption: the implied P/E, implied EPS growth, implied discount rate (WACC), implied EV/EBITDA and EV/FCF multiples, implied FCF yield and the implied Graham multiplier. Says what the market is already assuming so you can judge those assumptions rather than argue with a target price. Each entry reports `solvable` and, when it is not, the reason (e.g. negative earnings, no positive cash flow).",
        "description": "Reverse the current price into each valuation method's key assumption: the implied P/E, implied EPS growth, implied discount rate (WACC), implied EV/EBITDA and EV/FCF multiples, implied FCF yield and the implied Graham multiplier. Says what the market is already assuming so you can judge those assumptions rather than argue with a target price. Each entry reports `solvable` and, when it is not, the reason (e.g. negative earnings, no positive cash flow).",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Implied assumptions",
        "x-mcp-annotations": {
          "title": "Implied assumptions",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "assumptions": {
                        "type": "object",
                        "description": "Hold these parameters fixed while the key assumption is solved for. Optional.",
                        "additionalProperties": {
                          "type": "object"
                        }
                      }
                    },
                    "required": [
                      "symbol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_valuation_parameters": {
      "post": {
        "operationId": "call_get_valuation_parameters",
        "summary": "The parameter schema for all seven valuation methods: every adjustable input with its type, unit, min/max, step and default, plus the choice lists. With a `symbol`, also returns that company's EvidInvest defaults (derived from its filings) and its filed CAGRs offered as growth presets. Call this before run_valuation to learn the legal parameter names and ranges.",
        "description": "The parameter schema for all seven valuation methods: every adjustable input with its type, unit, min/max, step and default, plus the choice lists. With a `symbol`, also returns that company's EvidInvest defaults (derived from its filings) and its filed CAGRs offered as growth presets. Call this before run_valuation to learn the legal parameter names and ranges.",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Valuation parameters",
        "x-mcp-annotations": {
          "title": "Valuation parameters",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Optional. With a symbol you also get that company's filed defaults and growth presets."
                      }
                    },
                    "required": []
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/save_valuation": {
      "post": {
        "operationId": "call_save_valuation",
        "summary": "Save a named valuation scenario for the account that owns this API key: the method, the assumptions and the value they produce are computed server-side and persisted. Saved scenarios show up in the same history the evidinvest.com valuation page reads, so a user can track how their assumptions and the resulting values evolve regardless of whether they were set here or in the browser.",
        "description": "Save a named valuation scenario for the account that owns this API key: the method, the assumptions and the value they produce are computed server-side and persisted. Saved scenarios show up in the same history the evidinvest.com valuation page reads, so a user can track how their assumptions and the resulting values evolve regardless of whether they were set here or in the browser.",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Save valuation",
        "x-mcp-annotations": {
          "title": "Save valuation",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Stock symbol (e.g., AAPL, MSFT)"
                      },
                      "method": {
                        "type": "string",
                        "enum": [
                          "dcf",
                          "peGrowth",
                          "epv",
                          "graham",
                          "evEbitda",
                          "evFcf",
                          "peComparable"
                        ],
                        "description": "Valuation method"
                      },
                      "assumptions": {
                        "type": "object",
                        "description": "Parameters for THIS method only, e.g. { \"wacc\": 10, \"growth1\": 8 }. Omit to save EvidInvest's defaults."
                      },
                      "name": {
                        "type": "string",
                        "description": "Short label for the scenario, e.g. 'bear case, 6% growth'."
                      },
                      "note": {
                        "type": "string",
                        "description": "Why these assumptions — free text, kept with the scenario."
                      }
                    },
                    "required": [
                      "symbol",
                      "method"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/list_saved_valuations": {
      "post": {
        "operationId": "call_list_saved_valuations",
        "summary": "List the valuation scenarios saved by the account that owns this API key, newest first. Filter by symbol, method or date range. Each row carries the assumptions that were set and the per-share value they produced, so you can show how a view has changed over time.",
        "description": "List the valuation scenarios saved by the account that owns this API key, newest first. Filter by symbol, method or date range. Each row carries the assumptions that were set and the per-share value they produced, so you can show how a view has changed over time.",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "List saved valuations",
        "x-mcp-annotations": {
          "title": "List saved valuations",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "type": "string",
                        "description": "Optional symbol filter."
                      },
                      "method": {
                        "type": "string",
                        "enum": [
                          "dcf",
                          "peGrowth",
                          "epv",
                          "graham",
                          "evEbitda",
                          "evFcf",
                          "peComparable"
                        ],
                        "description": "Optional method filter."
                      },
                      "since": {
                        "type": "string",
                        "description": "Optional ISO date (YYYY-MM-DD), inclusive."
                      },
                      "until": {
                        "type": "string",
                        "description": "Optional ISO date (YYYY-MM-DD), inclusive."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max rows, 1-200. Default 25."
                      }
                    },
                    "required": []
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/get_saved_valuation": {
      "post": {
        "operationId": "call_get_saved_valuation",
        "summary": "Read one saved valuation scenario by id (from list_saved_valuations), including its full assumptions, the value they produced and the price at the time it was saved.",
        "description": "Read one saved valuation scenario by id (from list_saved_valuations), including its full assumptions, the value they produced and the price at the time it was saved.",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Get saved valuation",
        "x-mcp-annotations": {
          "title": "Get saved valuation",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Snapshot id from list_saved_valuations"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/tools/delete_saved_valuation": {
      "post": {
        "operationId": "call_delete_saved_valuation",
        "summary": "Permanently delete one saved valuation scenario by id (from list_saved_valuations) from the account that owns this API key. Returns the row that was removed — symbol, method, name, assumptions and the value they produced — so you can tell the user exactly what is gone. Only that account's own scenarios can be deleted; an id belonging to anyone else, or an id already deleted, returns not_found and changes nothing, so repeating the call is safe. There is no undo: confirm with the user before calling.",
        "description": "Permanently delete one saved valuation scenario by id (from list_saved_valuations) from the account that owns this API key. Returns the row that was removed — symbol, method, name, assumptions and the value they produced — so you can tell the user exactly what is gone. Only that account's own scenarios can be deleted; an id belonging to anyone else, or an id already deleted, returns not_found and changes nothing, so repeating the call is safe. There is no undo: confirm with the user before calling.",
        "tags": [
          "Valuation"
        ],
        "x-mcp-title": "Delete saved valuation",
        "x-mcp-annotations": {
          "title": "Delete saved valuation",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Snapshot id from list_saved_valuations. Deleting is permanent — confirm with the user first."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {},
                    "toolName": {
                      "type": "string"
                    },
                    "creditsUsed": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "result",
                    "toolName",
                    "creditsUsed"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "402": {
            "description": "No MCP credits remaining"
          },
          "404": {
            "description": "Tool not found"
          },
          "429": {
            "description": "Rate limit or monthly tool call limit reached"
          },
          "500": {
            "description": "Tool execution error"
          }
        }
      }
    },
    "/v1/quote": {
      "get": {
        "operationId": "get_price_quote",
        "summary": "Price a paid task before running it (free, no auth)",
        "description": "Returns the exact USD price for a task at a given model tier and payment rail. Prices are dynamic: they follow the real compute cost of the task. Omit `task` for the full price list.",
        "tags": [
          "Machine Payments"
        ],
        "security": [],
        "parameters": [
          {
            "name": "task",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "filing_search",
                "company_snapshot",
                "valuation",
                "supply_chain",
                "thesis_check"
              ]
            }
          },
          {
            "name": "model",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "none",
                "haiku-4.5",
                "sonnet-4.5",
                "sonnet-4.6",
                "opus-4.5",
                "opus-4.6",
                "llama-3.3-70b",
                "deepseek-r1"
              ],
              "default": "sonnet-4.5",
              "description": "Final-writer model — data gathering always runs on the cheap tier; price follows this choice"
            }
          },
          {
            "name": "rail",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "card",
                "stablecoin"
              ],
              "default": "card"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Quote with priceUsd, estimatedCostUsd and railFeeUsd"
          }
        }
      }
    },
    "/v1/paid/filing_search": {
      "post": {
        "operationId": "paid_filing_search",
        "summary": "Agent-written answer from SEC filings, with cited passages and accession numbers.",
        "description": "Agent-written answer from SEC filings, with cited passages and accession numbers. Pay per request with the Machine Payments Protocol (MPP) — no account, no API key. An unpaid request returns HTTP 402 with a payment challenge carrying the price for that exact request; pay and retry to receive the result plus a receipt. Call GET /v1/quote first to see the price. Accepts card and Link.",
        "tags": [
          "Machine Payments"
        ],
        "security": [],
        "x-payment": {
          "protocol": "mpp",
          "specification": "https://mpp.dev",
          "currency": "usd",
          "pricing": "dynamic",
          "quoteEndpoint": "/v1/quote",
          "methods": [
            "card",
            "link"
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "enum": [
                      "none",
                      "haiku-4.5",
                      "sonnet-4.5",
                      "sonnet-4.6",
                      "opus-4.5",
                      "opus-4.6",
                      "llama-3.3-70b",
                      "deepseek-r1"
                    ],
                    "default": "sonnet-4.5",
                    "description": "Final-writer model (gathering runs on the cheap tier; price follows this choice)"
                  },
                  "rail": {
                    "type": "string",
                    "enum": [
                      "card",
                      "stablecoin"
                    ],
                    "default": "card"
                  },
                  "symbol": {
                    "type": "string",
                    "description": "Ticker, for company-scoped tasks"
                  },
                  "query": {
                    "type": "string",
                    "description": "Search text, for search tasks"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Paid result, with payment receipt headers"
          },
          "402": {
            "description": "Payment required — challenge carries the price for this request"
          },
          "404": {
            "description": "Unknown task"
          }
        }
      }
    },
    "/v1/paid/company_snapshot": {
      "post": {
        "operationId": "paid_company_snapshot",
        "summary": "Agent-written company overview: fundamentals, growth and multiples, evaluated.",
        "description": "Agent-written company overview: fundamentals, growth and multiples, evaluated. Pay per request with the Machine Payments Protocol (MPP) — no account, no API key. An unpaid request returns HTTP 402 with a payment challenge carrying the price for that exact request; pay and retry to receive the result plus a receipt. Call GET /v1/quote first to see the price. Accepts card and Link.",
        "tags": [
          "Machine Payments"
        ],
        "security": [],
        "x-payment": {
          "protocol": "mpp",
          "specification": "https://mpp.dev",
          "currency": "usd",
          "pricing": "dynamic",
          "quoteEndpoint": "/v1/quote",
          "methods": [
            "card",
            "link"
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "enum": [
                      "none",
                      "haiku-4.5",
                      "sonnet-4.5",
                      "sonnet-4.6",
                      "opus-4.5",
                      "opus-4.6",
                      "llama-3.3-70b",
                      "deepseek-r1"
                    ],
                    "default": "sonnet-4.5",
                    "description": "Final-writer model (gathering runs on the cheap tier; price follows this choice)"
                  },
                  "rail": {
                    "type": "string",
                    "enum": [
                      "card",
                      "stablecoin"
                    ],
                    "default": "card"
                  },
                  "symbol": {
                    "type": "string",
                    "description": "Ticker, for company-scoped tasks"
                  },
                  "query": {
                    "type": "string",
                    "description": "Search text, for search tasks"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Paid result, with payment receipt headers"
          },
          "402": {
            "description": "Payment required — challenge carries the price for this request"
          },
          "404": {
            "description": "Unknown task"
          }
        }
      }
    },
    "/v1/paid/valuation": {
      "post": {
        "operationId": "paid_valuation",
        "summary": "Full valuation analysis written by the agent: DCF, fair-value range, margin of safety, growth.",
        "description": "Full valuation analysis written by the agent: DCF, fair-value range, margin of safety, growth. Pay per request with the Machine Payments Protocol (MPP) — no account, no API key. An unpaid request returns HTTP 402 with a payment challenge carrying the price for that exact request; pay and retry to receive the result plus a receipt. Call GET /v1/quote first to see the price. Accepts card and Link.",
        "tags": [
          "Machine Payments"
        ],
        "security": [],
        "x-payment": {
          "protocol": "mpp",
          "specification": "https://mpp.dev",
          "currency": "usd",
          "pricing": "dynamic",
          "quoteEndpoint": "/v1/quote",
          "methods": [
            "card",
            "link"
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "enum": [
                      "none",
                      "haiku-4.5",
                      "sonnet-4.5",
                      "sonnet-4.6",
                      "opus-4.5",
                      "opus-4.6",
                      "llama-3.3-70b",
                      "deepseek-r1"
                    ],
                    "default": "sonnet-4.5",
                    "description": "Final-writer model (gathering runs on the cheap tier; price follows this choice)"
                  },
                  "rail": {
                    "type": "string",
                    "enum": [
                      "card",
                      "stablecoin"
                    ],
                    "default": "card"
                  },
                  "symbol": {
                    "type": "string",
                    "description": "Ticker, for company-scoped tasks"
                  },
                  "query": {
                    "type": "string",
                    "description": "Search text, for search tasks"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Paid result, with payment receipt headers"
          },
          "402": {
            "description": "Payment required — challenge carries the price for this request"
          },
          "404": {
            "description": "Unknown task"
          }
        }
      }
    },
    "/v1/paid/supply_chain": {
      "post": {
        "operationId": "paid_supply_chain",
        "summary": "Supply-chain analysis from filings: relationships and chokepoints, with evidence quotes.",
        "description": "Supply-chain analysis from filings: relationships and chokepoints, with evidence quotes. Pay per request with the Machine Payments Protocol (MPP) — no account, no API key. An unpaid request returns HTTP 402 with a payment challenge carrying the price for that exact request; pay and retry to receive the result plus a receipt. Call GET /v1/quote first to see the price. Accepts card and Link.",
        "tags": [
          "Machine Payments"
        ],
        "security": [],
        "x-payment": {
          "protocol": "mpp",
          "specification": "https://mpp.dev",
          "currency": "usd",
          "pricing": "dynamic",
          "quoteEndpoint": "/v1/quote",
          "methods": [
            "card",
            "link"
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "enum": [
                      "none",
                      "haiku-4.5",
                      "sonnet-4.5",
                      "sonnet-4.6",
                      "opus-4.5",
                      "opus-4.6",
                      "llama-3.3-70b",
                      "deepseek-r1"
                    ],
                    "default": "sonnet-4.5",
                    "description": "Final-writer model (gathering runs on the cheap tier; price follows this choice)"
                  },
                  "rail": {
                    "type": "string",
                    "enum": [
                      "card",
                      "stablecoin"
                    ],
                    "default": "card"
                  },
                  "symbol": {
                    "type": "string",
                    "description": "Ticker, for company-scoped tasks"
                  },
                  "query": {
                    "type": "string",
                    "description": "Search text, for search tasks"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Paid result, with payment receipt headers"
          },
          "402": {
            "description": "Payment required — challenge carries the price for this request"
          },
          "404": {
            "description": "Unknown task"
          }
        }
      }
    },
    "/v1/paid/thesis_check": {
      "post": {
        "operationId": "paid_thesis_check",
        "summary": "Filed-evidence assessment: products, customers, suppliers and risks, evaluated against the filings.",
        "description": "Filed-evidence assessment: products, customers, suppliers and risks, evaluated against the filings. Pay per request with the Machine Payments Protocol (MPP) — no account, no API key. An unpaid request returns HTTP 402 with a payment challenge carrying the price for that exact request; pay and retry to receive the result plus a receipt. Call GET /v1/quote first to see the price. Accepts card and Link.",
        "tags": [
          "Machine Payments"
        ],
        "security": [],
        "x-payment": {
          "protocol": "mpp",
          "specification": "https://mpp.dev",
          "currency": "usd",
          "pricing": "dynamic",
          "quoteEndpoint": "/v1/quote",
          "methods": [
            "card",
            "link"
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "enum": [
                      "none",
                      "haiku-4.5",
                      "sonnet-4.5",
                      "sonnet-4.6",
                      "opus-4.5",
                      "opus-4.6",
                      "llama-3.3-70b",
                      "deepseek-r1"
                    ],
                    "default": "sonnet-4.5",
                    "description": "Final-writer model (gathering runs on the cheap tier; price follows this choice)"
                  },
                  "rail": {
                    "type": "string",
                    "enum": [
                      "card",
                      "stablecoin"
                    ],
                    "default": "card"
                  },
                  "symbol": {
                    "type": "string",
                    "description": "Ticker, for company-scoped tasks"
                  },
                  "query": {
                    "type": "string",
                    "description": "Search text, for search tasks"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Paid result, with payment receipt headers"
          },
          "402": {
            "description": "Payment required — challenge carries the price for this request"
          },
          "404": {
            "description": "Unknown task"
          }
        }
      }
    }
  }
}