[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6J2S4TGHX3P9SF7V8D99DNQ":3,"skill-same:01M6J2S4TGHX3P9SF7V8D99DNQ":84},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":60,"ownerHtmlUrl":61,"ownerBlogUrl":6,"ownerDescription":62,"updatedAt":63,"install":64,"resources":77},"01M6J2S4TGHX3P9SF7V8D99DNQ","googlebigquery-automation",null,"Automate Google BigQuery tasks via Rube MCP (Composio): run SQL queries, explore datasets and metadata, execute MBQL queries via Metabase integration. Always search tools first for current schemas.","onfire7777\u002Funiversal-ai-skills-library","onfire7777","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F240866566?v=4","01M6HZJCF2QEW8DY7HE1JDKGK2","Jake B","01M6HZJCKK8SEXKN76V9SGKZ12",17,"MIT","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fgooglebigquery-automation\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"automation","googlebigquery automation","explore","for","metabase","via","composio","queries","datasets","sql queries","automate","MCP","first","Tools","integration","search","run","tasks","sql","google","2026-11-10 10:12:30",false,"---\nname: googlebigquery-automation\ndescription: \"Automate Google BigQuery tasks via Rube MCP (Composio): run SQL queries, explore datasets and metadata, execute MBQL queries via Metabase integration. Always search tools first for current schemas.\"\nrequires:\n  mcp: [rube]\n---\n\n# Google BigQuery Automation via Rube MCP\n\nRun SQL queries, explore database schemas, and analyze datasets through the Metabase integration using Rube MCP (Composio).\n\n**Toolkit docs**: [composio.dev\u002Ftoolkits\u002Fgooglebigquery](https:\u002F\u002Fcomposio.dev\u002Ftoolkits\u002Fgooglebigquery)\n\n## Prerequisites\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `metabase`\n- A Metabase instance connected to your BigQuery data source\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `metabase`\n3. If connection is not ACTIVE, follow the returned auth link to complete setup\n4. Confirm connection status shows ACTIVE before running any workflows\n\n> **Note**: BigQuery data is accessed through Metabase, a business intelligence tool that connects to BigQuery as a data source. The tools below execute queries and retrieve metadata through Metabase's API.\n\n## Core Workflows\n\n### 1. Run a Native SQL Query\nUse `METABASE_POST_API_DATASET` with type `native` to execute raw SQL queries against your BigQuery database.\n```\nTool: METABASE_POST_API_DATASET\nParameters:\n  - database (required): Metabase database ID (integer)\n  - type (required): \"native\" for SQL queries\n  - native (required): Object with \"query\" string\n    - query: Raw SQL string (e.g., \"SELECT * FROM users LIMIT 10\")\n    - template_tags: Parameterized query variables (optional)\n  - constraints: { \"max-results\": 1000 } (optional)\n```\n\n### 2. Run a Structured MBQL Query\nUse `METABASE_POST_API_DATASET` with type `query` for Metabase Query Language queries with built-in aggregation and filtering.\n```\nTool: METABASE_POST_API_DATASET\nParameters:\n  - database (required): Metabase database ID\n  - type (required): \"query\" for MBQL\n  - query (required): Object with:\n    - source-table: Table ID (integer)\n    - aggregation: e.g., [[\"count\"]] or [[\"sum\", [\"field\", 5, null]]]\n    - breakout: Group-by fields\n    - filter: Filter conditions\n    - limit: Max rows\n    - order-by: Sort fields\n```\n\n### 3. Get Query Metadata\nUse `METABASE_POST_API_DATASET_QUERY_METADATA` to retrieve metadata about databases, tables, and fields available for querying.\n```\nTool: METABASE_POST_API_DATASET_QUERY_METADATA\nParameters:\n  - database (required): Metabase database ID\n  - type (required): \"query\" or \"native\"\n  - query (required): Query object (e.g., {\"source-table\": 1})\n```\n\n### 4. Convert Query to Native SQL\nUse `METABASE_POST_API_DATASET_NATIVE` to convert an MBQL query into its native SQL representation.\n```\nTool: METABASE_POST_API_DATASET_NATIVE\nParameters:\n  - database (required): Metabase database ID\n  - type (required): \"native\"\n  - native (required): Object with \"query\" and optional \"template_tags\"\n  - parameters: Query parameter values (optional)\n```\n\n### 5. List Available Databases\nUse `METABASE_GET_API_DATABASE` to discover all database connections configured in Metabase.\n```\nTool: METABASE_GET_API_DATABASE\nDescription: Retrieves a list of all Database instances configured in Metabase.\nNote: Call RUBE_SEARCH_TOOLS to get the full schema for this tool.\n```\n\n### 6. Get Database Schema Metadata\nUse `METABASE_GET_API_DATABASE_ID_METADATA` to retrieve complete table and field information for a specific database.\n```\nTool: METABASE_GET_API_DATABASE_ID_METADATA\nDescription: Retrieves complete metadata for a specific database including\n  all tables and fields.\nNote: Call RUBE_SEARCH_TOOLS to get the full schema for this tool.\n```\n\n## Common Patterns\n\n- **Discover then query**: Use `METABASE_GET_API_DATABASE` to find database IDs, then `METABASE_GET_API_DATABASE_ID_METADATA` to explore tables and fields, then `METABASE_POST_API_DATASET` to run queries.\n- **SQL-first approach**: Use `METABASE_POST_API_DATASET` with `type: \"native\"` and write standard SQL queries for maximum flexibility.\n- **Parameterized queries**: Use `template_tags` in native queries for safe parameterization (e.g., `SELECT * FROM users WHERE id = {{user_id}}`).\n- **Schema exploration**: Use `METABASE_POST_API_DATASET_QUERY_METADATA` to understand table structures before building complex queries.\n- **Get parameter values**: Use `METABASE_POST_API_DATASET_PARAMETER_VALUES` to retrieve possible values for filter dropdowns.\n\n## Known Pitfalls\n\n- The `database` parameter is a Metabase-internal **integer ID**, not the BigQuery project or dataset name. Use `METABASE_GET_API_DATABASE` to find valid database IDs first.\n- `source-table` in MBQL queries is also a Metabase-internal integer, not the BigQuery table name. Discover table IDs via metadata tools.\n- Native SQL queries use BigQuery SQL dialect (Standard SQL). Ensure your syntax is BigQuery-compatible.\n- `max-results` in constraints defaults can limit returned rows. Set explicitly for large result sets.\n- Responses from `METABASE_POST_API_DATASET` contain results nested under `data` -- parse carefully as the structure may be deeply nested.\n- Metabase field IDs used in MBQL `aggregation`, `breakout`, and `filter` arrays must be integers obtained from metadata responses.\n\n## Quick Reference\n| Action | Tool | Key Parameters |\n|--------|------|----------------|\n| Run SQL query | `METABASE_POST_API_DATASET` | `database`, `type: \"native\"`, `native.query` |\n| Run MBQL query | `METABASE_POST_API_DATASET` | `database`, `type: \"query\"`, `query` |\n| Get query metadata | `METABASE_POST_API_DATASET_QUERY_METADATA` | `database`, `type`, `query` |\n| Convert to SQL | `METABASE_POST_API_DATASET_NATIVE` | `database`, `type`, `native` |\n| Get parameter values | `METABASE_POST_API_DATASET_PARAMETER_VALUES` | `parameter`, `field_ids` |\n| List databases | `METABASE_GET_API_DATABASE` | (see full schema via RUBE_SEARCH_TOOLS) |\n| Get database metadata | `METABASE_GET_API_DATABASE_ID_METADATA` | (see full schema via RUBE_SEARCH_TOOLS) |\n\n---\n*Powered by [Composio](https:\u002F\u002Fcomposio.dev)*\n","# Google BigQuery Automation via Rube MCP\n\nRun SQL queries, explore database schemas, and analyze datasets through the Metabase integration using Rube MCP (Composio).\n\n**Toolkit docs**: [composio.dev\u002Ftoolkits\u002Fgooglebigquery](https:\u002F\u002Fcomposio.dev\u002Ftoolkits\u002Fgooglebigquery)\n\n## Prerequisites\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `metabase`\n- A Metabase instance connected to your BigQuery data source\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `metabase`\n3. If connection is not ACTIVE, follow the returned auth link to complete setup\n4. Confirm connection status shows ACTIVE before running any workflows\n\n> **Note**: BigQuery data is accessed through Metabase, a business intelligence tool that connects to BigQuery as a data source. The tools below execute queries and retrieve metadata through Metabase's API.\n\n## Core Workflows\n\n### 1. Run a Native SQL Query\nUse `METABASE_POST_API_DATASET` with type `native` to execute raw SQL queries against your BigQuery database.\n```\nTool: METABASE_POST_API_DATASET\nParameters:\n  - database (required): Metabase database ID (integer)\n  - type (required): \"native\" for SQL queries\n  - native (required): Object with \"query\" string\n    - query: Raw SQL string (e.g., \"SELECT * FROM users LIMIT 10\")\n    - template_tags: Parameterized query variables (optional)\n  - constraints: { \"max-results\": 1000 } (optional)\n```\n\n### 2. Run a Structured MBQL Query\nUse `METABASE_POST_API_DATASET` with type `query` for Metabase Query Language queries with built-in aggregation and filtering.\n```\nTool: METABASE_POST_API_DATASET\nParameters:\n  - database (required): Metabase database ID\n  - type (required): \"query\" for MBQL\n  - query (required): Object with:\n    - source-table: Table ID (integer)\n    - aggregation: e.g., [[\"count\"]] or [[\"sum\", [\"field\", 5, null]]]\n    - breakout: Group-by fields\n    - filter: Filter conditions\n    - limit: Max rows\n    - order-by: Sort fields\n```\n\n### 3. Get Query Metadata\nUse `METABASE_POST_API_DATASET_QUERY_METADATA` to retrieve metadata about databases, tables, and fields available for querying.\n```\nTool: METABASE_POST_API_DATASET_QUERY_METADATA\nParameters:\n  - database (required): Metabase database ID\n  - type (required): \"query\" or \"native\"\n  - query (required): Query object (e.g., {\"source-table\": 1})\n```\n\n### 4. Convert Query to Native SQL\nUse `METABASE_POST_API_DATASET_NATIVE` to convert an MBQL query into its native SQL representation.\n```\nTool: METABASE_POST_API_DATASET_NATIVE\nParameters:\n  - database (required): Metabase database ID\n  - type (required): \"native\"\n  - native (required): Object with \"query\" and optional \"template_tags\"\n  - parameters: Query parameter values (optional)\n```\n\n### 5. List Available Databases\nUse `METABASE_GET_API_DATABASE` to discover all database connections configured in Metabase.\n```\nTool: METABASE_GET_API_DATABASE\nDescription: Retrieves a list of all Database instances configured in Metabase.\nNote: Call RUBE_SEARCH_TOOLS to get the full schema for this tool.\n```\n\n### 6. Get Database Schema Metadata\nUse `METABASE_GET_API_DATABASE_ID_METADATA` to retrieve complete table and field information for a specific database.\n```\nTool: METABASE_GET_API_DATABASE_ID_METADATA\nDescription: Retrieves complete metadata for a specific database including\n  all tables and fields.\nNote: Call RUBE_SEARCH_TOOLS to get the full schema for this tool.\n```\n\n## Common Patterns\n\n- **Discover then query**: Use `METABASE_GET_API_DATABASE` to find database IDs, then `METABASE_GET_API_DATABASE_ID_METADATA` to explore tables and fields, then `METABASE_POST_API_DATASET` to run queries.\n- **SQL-first approach**: Use `METABASE_POST_API_DATASET` with `type: \"native\"` and write standard SQL queries for maximum flexibility.\n- **Parameterized queries**: Use `template_tags` in native queries for safe parameterization (e.g., `SELECT * FROM users WHERE id = {{user_id}}`).\n- **Schema exploration**: Use `METABASE_POST_API_DATASET_QUERY_METADATA` to understand table structures before building complex queries.\n- **Get parameter values**: Use `METABASE_POST_API_DATASET_PARAMETER_VALUES` to retrieve possible values for filter dropdowns.\n\n## Known Pitfalls\n\n- The `database` parameter is a Metabase-internal **integer ID**, not the BigQuery project or dataset name. Use `METABASE_GET_API_DATABASE` to find valid database IDs first.\n- `source-table` in MBQL queries is also a Metabase-internal integer, not the BigQuery table name. Discover table IDs via metadata tools.\n- Native SQL queries use BigQuery SQL dialect (Standard SQL). Ensure your syntax is BigQuery-compatible.\n- `max-results` in constraints defaults can limit returned rows. Set explicitly for large result sets.\n- Responses from `METABASE_POST_API_DATASET` contain results nested under `data` -- parse carefully as the structure may be deeply nested.\n- Metabase field IDs used in MBQL `aggregation`, `breakout`, and `filter` arrays must be integers obtained from metadata responses.\n\n## Quick Reference\n| Action | Tool | Key Parameters |\n|--------|------|----------------|\n| Run SQL query | `METABASE_POST_API_DATASET` | `database`, `type: \"native\"`, `native.query` |\n| Run MBQL query | `METABASE_POST_API_DATASET` | `database`, `type: \"query\"`, `query` |\n| Get query metadata | `METABASE_POST_API_DATASET_QUERY_METADATA` | `database`, `type`, `query` |\n| Convert to SQL | `METABASE_POST_API_DATASET_NATIVE` | `database`, `type`, `native` |\n| Get parameter values | `METABASE_POST_API_DATASET_PARAMETER_VALUES` | `parameter`, `field_ids` |\n| List databases | `METABASE_GET_API_DATABASE` | (see full schema via RUBE_SEARCH_TOOLS) |\n| Get database metadata | `METABASE_GET_API_DATABASE_ID_METADATA` | (see full schema via RUBE_SEARCH_TOOLS) |\n\n---\n*Powered by [Composio](https:\u002F\u002Fcomposio.dev)*\n",{"name":5,"requires":52,"description":7},{"mcp":53},[54],"rube","main","2a76bf42ce5c860adf8d0f3fcf3f6804109ac65b","skills\u002Fgooglebigquery-automation",0,"https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fwiki","https:\u002F\u002Fgithub.com\u002Fonfire7777","trying to create something actually useful","2026-09-11 13:25:26",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add onfire7777\u002Funiversal-ai-skills-library --skill googlebigquery-automation",{"tool":70,"command":71},"bunx","bunx skills add onfire7777\u002Funiversal-ai-skills-library --skill googlebigquery-automation",{"tool":73,"command":74},"pnpm","pnpm dlx skills add onfire7777\u002Funiversal-ai-skills-library --skill googlebigquery-automation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fgooglebigquery-automation\u002FSKILL.md",true,[78],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},".openskills.json","REFERENCE","参考文档",264,"https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fgooglebigquery-automation\u002F.openskills.json",[85,101,110,120,141,157],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":98,"publishedAt":47},"01M6J7MPK8ZE9VQJR4KK6ZMZJQ","zyte-api-automation","Automate Zyte API tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzyte-api-automation\u002FSKILL.md",[91,92,93],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[27,99,100,30,38,32,33,37,39,40,42,44],"api","zyte api automation",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":108,"publishedAt":47},"01M6J7MK45K2ZZ0EWTP1N6SZ7F","zylvie-automation","Automate Zylvie tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzylvie-automation\u002FSKILL.md",[107],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[27,109,38,44,30,32,33,37,39,40,42],"zylvie automation",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":117,"publishedAt":47},"01M6J7MGDCVZ3YCXGEAPR5V3MS","zoominfo-automation","Automate Zoominfo tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzoominfo-automation\u002FSKILL.md",[116],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[118,119,27,37,33,40,32,44,30,42,38,39],"zoominfo","zoominfo automation",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":127,"publishedAt":47},"01M6J7MDK48N09B7C6H9TCPY9A","zoom-out","Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzoom-out\u002FSKILL.md",[126],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[128,129,130,131,132,133,134,135,136,137,138,139,140],"zoom out","zoom","perspective","code","re","you","with","understand","it","use","context","how","true",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":148,"publishedAt":47},"01M6J7MAD47Q9A55AK3EXS914H","zoho-mail-automation","Automate Zoho Mail tasks via Rube MCP (Composio): email sending, folders, labels, and mailbox management. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzoho-mail-automation\u002FSKILL.md",[147],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[149,150,151,152,27,153,42,44,38,40,154,30,32,155,33,156,37,39],"mail","zoho mail automation","zoho","zoho mail","email","labels","mailbox","management",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":167,"publishedAt":47},"01M6J7M76HTWPP8TRWWCDS42NB","zoho-invoice-automation","Automate Zoho Invoice tasks via Rube MCP (Composio): invoices, estimates, expenses, clients, and payment tracking. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fonfire7777\u002Funiversal-ai-skills-library\u002Fblob\u002Fmain\u002Fskills\u002Fzoho-invoice-automation\u002FSKILL.md",[163,164],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":165,"categoryName":166,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000040","财务",[168,27,151,169,38,32,30,170,171,172,33,173,174,37,39,40,42,44],"invoice","zoho invoice automation","invoices","expenses","clients","payment","tracking"]