# Fix/gemini tool schema unsupported keys \(\#52670\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/ef4af8f92415f6f3082a2d373fadb5883f8adee1)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: ef4af8f92415f6f3082a2d373fadb5883f8adee1

Requested commit: ef4af8f92415f6f3082a2d373fadb5883f8adee1

Commit: ef4af8f92415f6f3082a2d373fadb5883f8adee1

Tree: d0666ed3ae120c07b84153776d137d51fdcb8565

Author: Om Chillure

Committer: GitHub

## Message

````
Fix/gemini tool schema unsupported keys (#52670)

### Summary

The Gemini API enforces strict validation on `function_declarations` and
rejects requests containing unsupported JSON Schema keywords such as
`additionalProperties`, `propertyNames`. This caused Write mode to fail
with "failed to stream completion" when tools with complex schemas were
used.

This PR strips these unsupported keywords from tool schemas before
sending them to the Gemini API in `adapt_to_json_schema_subset`.

### How to Review

- Check `crates/language_model/src/tool_schema.rs` — the
`adapt_to_json_schema_subset` function now removes
`additionalProperties` and `propertyNames` from schemas.
- Tests are added covering removal of these keys and nested schema
handling.
- To reproduce the original issue, send a tool schema containing
`propertyNames` or `additionalProperties` to the Gemini API — it returns
HTTP 400 `INVALID_ARGUMENT`

### How to Test

Run the unit tests:
```sh
cargo test -p language_model
```

OR manually reproduce this using ->

```
curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=YOUR_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"contents":[{"parts":[{"text":"test"}]}],"tools":[{"functionDeclarations":[{"name":"test","parameters":{"type":"OBJECT","properties":{"field":{"type":"OBJECT","propertyNames":{"pattern":"^[a-z]+$"},"additionalProperties":{"type":"STRING"}}}}}]}]}'
```


#### Closes #52430

- [x] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [ ] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Video 

[Screencast from 2026-03-29
08-32-18.webm](https://github.com/user-attachments/assets/a0069f0e-1f2b-45dc-85bf-f24aacb08599)


### Note : Reopens previous work from closed PR #52644 (fork was
deleted)


Release Notes:

- Fixed an issue where Gemini models would not work when using specific
MCP servers
````

## Parents

- [dbb8afe6764f07bf62272e38d2a7ba5b27e1946e](https://git.cafe/gitcafe/zed/commit/dbb8afe6764f07bf62272e38d2a7ba5b27e1946e?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/ef4af8f92415f6f3082a2d373fadb5883f8adee1?format=markdown)
