{
  "schemaVersion": "1.0",
  "name": "TableCharts",
  "description": "Chart generation agent for AI systems. Send tabular data (JSON, CSV, Notion, Google Sheets, Salesforce) and get back a public live-updating dashboard URL plus an embeddable iframe. Auto-cleans data, recommends the best of 15 chart types, generates titles, and detects outliers. Built exclusively for Agent-to-Agent (A2A) workflows. Weekly subscriptions from $29.",
  "url": "https://tablecharts.co",
  "instructions": "Three ways to call this agent: (1) POST JSON to https://xsbzchiryhqatvrzgyxm.supabase.co/functions/v1/generate-dashboard with one of {data, csv, source_url}; optional {title, chart_type}. (2) A2A: discover this Agent Card at /.well-known/agent-card.json and invoke the generate_dashboard skill. (3) Email: send a CSV/JSON attachment or a Notion/Sheets link to charts@tablecharts.co. All production calls require Authorization: Bearer tc_live_<key>. No free tier or pay-as-you-go — subscribe weekly (from $29/week for 50 dashboards) at https://tablecharts.co/pricing and grab top-ups (from $25 for 25 extra dashboards) when you need more. Top-ups stack on any subscription and are consumed only after the weekly quota is exhausted. On quota exhaustion the endpoint returns HTTP 402 with code=quota_exhausted and a buy_url pointing to https://tablecharts.co/pricing#topups. Health check: GET https://xsbzchiryhqatvrzgyxm.supabase.co/functions/v1/health.",
  "provider": {
    "organization": "TableCharts",
    "url": "https://tablecharts.co"
  },
  "version": "1.1.0",
  "documentationUrl": "https://tablecharts.co/docs",
  "healthUrl": "https://xsbzchiryhqatvrzgyxm.supabase.co/functions/v1/health",
  "protocols": ["a2a", "http+json"],
  "endpoints": {
    "generateDashboard": "https://xsbzchiryhqatvrzgyxm.supabase.co/functions/v1/generate-dashboard",
    "inboundEmail": "charts@tablecharts.co",
    "agentCard": "https://tablecharts.co/.well-known/agent-card.json"
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "inputModes": ["application/json", "text/csv", "text/uri-list", "message/rfc822"],
    "outputModes": ["application/json", "text/html"],
    "dataSources": ["notion", "google_sheets", "csv", "json"],
    "chartTypes": ["bar", "line", "area", "pie", "doughnut", "radar", "scatter", "stacked-bar", "stacked-area", "horizontal-bar", "funnel", "treemap", "heatmap", "gauge", "kpi"],
    "aiFeatures": ["data-cleaning", "chart-recommendation", "title-generation", "outlier-detection"]
  },
  "skills": [
    {
      "id": "generate_dashboard",
      "name": "Generate Dashboard",
      "description": "Accepts tabular data and returns a public live-updating dashboard URL with an embed iframe.",
      "tags": ["chart", "charts", "dashboard", "dashboards", "visualization", "data-viz", "embed", "iframe", "reporting", "analytics", "csv", "json", "notion", "google-sheets", "salesforce", "a2a"],
      "inputModes": ["application/json", "text/csv", "text/uri-list"],
      "outputModes": ["application/json"],
      "parameters": {
        "type": "object",
        "oneOf": [
          { "required": ["data"] },
          { "required": ["csv"] },
          { "required": ["source_url"] }
        ],
        "properties": {
          "data": { "type": "array", "description": "Array of flat row objects.", "items": { "type": "object" } },
          "csv": { "type": "string", "description": "Raw CSV string including a header row. RFC 4180 quoting supported." },
          "source_url": { "type": "string", "description": "Public Notion database or Google Sheets URL." },
          "title": { "type": "string" },
          "chart_type": {
            "type": "string",
            "enum": ["bar", "line", "area", "pie", "doughnut", "radar", "scatter", "stacked-bar", "stacked-area", "horizontal-bar", "funnel", "treemap", "heatmap", "gauge", "kpi"]
          }
        }
      },
      "returns": {
        "type": "object",
        "properties": {
          "ok": { "type": "boolean" },
          "dashboard_url": { "type": "string", "format": "uri" },
          "embed_url": { "type": "string", "format": "uri" },
          "embed_iframe": { "type": "string" },
          "embed_id": { "type": "string" },
          "chart_type": { "type": "string" },
          "rows": { "type": "integer" }
        }
      },
      "examples": [
        "{\"input\":{\"data\":[{\"month\":\"January\",\"revenue\":42000},{\"month\":\"February\",\"revenue\":48000},{\"month\":\"March\",\"revenue\":56000}],\"title\":\"Q1 Revenue\"},\"output\":{\"ok\":true,\"dashboard_url\":\"https://tablecharts.co/embed/abc123\",\"embed_iframe\":\"<iframe src=\\\"https://tablecharts.co/embed/abc123\\\" width=\\\"800\\\" height=\\\"500\\\" frameborder=\\\"0\\\"></iframe>\",\"chart_type\":\"bar\",\"rows\":3}}"
      ]
    }
  ],
  "authentication": {
    "schemes": ["bearer"],
    "bearerHeader": "Authorization: Bearer tc_live_<api_key>",
    "authenticatedTier": "1000 requests/hour per key, subject to weekly quota",
    "keyManagementUrl": "https://tablecharts.co/dashboard/api-keys",
    "note": "API key required for all /generate-dashboard calls. No free tier — requires active weekly subscription from https://tablecharts.co/pricing."
  },
  "pricing": {
    "model": "weekly_subscriptions_plus_topups",
    "currency": "USD",
    "note": "Top-ups stack on top of any weekly subscription and are consumed only after the weekly quota runs out. Weekly quotas reset every Monday 00:00 UTC.",
    "subscriptions": [
      { "name": "Starter", "price": 29,  "interval": "week", "included": 50,  "perChart": 0.58  },
      { "name": "Agent",   "price": 69,  "interval": "week", "included": 200, "perChart": 0.345, "popular": true },
      { "name": "Scale",   "price": 179, "interval": "week", "included": 600, "perChart": 0.30  }
    ],
    "topups": [
      { "name": "Top-up 25",  "price": 25,  "credits": 25,  "perChart": 1.00 },
      { "name": "Top-up 100", "price": 89,  "credits": 100, "perChart": 0.89 },
      { "name": "Top-up 500", "price": 349, "credits": 500, "perChart": 0.70 }
    ],
    "checkoutUrl": "https://tablecharts.co/pricing"
  },
  "contact": "charts@tablecharts.co"
}
