{"name":"io.github.seatable/seatable","slug":"seatable","title":null,"description":"MCP server for SeaTable — read, write, search, link, and query data in your bases","url":"https://mcp.market/server/seatable","rating":null,"grade":"A","score":94,"certified":false,"status":"active","category":"search","tags":["search"],"presence":{"score":35,"stars":9,"forks":1,"downloads_week":97,"last_push_at":"2026-09-04T14:18:41.000Z","license":"NOASSERTION"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/seatable/seatable-mcp","website":null,"version":"1.6.4","remotes":[],"packages":[{"registryType":"npm","identifier":"@seatable/mcp-seatable","version":"1.6.4","transport":{"type":"stdio"},"environmentVariables":[{"description":"URL of your SeaTable server (e.g. https://cloud.seatable.io)","name":"SEATABLE_SERVER_URL"},{"description":"API token for a single SeaTable base","name":"SEATABLE_API_TOKEN"}]}],"tools":[{"name":"add_row","description":"Add a single row. For multiple rows, always use append_rows instead of calling add_row in a loop. Link and file/image columns cannot be set here — use link_rows and upload_file instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_select_options","description":"Add new options to a single-select or multi-select column. Use this before writing rows with option values that do not exist yet. Options that already exist are skipped, so this will not create duplicates.","write_action":false,"price_micros":0,"input_schema":null},{"name":"append_rows","description":"Batch insert rows. Rejects unknown columns. Link and file/image columns cannot be set here — use link_rows and upload_file instead. Note: the response may contain column keys instead of column names due to a SeaTable API limitation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_snapshot","description":"Create a snapshot of the current base. Requires at least one change since the last snapshot and at least 10 minutes since the last snapshot.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_rows","description":"Delete one or more rows from a table by their IDs.","write_action":true,"price_micros":0,"input_schema":null},{"name":"download_file","description":"Read the content of a file attached to a row in a file or image column. Use get_row first to see available files in the column, then pass the exact file_name to select a specific file. Returns JSON with: file_name, file_size (bytes), content, content_type, and download_link (only when content_type is \"binary_url\"). content_type values: - \"text\": file content returned as text (.txt, .csv, .md, .jso","write_action":false,"price_micros":0,"input_schema":null},{"name":"echo_args","description":"Debug tool that returns exactly what arguments the client sent","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_rows","description":"Find rows using a predicate DSL. Filtering is performed client-side.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_row","description":"Get a row by ID from a table","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_row_activities","description":"Get the change history of a specific row. Returns a list of activities showing who changed what and when, including old and new values. 25 activities per page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_schema","description":"Returns the normalized schema for the base","write_action":false,"price_micros":0,"input_schema":null},{"name":"link_rows","description":"Create links between rows via the dedicated links endpoint. This is the ONLY way to create links — link columns cannot be written via add_row or update_rows.","write_action":true,"price_micros":0,"input_schema":null},{"name":"list_bases","description":"List available SeaTable bases. Use the returned names as the \"base\" parameter in other tools.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_collaborators","description":"List users who have access to this base. Returns email (internal user ID) and display name. Use the email values when writing to collaborator columns. Call this once to resolve @auth.local addresses in collaborator columns before displaying them to the user.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_rows","description":"List rows from a table with pagination (defaults: page=1, page_size=100). Use find_rows for filtering/sorting or query_sql for SQL queries.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_tables","description":"List tables in the SeaTable base with their columns (name, type, key). Includes select options and link configuration where applicable.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ping_seatable","description":"Health check that verifies connectivity and auth to SeaTable","write_action":false,"price_micros":0,"input_schema":null},{"name":"query_sql","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_rows","description":"Search rows with a filter object","write_action":false,"price_micros":0,"input_schema":null},{"name":"unlink_rows","description":"Remove links between rows via the dedicated links endpoint. This is the ONLY way to remove links — link columns cannot be modified via update_rows.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_rows","description":"Batch update rows. Rejects unknown columns. Link and file/image columns cannot be modified here — use link_rows/unlink_rows and upload_file instead.","write_action":true,"price_micros":0,"input_schema":null},{"name":"upload_file","description":"Upload a file or image to a row. Accepts base64-encoded file data and attaches it to the specified file or image column. By default appends to existing files; set replace=true to overwrite.","write_action":true,"price_micros":0,"input_schema":null},{"name":"upsert_rows","description":"Batch upsert rows by matching on one or more key columns. If a match exists, update it; otherwise insert a new row. Rejects unknown columns. Link and file/image columns cannot be set here — use link_rows/unlink_rows and upload_file instead.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":94,"grade":"A","scanned_at":"2026-09-20T11:41:05.911Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:41:05.833Z","components":{"code":{"score":25,"max":25,"notes":["102 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 16 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@seatable/mcp-seatable","version":"1.6.4","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":10,"publishedAt":"2026-09-04T14:20:16.463Z","repositoryUrl":"git+https://github.com/seatable/seatable-mcp.git","weeklyDownloads":97}],"repo":{"found":true,"owner":"seatable","repo":"seatable-mcp","archived":false,"pushedAt":"2026-09-04T14:18:41Z","stars":9,"forks":1,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/55628275?v=4","ownerCreatedAt":"2019-09-21T14:24:27Z","license":"NOASSERTION"},"icon":{"url":"https://avatars.githubusercontent.com/u/55628275?v=4&s=128","source":"github"},"presence":{"stars":9,"forks":1,"downloadsWeek":97,"license":"NOASSERTION","lastPushAt":"2026-09-04T14:18:41.000Z","score":35}}}},"grade_history":[],"reviews":[]}